The Iterative Solver Template Library applies generic programming in C++ to the domain of iterative solvers of linear systems stemming from finite element discretizations. Those discretizations exhibit a lot of structure, e.g:
Our matrix and vector interface supports a block recursive structure. Each sparse matrix entry can itself be either a sparse or a small dense matrix.
The solvers use this recursive block structure via template meta programming at compile time.
ISTL consists of the matrix and vector API and the solvers which use the Preconditioners preconditioners.
Files | |
file | overlappingschwarz.hh |
Contains one level overlapping Schwarz preconditioners. | |
file | superlu.hh |
Classes for using SuperLU with ISTL matrices. | |
Modules | |
Sparse Matrix and Vector classes | |
Matrix and Vector classes that support a block recursive structure capable of representing the natural structure from Finite Element discretisations. | |
ISTL Communication | |
Provides classes for syncing distributed indexed data structures. | |
Iterative Solvers | |
Classes | |
class | Dune::ISTLAllocator |
Default allocator for ISTL. More... | |
class | Dune::ISTLError |
derive error class from the base class in common More... | |
class | Dune::OverlappingSchwarzInitializer< I, S > |
Initializer for SuperLU Matrices representing the subdomains. More... | |
struct | Dune::AdditiveSchwarzMode |
Tag that the tells the schwarz method to be additive. More... | |
struct | Dune::MultiplicativeSchwarzMode |
Tag that tells the Schwarz method to be multiplicative. More... | |
class | Dune::SeqOverlappingSchwarz< M, X, TM, TA > |
Sequential overlapping Schwarz preconditioner. More... | |
struct | Dune::SeqOverlappingSchwarzDomainSize< M > |
class | Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > |
SuperLu Solver. More... | |
Functions | |
Dune::SeqOverlappingSchwarz::SeqOverlappingSchwarz (const matrix_type &mat, const subdomain_vector &subDomains, field_type relaxationFactor=1) | |
Construct the overlapping Schwarz method. | |
virtual void | Dune::SeqOverlappingSchwarz::apply (X &v, const X &d) |
Apply the precondtioner. | |
Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::SuperLU (const Matrix &mat, bool verbose=false) | |
Constructor. | |
Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::SuperLU () | |
Empty default constructor. | |
void | Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::setMatrix (const Matrix &mat) |
Initialize data from given matrix. | |
void | Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::apply (domain_type &x, range_type &b, InverseOperatorResult &res) |
void | Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::apply (T *x, T *b) |
Apply SuperLu to C arrays. |
void Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::apply | ( | domain_type & | x, | |
range_type & | b, | |||
InverseOperatorResult & | res | |||
) | [inline, 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. |
void Dune::SeqOverlappingSchwarz< M, X, TM, TA >::apply | ( | X & | v, | |
const X & | d | |||
) | [inline, virtual, inherited] |
Apply the precondtioner.
Apply one step of the preconditioner to the system A(v)=d.
On entry v=0 and d=b-A(x) (although this might not be computed in that way. On exit v contains the update, i.e one step computes where
is the approximate inverse of the operator
characterizing the preconditioner.
[out] | v | The update to be computed |
d | The current defect. |
Implements Dune::Preconditioner< X, X >.
Dune::SeqOverlappingSchwarz< M, X, TM, TA >::SeqOverlappingSchwarz | ( | const matrix_type & | mat, | |
const subdomain_vector & | subDomains, | |||
field_type | relaxationFactor = 1 | |||
) | [inline, inherited] |
Construct the overlapping Schwarz method.
mat | The matrix to precondition. | |
subdomains | Array of sets of rowindices belonging to an overlapping subdomain |
Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::SuperLU | ( | ) | [inline, inherited] |
Empty default constructor.
Use setMatrix to tell SuperLU for what matrix it solves.
Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::SuperLU | ( | const Matrix & | mat, | |
bool | verbose = false | |||
) | [inline, explicit, inherited] |
Constructor.
mat | The matrix of the system to solve. | |
verbose | If true some statistics are printed. |