dune-istl
2.2.0
|
SuperLu Solver. More...
#include <dune/istl/superlu.hh>
Public Types | |
typedef Dune::BCRSMatrix < FieldMatrix< T, n, m >, A > | Matrix |
typedef Dune::SuperLUMatrix < Matrix > | SuperLUMatrix |
typedef Dune::BlockVector < FieldVector< T, m > , typename A::template rebind < FieldVector< T, m > >::other > | domain_type |
The type of the domain of the solver. | |
typedef Dune::BlockVector < FieldVector< T, n > , typename A::template rebind < FieldVector< T, n > >::other > | range_type |
The type of the range of the solver. | |
typedef BlockVector < FieldVector< T, m > , A::template rebind < FieldVector< T, m > >::other > ::field_type | field_type |
The field type of the operator. | |
Public Member Functions | |
SuperLU (const Matrix &mat, bool verbose=false) | |
Constructs the SuperLU solver. | |
SuperLU () | |
Empty default constructor. | |
~SuperLU () | |
void | apply (domain_type &x, range_type &b, InverseOperatorResult &res) |
void | apply (domain_type &x, range_type &b, double reduction, InverseOperatorResult &res) |
void | apply (T *x, T *b) |
Apply SuperLu to C arrays. | |
void | setMatrix (const Matrix &mat) |
Initialize data from given matrix. | |
SuperLUMatrix::size_type | nnz () const |
template<class S > | |
void | setSubMatrix (const Matrix &mat, const S &rowIndexSet) |
void | setVerbosity (bool v) |
void | free () |
free allocated space. | |
virtual void | apply (BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > &x, BlockVector< FieldVector< T, n >, A::template rebind< FieldVector< T, n > >::other > &b, InverseOperatorResult &res)=0 |
Apply inverse operator,. | |
virtual void | apply (BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > &x, BlockVector< FieldVector< T, n >, A::template rebind< FieldVector< T, n > >::other > &b, double reduction, InverseOperatorResult &res)=0 |
apply inverse operator, with given convergence criteria. | |
Protected Types | |
enum | |
Protected Member Functions | |
void | printHeader (std::ostream &s) const |
helper function for printing header of solver output | |
void | printOutput (std::ostream &s, const double iter, const DataType &norm, const DataType &norm_old) const |
helper function for printing solver output | |
void | printOutput (std::ostream &s, const double iter, const DataType &norm) const |
helper function for printing solver output | |
Friends | |
class | std::mem_fun_ref_t< void, SuperLU > |
class | SeqOverlappingSchwarz |
class | SeqOverlappingSchwarzAssembler< SuperLU< Matrix > > |
SuperLu Solver.
Uses the well known SuperLU package to solve the system.
SuperLU supports single and double precision floating point and complex numbers. Unfortunately these cannot be used at the same time. Therfore users must set SUPERLU_NTYPE (0: float, 1: double, 2: std::complex<float>, 3: std::complex<double>) if the numeric type should be different from double.
typedef Dune::BlockVector< FieldVector<T,m>, typename A::template rebind<FieldVector<T,m> >::other> Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::domain_type |
The type of the domain of the solver.
typedef BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > ::field_type Dune::InverseOperator< BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > , BlockVector< FieldVector< T, n >, A::template rebind< FieldVector< T, n > >::other > >::field_type [inherited] |
The field type of the operator.
typedef Dune::BCRSMatrix<FieldMatrix<T,n,m>,A> Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::Matrix |
typedef Dune::BlockVector< FieldVector<T,n>, typename A::template rebind<FieldVector<T,n> >::other> Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::range_type |
The type of the range of the solver.
typedef Dune::SuperLUMatrix<Matrix> Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::SuperLUMatrix |
anonymous enum [protected, inherited] |
virtual void Dune::InverseOperator< BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > , BlockVector< FieldVector< T, n >, A::template rebind< FieldVector< T, n > >::other > >::apply | ( | BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > & | x, |
BlockVector< FieldVector< T, n >, A::template rebind< FieldVector< T, n > >::other > & | b, | ||
InverseOperatorResult & | res | ||
) | [pure virtual, inherited] |
Apply inverse operator,.
x | The left hand side to store the result in. |
b | The right hand side |
res | Object to store the statistics about applying the operator. |
virtual void Dune::InverseOperator< BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > , BlockVector< FieldVector< T, n >, A::template rebind< FieldVector< T, n > >::other > >::apply | ( | BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > & | x, |
BlockVector< FieldVector< T, n >, A::template rebind< FieldVector< T, n > >::other > & | b, | ||
double | reduction, | ||
InverseOperatorResult & | res | ||
) | [pure virtual, inherited] |
apply inverse operator, with given convergence criteria.
x | The left hand side to store the result in. |
b | The right hand side |
reduction | The minimum defect reduction to achieve. |
res | Object to store the statistics about applying the operator. |
void Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::apply | ( | domain_type & | x, |
range_type & | b, | ||
double | reduction, | ||
InverseOperatorResult & | res | ||
) | [inline] |
apply inverse operator, with given convergence criteria.
x | The left hand side to store the result in. |
b | The right hand side |
reduction | The minimum defect reduction to achieve. |
res | Object to store the statistics about applying the operator. |
SuperLUMatrix::size_type Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::nnz | ( | ) | const [inline] |
References mat.
void Dune::InverseOperator< BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > , BlockVector< FieldVector< T, n >, A::template rebind< FieldVector< T, n > >::other > >::printHeader | ( | std::ostream & | s | ) | const [inline, protected, inherited] |
helper function for printing header of solver output
void Dune::InverseOperator< BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > , BlockVector< FieldVector< T, n >, A::template rebind< FieldVector< T, n > >::other > >::printOutput | ( | std::ostream & | s, |
const double | iter, | ||
const DataType & | norm, | ||
const DataType & | norm_old | ||
) | const [inline, protected, inherited] |
helper function for printing solver output
void Dune::InverseOperator< BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > , BlockVector< FieldVector< T, n >, A::template rebind< FieldVector< T, n > >::other > >::printOutput | ( | std::ostream & | s, |
const double | iter, | ||
const DataType & | norm | ||
) | const [inline, protected, inherited] |
helper function for printing solver output
friend class SeqOverlappingSchwarz [friend] |
friend class SeqOverlappingSchwarzAssembler< SuperLU< Matrix > > [friend] |
friend class std::mem_fun_ref_t< void, SuperLU > [friend] |