Iterative Solvers supporting block recursive matrix and vector classes at compile time.
More...
Files |
file | superlu.hh |
| Classes for using SuperLU with ISTL matrices.
|
Functions |
template<class S > |
std::size_t | Dune::ILUSubdomainSolver< M, X, Y >::copyToLocalMatrix (const M &A, S &rowset) |
| Copy the local part of the global matrix to ILU.
|
template<class S > |
void | Dune::ILU0SubdomainSolver< M, X, Y >::setSubMatrix (const M &A, S &rowset) |
| Set the data of the local problem.
|
template<class S > |
void | Dune::ILUNSubdomainSolver< M, X, Y >::setSubMatrix (const M &A, S &rowset) |
| Set the data of the local problem.
|
| Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::~SuperLU () |
void | Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::free () |
| free allocated space.
|
| Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::SuperLU (const Matrix &mat, bool verbose=false) |
| Constructs the SuperLU solver.
|
| Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::SuperLU () |
| Empty default constructor.
|
void | Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::setVerbosity (bool v) |
void | Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::setMatrix (const Matrix &mat) |
| Initialize data from given matrix.
|
template<class S > |
void | Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::setSubMatrix (const Matrix &mat, const S &rowIndexSet) |
void | Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::apply (domain_type &x, range_type &b, InverseOperatorResult &res) |
| Apply inverse operator,.
|
void | Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::apply (T *x, T *b) |
| Apply SuperLu to C arrays.
|
Detailed Description
Iterative Solvers supporting block recursive matrix and vector classes at compile time.
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:
-
Certain discretizations for systems of PDEs or higher order methods result in matrices where individual entries are replaced by small blocks, say of size
or
. Dense blocks of different sizes e.g. arise in
Discontinuous Galerkin discretization methods. It is straightforward and efficient to treat these small dense blocks as fully coupled and solve them with direct methods within the iterative method.
-
Equation-wise ordering for systems results in matrices having an
block structure where
corresponds to the number of variables in the PDE and the blocks themselves are large and sparse. As an example we mention the Stokes system.
-
Other discretisation, e.~g. those of reaction/diffusion systems, produce sparse matrices whose blocks are sparse matrices of small dense blocks,
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.
Function Documentation
template<typename T , typename A , int n, int m>
template<typename T , typename A , int n, int m>
void Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::apply |
( |
T * |
x, |
|
|
T * |
b |
|
) |
| |
template<class M , class X , class Y >
template<class S >
Copy the local part of the global matrix to ILU.
- Parameters:
-
A | The global matrix. |
rowset | The global indices of the local problem. |
References col.
template<typename T , typename A , int n, int m>
void Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::free |
( |
| ) |
|
free allocated space.
- Warning:
- later calling apply will result in an error.
References mat.
template<typename T , typename A , int n, int m>
template<class M , class X , class Y >
template<class S >
Set the data of the local problem.
- Parameters:
-
A | The global matrix. |
rowset | The global indices of the local problem. |
- Template Parameters:
-
S | The type of the set with the indices. |
References Dune::bilu0_decomposition().
template<class M , class X , class Y >
template<class S >
Set the data of the local problem.
- Parameters:
-
A | The global matrix. |
rowset | The global indices of the local problem. |
- Template Parameters:
-
S | The type of the set with the indices. |
References Dune::bilu_decomposition().
template<typename T , typename A , int n, int m>
template<class S >
void Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::setSubMatrix |
( |
const Matrix & |
mat, |
|
|
const S & |
rowIndexSet |
|
) |
| |
template<typename T , typename A , int n, int m>
void Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::setVerbosity |
( |
bool |
v | ) |
|
template<typename T , typename A , int n, int m>
Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::SuperLU |
( |
const Matrix & |
mat, |
|
|
bool |
verbose = false |
|
) |
| |
|
explicit |
Constructs the SuperLU solver.
During the construction the matrix will be decomposed. That means that in each apply call forward and backward substitutions take place (and no decomposition).
- Parameters:
-
mat | The matrix of the system to solve. |
verbose | If true some statistics are printed. |
template<typename T , typename A , int n, int m>
Empty default constructor.
Use setMatrix to tell SuperLU for what matrix it solves.
template<typename T , typename A , int n, int m>
Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::~SuperLU |
( |
| ) |
|