dune-istl  2.7.1
About: dune-istl - DUNE (Distributed and Unified Numerics Environment) is a modular toolbox for solving partial differential equations (PDEs) with grid-based methods: DUNE Iterative Solver Template Library.
  Fossies Dox: dune-istl-2.7.1.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

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

Modules

 Iterative Solvers
 
 Communication Interface
 
 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.
 

Classes

class  Dune::ILUSubdomainSolver< M, X, Y >
 base class encapsulating common algorithms of ILU0SubdomainSolver and ILUNSubdomainSolver. More...
 
class  Dune::ILU0SubdomainSolver< M, X, Y >
 Exact subdomain solver using ILU(p) with appropriate p. More...
 
class  Dune::ILUNSubdomainSolver< M, X, Y >
 
class  Dune::ISTLError
 derive error class from the base class in common More...
 
class  Dune::BCRSMatrixError
 Error specific to BCRSMatrix. More...
 
class  Dune::ImplicitModeOverflowExhausted
 The overflow error used during implicit BCRSMatrix construction was exhausted. More...
 
class  Dune::SolverAbort
 Thrown when a solver aborts due to some problem. More...
 

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. More...
 
template<class S >
void Dune::ILU0SubdomainSolver< M, X, Y >::setSubMatrix (const M &A, S &rowset)
 Set the data of the local problem. More...
 
template<class S >
void Dune::ILUNSubdomainSolver< M, X, Y >::setSubMatrix (const M &A, S &rowset)
 Set the data of the local problem. More...
 

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

◆ copyToLocalMatrix()

template<class M , class X , class Y >
template<class S >
std::size_t Dune::ILUSubdomainSolver< M, X, Y >::copyToLocalMatrix ( const M &  A,
S &  rowset 
)
protected

Copy the local part of the global matrix to ILU.

Parameters
AThe global matrix.
rowsetThe global indices of the local problem.

Definition at line 148 of file ilusubdomainsolver.hh.

References A, and col.

◆ setSubMatrix() [1/2]

template<class M , class X , class Y >
template<class S >
void Dune::ILU0SubdomainSolver< M, X, Y >::setSubMatrix ( const M &  A,
S &  rowset 
)

Set the data of the local problem.

Parameters
AThe global matrix.
rowsetThe global indices of the local problem.
Template Parameters
SThe type of the set with the indices.

Definition at line 218 of file ilusubdomainsolver.hh.

References A, and Dune::bilu0_decomposition().

◆ setSubMatrix() [2/2]

template<class M , class X , class Y >
template<class S >
void Dune::ILUNSubdomainSolver< M, X, Y >::setSubMatrix ( const M &  A,
S &  rowset 
)

Set the data of the local problem.

Parameters
AThe global matrix.
rowsetThe global indices of the local problem.
Template Parameters
SThe type of the set with the indices.

Definition at line 226 of file ilusubdomainsolver.hh.

References A, and Dune::bilu_decomposition().