Iterative Solvers Template Library (ISTL)

Iterative Solvers supporting block recursive matrix and vector classes at compile time. More...

Collaboration diagram for Iterative Solvers Template Library (ISTL):

Classes

class  Dune::ISTLAllocator
 Default allocator for ISTL. More...
class  Dune::ISTLError
 derive error class from the base class in common More...
class  Dune::SuperLU< Matrix >
class  Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >
 SuperLu Solver. More...

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

Files

file  superlu.hh
 

Classes for using SuperLU with ISTL matrices.


Functions

 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)
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:

  1. Certain discretizations for systems of PDEs or higher order methods result in matrices where individual entries are replaced by small blocks, say of size $2\times 2$ or $4\times 4$. Dense blocks of different sizes e.g. arise in $hp$ 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.
  2. Equation-wise ordering for systems results in matrices having an $n\times n$ block structure where $n$ 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.
  3. 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>
void Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::apply ( T *  x,
T *  b 
) [inline, inherited]

Apply SuperLu to C arrays.

References Dune::Matrix< T, A >::M(), mat, and Dune::Matrix< T, A >::N().

template<typename T , typename A , int n, int m>
void Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::apply ( domain_type x,
range_type b,
InverseOperatorResult res 
) [inline, inherited]

Apply inverse operator,.

Warning:
Note: right hand side b may be overwritten!
Parameters:
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.

References Dune::Matrix< T, A >::M(), mat, and Dune::Matrix< T, A >::N().

template<typename T , typename A , int n, int m>
void Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::free (  )  [inline, inherited]

free allocated space.

Warning:
later calling apply will result in an error.

References mat.

template<typename T , typename A , int n, int m>
void Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::setMatrix ( const Matrix mat  )  [inline, inherited]

Initialize data from given matrix.

References Dune::Matrix< T, A >::M(), mat, and Dune::Matrix< T, A >::N().

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 
) [inline, inherited]
template<typename T , typename A , int n, int m>
void Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::setVerbosity ( bool  v  )  [inline, inherited]
template<typename T , typename A , int n, int m>
Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::SuperLU (  )  [inline, inherited]

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 ( const Matrix mat,
bool  verbose = false 
) [inline, explicit, inherited]

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>
Dune::SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > >::~SuperLU (  )  [inline, inherited]
Generated on Sat Apr 24 11:13:47 2010 for dune-istl by  doxygen 1.6.3