dune-istl
2.5.0
|
SuperLu Solver. More...
#include <dune/istl/superlu.hh>
Public Types | |
typedef Dune::BCRSMatrix< FieldMatrix< T, n, m >, A > | Matrix |
The matrix type. More... | |
typedef Dune::BCRSMatrix< FieldMatrix< T, n, m >, A > | matrix_type |
typedef Dune::SuperLUMatrix< Matrix > | SuperLUMatrix |
The corresponding SuperLU Matrix type. More... | |
typedef SuperMatrixInitializer< BCRSMatrix< FieldMatrix< T, n, m >, A > > | MatrixInitializer |
Type of an associated initializer class. More... | |
typedef Dune::BlockVector< FieldVector< T, m >, typename A::template rebind< FieldVector< T, m > >::other > | domain_type |
The type of the domain of the solver. More... | |
typedef Dune::BlockVector< FieldVector< T, n >, typename A::template rebind< FieldVector< T, n > >::other > | range_type |
The type of the range of the solver. More... | |
typedef BlockVector< FieldVector< T, m >, A::template rebind< FieldVector< T, m > >::other > ::field_type | field_type |
The field type of the operator. More... | |
Public Member Functions | |
SuperLU (const Matrix &mat, bool verbose=false, bool reusevector=true) | |
Constructs the SuperLU solver. More... | |
SuperLU () | |
Empty default constructor. More... | |
~SuperLU () | |
void | apply (domain_type &x, range_type &b, InverseOperatorResult &res) |
Apply inverse operator,. More... | |
void | apply (domain_type &x, range_type &b, double reduction, InverseOperatorResult &res) |
apply inverse operator, with given convergence criteria. More... | |
void | apply (T *x, T *b) |
Apply SuperLu to C arrays. More... | |
void | setMatrix (const Matrix &mat) |
Initialize data from given matrix. More... | |
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. More... | |
const char * | name () |
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,. More... | |
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. More... | |
Protected Types | |
enum | |
Protected Member Functions | |
void | printHeader (std::ostream &s) const |
helper function for printing header of solver output More... | |
void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm, const DataType &norm_old) const |
helper function for printing solver output More... | |
void | printOutput (std::ostream &s, const CountType &iter, const DataType &norm) const |
helper function for printing solver output More... | |
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.
|
inherited |
The field type of the operator.
typedef Dune::BCRSMatrix<FieldMatrix<T,n,m>,A> Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::Matrix |
The matrix type.
typedef Dune::BCRSMatrix<FieldMatrix<T,n,m>,A> Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::matrix_type |
typedef SuperMatrixInitializer<BCRSMatrix<FieldMatrix<T,n,m>,A> > Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::MatrixInitializer |
Type of an associated initializer class.
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 |
|
protectedinherited |
|
pure virtualinherited |
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. |
SolverAbort | When the solver detects a problem and cannot continue |
|
pure virtualinherited |
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. |
SolverAbort | When the solver detects a problem and cannot continue |
|
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. |
SolverAbort | When the solver detects a problem and cannot continue |
|
inline |
|
inline |
|
inlineprotectedinherited |
helper function for printing header of solver output
|
inlineprotectedinherited |
helper function for printing solver output
|
inlineprotectedinherited |
helper function for printing solver output