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) |
| Apply inverse operator,.
|
void | apply (domain_type &x, range_type &b, double reduction, InverseOperatorResult &res) |
| apply inverse operator, with given convergence criteria.
|
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 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
|
template<typename T, typename A, int n, int m>
class Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >
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.