dune-istl  2.2.1
Modules | Files | Namespaces | Classes | Functions
Preconditioners
Iterative Solvers

Modules

 Parallel Algebraic Multigrid
 A Parallel Algebraic Multigrid based on Agglomeration.

Files

file  overlappingschwarz.hh
 Contains one level overlapping Schwarz preconditioners.
file  preconditioners.hh
 Define general preconditioner interface.

Namespaces

namespace  Dune::Amg

Classes

class  Dune::OverlappingSchwarzInitializer< I, S, D >
 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...
struct  Dune::SymmetricMultiplicativeSchwarzMode
 Tag that tells the Schwarz method to be multiplicative and symmetric. More...
class  Dune::DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y >
struct  Dune::OverlappingAssigner< T >
class  Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >
struct  Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >
class  Dune::OverlappingAssignerILUBase< M, X, Y >
class  Dune::OverlappingAssigner< ILU0SubdomainSolver< M, X, Y > >
class  Dune::OverlappingAssigner< ILUNSubdomainSolver< M, X, Y > >
struct  Dune::AdditiveAdder< S, T >
struct  Dune::AdditiveAdder< S, BlockVector< FieldVector< T, n >, A > >
struct  Dune::MultiplicativeAdder< S, T >
struct  Dune::MultiplicativeAdder< S, BlockVector< FieldVector< T, n >, A > >
struct  Dune::AdderSelector< T, X, S >
 template meta program for choosing how to add the correction. More...
struct  Dune::AdderSelector< AdditiveSchwarzMode, X, S >
struct  Dune::AdderSelector< MultiplicativeSchwarzMode, X, S >
struct  Dune::AdderSelector< SymmetricMultiplicativeSchwarzMode, X, S >
struct  Dune::IteratorDirectionSelector< T1, T2, forward >
 Helper template meta program for application of overlapping schwarz. More...
struct  Dune::IteratorDirectionSelector< T1, T2, false >
struct  Dune::SeqOverlappingSchwarzApplier< T >
 Helper template meta program for application of overlapping schwarz. More...
struct  Dune::SeqOverlappingSchwarzApplier< SeqOverlappingSchwarz< M, X, SymmetricMultiplicativeSchwarzMode, TD, TA > >
struct  Dune::SeqOverlappingSchwarzAssembler< T >
struct  Dune::SeqOverlappingSchwarzAssembler< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >
struct  Dune::SeqOverlappingSchwarzAssembler< SuperLU< T > >
struct  Dune::SeqOverlappingSchwarzAssemblerILUBase< M, X, Y >
struct  Dune::SeqOverlappingSchwarzAssembler< ILU0SubdomainSolver< M, X, Y > >
struct  Dune::SeqOverlappingSchwarzAssembler< ILUNSubdomainSolver< M, X, Y > >
class  Dune::SeqOverlappingSchwarz< M, X, TM, TD, TA >
 Sequential overlapping Schwarz preconditioner. More...
struct  Dune::SeqOverlappingSchwarzDomainSize< M >
struct  Dune::SeqOverlappingSchwarzDomainSize< BCRSMatrix< FieldMatrix< T, n, m >, A > >
class  Dune::Preconditioner< X, Y >
 Base class for matrix free definition of preconditioners. More...
class  Dune::SeqSSOR< M, X, Y, l >
 Sequential SSOR preconditioner. More...
class  Dune::SeqSOR< M, X, Y, l >
 Sequential SOR preconditioner. More...
class  Dune::SeqGS< M, X, Y, l >
 Sequential Gauss Seidel preconditioner. More...
class  Dune::SeqJac< M, X, Y, l >
 The sequential jacobian preconditioner. More...
class  Dune::SeqILU0< M, X, Y, l >
 Sequential ILU0 preconditioner. More...
class  Dune::SeqILUn< M, X, Y, l >
 Sequential ILU(n) preconditioner. More...
class  Dune::Richardson< X, Y >
 Richardson preconditioner. More...
class  Dune::ParSSOR< M, X, Y, C >
 A parallel SSOR preconditioner. More...
class  Dune::BlockPreconditioner< X, Y, C, T >
 Block parallel preconditioner. More...

Functions

 Dune::OverlappingSchwarzInitializer< I, S, D >::OverlappingSchwarzInitializer (InitializerList &il, const IndexSet &indices, const subdomain_vector &domains)
void Dune::OverlappingSchwarzInitializer< I, S, D >::addRowNnz (const Iter &row)
void Dune::OverlappingSchwarzInitializer< I, S, D >::allocate ()
void Dune::OverlappingSchwarzInitializer< I, S, D >::countEntries (const Iter &row, const CIter &col) const
void Dune::OverlappingSchwarzInitializer< I, S, D >::calcColstart () const
void Dune::OverlappingSchwarzInitializer< I, S, D >::copyValue (const Iter &row, const CIter &col) const
void Dune::OverlappingSchwarzInitializer< I, S, D >::createMatrix () const
 Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::IndexMap ()
void Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::insert (size_type grow)
const_iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::find (size_type grow) const
iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::find (size_type grow)
const_iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::end () const
iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::end ()
const_iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::begin () const
iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::begin ()
 Dune::SeqOverlappingSchwarz< M, X, TM, TD, TA >::SeqOverlappingSchwarz (const matrix_type &mat, const rowtodomain_vector &rowToDomain, field_type relaxationFactor=1, bool onTheFly_=true)
 Dune::SeqOverlappingSchwarz< M, X, TM, TD, TA >::SeqOverlappingSchwarz (const matrix_type &mat, const subdomain_vector &subDomains, field_type relaxationFactor=1, bool onTheFly_=true)
 Construct the overlapping Schwarz method.
template<class RowToDomain , class Solvers , class SubDomains >
static std::size_t Dune::SeqOverlappingSchwarzAssembler< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::assembleLocalProblems (const RowToDomain &rowToDomain, const matrix_type &mat, Solvers &solvers, const SubDomains &domains, bool onTheFly)
template<class RowToDomain , class Solvers , class SubDomains >
static std::size_t Dune::SeqOverlappingSchwarzAssembler< SuperLU< T > >::assembleLocalProblems (const RowToDomain &rowToDomain, const matrix_type &mat, Solvers &solvers, const SubDomains &domains, bool onTheFly)
template<class RowToDomain , class Solvers , class SubDomains >
static std::size_t Dune::SeqOverlappingSchwarzAssemblerILUBase< M, X, Y >::assembleLocalProblems (const RowToDomain &rowToDomain, const matrix_type &mat, Solvers &solvers, const SubDomains &domains, bool onTheFly)
virtual void Dune::SeqOverlappingSchwarz< M, X, TM, TD, TA >::apply (X &v, const X &d)
 Apply the precondtioner.
 Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::OverlappingAssigner (std::size_t maxlength, const BCRSMatrix< FieldMatrix< K, n, n >, Al > &mat_, const X &b_, Y &x_)
 Constructor.
void Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::deallocate ()
 Deallocates memory of the local vector.
void Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::resetIndexForNextDomain ()
 Resets the local index to zero.
DynamicVector< K > & Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::lhs ()
 Get the local left hand side.
DynamicVector< K > & Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::rhs ()
 Get the local right hand side.
void Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::relaxResult (field_type relax)
 relax the result.
void Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::operator() (const size_type &domainIndex)
 calculate one entry of the local defect.
void Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::assignResult (block_type &res)
 Assigns the block to the current local index. At the same time the local defect is calculated for the index and stored in the rhs. Afterwards the is incremented for the next block.
 Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::OverlappingAssigner (std::size_t maxlength, const BCRSMatrix< FieldMatrix< T, n, m >, A > &mat, const range_type &b, range_type &x)
 Constructor.
void Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::deallocate ()
 Deallocates memory of the local vector.
void Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::operator() (const size_type &domain)
 calculate one entry of the local defect.
void Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::relaxResult (field_type relax)
 relax the result.
void Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::assignResult (block_type &res)
 Assigns the block to the current local index. At the same time the local defect is calculated for the index and stored in the rhs. Afterwards the is incremented for the next block.
void Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::resetIndexForNextDomain ()
field_type * Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::lhs ()
 Get the local left hand side.
field_type * Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::rhs ()
 Get the local right hand side.
 Dune::OverlappingAssignerILUBase< M, X, Y >::OverlappingAssignerILUBase (std::size_t maxlength, const M &mat, const Y &b, X &x)
 Constructor.
void Dune::OverlappingAssignerILUBase< M, X, Y >::deallocate ()
 Deallocates memory of the local vector.
void Dune::OverlappingAssignerILUBase< M, X, Y >::operator() (const size_type &domain)
 calculate one entry of the local defect.
void Dune::OverlappingAssignerILUBase< M, X, Y >::relaxResult (field_type relax)
 relax the result.
void Dune::OverlappingAssignerILUBase< M, X, Y >::assignResult (block_type &res)
 Assigns the block to the current local index. At the same time the local defect is calculated for the index and stored in the rhs. Afterwards the is incremented for the next block.
X & Dune::OverlappingAssignerILUBase< M, X, Y >::lhs ()
 Get the local left hand side.
Y & Dune::OverlappingAssignerILUBase< M, X, Y >::rhs ()
 Get the local right hand side.
void Dune::OverlappingAssignerILUBase< M, X, Y >::resetIndexForNextDomain ()
 Resets the local index to zero.
 Dune::AdditiveAdder< S, BlockVector< FieldVector< T, n >, A > >::AdditiveAdder (BlockVector< FieldVector< T, n >, A > &v, BlockVector< FieldVector< T, n >, A > &x, OverlappingAssigner< S > &assigner, const T &relax_)
void Dune::AdditiveAdder< S, BlockVector< FieldVector< T, n >, A > >::operator() (const size_type &domain)
void Dune::AdditiveAdder< S, BlockVector< FieldVector< T, n >, A > >::axpy ()
 Dune::MultiplicativeAdder< S, BlockVector< FieldVector< T, n >, A > >::MultiplicativeAdder (BlockVector< FieldVector< T, n >, A > &v, BlockVector< FieldVector< T, n >, A > &x, OverlappingAssigner< S > &assigner_, const T &relax_)
void Dune::MultiplicativeAdder< S, BlockVector< FieldVector< T, n >, A > >::operator() (const size_type &domain)
void Dune::MultiplicativeAdder< S, BlockVector< FieldVector< T, n >, A > >::axpy ()

Detailed Description

All of our Krylow solvers are preconditioned versions. There are sequential preconditioners (e,g. SeqJacobi, SeqSOR, SeqSSOR) as well as parallel preconditioners (e.g. AMG, BlockPreconditioner) available for plugging them into the solvers together with matching ScalarProducts.

Some of the available perconditioners (e.g. SeqJacobi, SeqSOR, SeqSSOR)) may be given an aditional int as a template parameter, the block recursion level. These preconditioners can be used on blockrecursive matrices with an arbitrary hierarchy depths (eg. BCRSMatrix<BCRSMatrix<FieldMatrix,n,m> > >. Given a block recursion level $k$ those preconditioners work as normal on the offdiagonal blocks, treating them as traditional matrix entries. For the diagonal values a special procedure applies: If $k>1$ the diagonal is treated as a matrix itself and the preconditioner is applied recursively on the matrix representing the diagonal value $D=A_{ii}$ with block level $k-1$. For the case that $k=1$ the diagonal is treated as a matrix entry resulting in a linear solve or an identity operation depending on the algorithm.

Function Documentation

template<typename S , typename T , typename A , int n>
Dune::AdditiveAdder< S, BlockVector< FieldVector< T, n >, A > >::AdditiveAdder ( BlockVector< FieldVector< T, n >, A > &  v,
BlockVector< FieldVector< T, n >, A > &  x,
OverlappingAssigner< S > &  assigner,
const T &  relax_ 
)
template<class I , class S , class D >
void Dune::OverlappingSchwarzInitializer< I, S, D >::addRowNnz ( const Iter row)
template<class I , class S , class D >
void Dune::OverlappingSchwarzInitializer< I, S, D >::allocate ( )
template<class M , class X, class TM , class TD , class TA >
void Dune::SeqOverlappingSchwarz< M, X, TM, TD, TA >::apply ( X &  v,
const X &  d 
)
virtual

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 $ v = M^{-1} d $ where $ M $ is the approximate inverse of the operator $ A $ characterizing the preconditioner.

Parameters
[out]vThe update to be computed
dThe current defect.

Implements Dune::Preconditioner< X, X >.

References Dune::SeqOverlappingSchwarzApplier< T >::apply().

template<class K , int n, class Al , class X , class Y >
template<class RowToDomain , class Solvers , class SubDomains >
std::size_t Dune::SeqOverlappingSchwarzAssembler< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::assembleLocalProblems ( const RowToDomain &  rowToDomain,
const matrix_type mat,
Solvers &  solvers,
const SubDomains &  domains,
bool  onTheFly 
)
static
template<class T >
template<class RowToDomain , class Solvers , class SubDomains >
std::size_t Dune::SeqOverlappingSchwarzAssembler< SuperLU< T > >::assembleLocalProblems ( const RowToDomain &  rowToDomain,
const matrix_type mat,
Solvers &  solvers,
const SubDomains &  domains,
bool  onTheFly 
)
static
template<class M , class X , class Y >
template<class RowToDomain , class Solvers , class SubDomains >
std::size_t Dune::SeqOverlappingSchwarzAssemblerILUBase< M, X, Y >::assembleLocalProblems ( const RowToDomain &  rowToDomain,
const matrix_type mat,
Solvers &  solvers,
const SubDomains &  domains,
bool  onTheFly 
)
static
template<class K , int n, class Al , class X , class Y >
void Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::assignResult ( block_type res)
inline

Assigns the block to the current local index. At the same time the local defect is calculated for the index and stored in the rhs. Afterwards the is incremented for the next block.

template<typename T , typename A , int n, int m>
void Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::assignResult ( block_type res)

Assigns the block to the current local index. At the same time the local defect is calculated for the index and stored in the rhs. Afterwards the is incremented for the next block.

template<class M , class X , class Y >
void Dune::OverlappingAssignerILUBase< M, X, Y >::assignResult ( block_type res)

Assigns the block to the current local index. At the same time the local defect is calculated for the index and stored in the rhs. Afterwards the is incremented for the next block.

template<typename S , typename T , typename A , int n>
void Dune::AdditiveAdder< S, BlockVector< FieldVector< T, n >, A > >::axpy ( )
template<typename S , typename T , typename A , int n>
void Dune::MultiplicativeAdder< S, BlockVector< FieldVector< T, n >, A > >::axpy ( )
template<class I , class S , class D >
OverlappingSchwarzInitializer< I, S, D >::IndexMap::iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::begin ( )
template<class I , class S , class D >
OverlappingSchwarzInitializer< I, S, D >::IndexMap::const_iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::begin ( ) const
template<class I , class S , class D >
void Dune::OverlappingSchwarzInitializer< I, S, D >::calcColstart ( ) const
template<class I , class S , class D >
void Dune::OverlappingSchwarzInitializer< I, S, D >::copyValue ( const Iter row,
const CIter col 
) const
template<class I , class S , class D >
void Dune::OverlappingSchwarzInitializer< I, S, D >::countEntries ( const Iter row,
const CIter col 
) const
template<class I , class S , class D >
void Dune::OverlappingSchwarzInitializer< I, S, D >::createMatrix ( ) const
template<class K , int n, class Al , class X , class Y >
void Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::deallocate ( )
inline

Deallocates memory of the local vector.

template<typename T , typename A , int n, int m>
void Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::deallocate ( )

Deallocates memory of the local vector.

Warning
memory is released by the destructor as this Functor is copied and the copy needs to still have the data.
template<class M , class X , class Y >
void Dune::OverlappingAssignerILUBase< M, X, Y >::deallocate ( )

Deallocates memory of the local vector.

Warning
memory is released by the destructor as this Functor is copied and the copy needs to still have the data.
template<class I , class S , class D >
OverlappingSchwarzInitializer< I, S, D >::IndexMap::iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::end ( )
template<class I , class S , class D >
OverlappingSchwarzInitializer< I, S, D >::IndexMap::const_iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::end ( ) const
template<class I , class S , class D >
OverlappingSchwarzInitializer< I, S, D >::IndexMap::const_iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::find ( size_type  grow) const
template<class I , class S , class D >
OverlappingSchwarzInitializer< I, S, D >::IndexMap::iterator Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::find ( size_type  grow)
template<class I , class S , class D >
Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::IndexMap ( )
template<class I , class S , class D >
void Dune::OverlappingSchwarzInitializer< I, S, D >::IndexMap::insert ( size_type  grow)

References row.

template<class K , int n, class Al , class X , class Y >
DynamicVector< K > & Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::lhs ( )
inline

Get the local left hand side.

Returns
The local left hand side.
template<typename T , typename A , int n, int m>
OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::field_type * Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::lhs ( )

Get the local left hand side.

Returns
The local left hand side.
template<class M , class X , class Y >
X & Dune::OverlappingAssignerILUBase< M, X, Y >::lhs ( )

Get the local left hand side.

Returns
The local left hand side.
template<typename S , typename T , typename A , int n>
Dune::MultiplicativeAdder< S, BlockVector< FieldVector< T, n >, A > >::MultiplicativeAdder ( BlockVector< FieldVector< T, n >, A > &  v,
BlockVector< FieldVector< T, n >, A > &  x,
OverlappingAssigner< S > &  assigner_,
const T &  relax_ 
)
template<class K , int n, class Al , class X , class Y >
void Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::operator() ( const size_type domainIndex)

calculate one entry of the local defect.

Parameters
domainIndexOne index of the domain.

References col, and mat.

template<typename T , typename A , int n, int m>
void Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::operator() ( const size_type domain)

calculate one entry of the local defect.

Parameters
domainOne index of the domain.

References col, and mat.

template<class M , class X , class Y >
void Dune::OverlappingAssignerILUBase< M, X, Y >::operator() ( const size_type domain)

calculate one entry of the local defect.

Parameters
domainOne index of the domain.

References col, and mat.

template<typename S , typename T , typename A , int n>
void Dune::AdditiveAdder< S, BlockVector< FieldVector< T, n >, A > >::operator() ( const size_type domain)
template<typename S , typename T , typename A , int n>
void Dune::MultiplicativeAdder< S, BlockVector< FieldVector< T, n >, A > >::operator() ( const size_type domain)
template<class K , int n, class Al , class X , class Y >
Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::OverlappingAssigner ( std::size_t  maxlength,
const BCRSMatrix< FieldMatrix< K, n, n >, Al > &  mat_,
const X &  b_,
Y &  x_ 
)

Constructor.

Parameters
maxlengthThe maximum entries over all subdomains.
mat_The global matrix.
b_the global right hand side.
x_the global left hand side.
template<typename T , typename A , int n, int m>
Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::OverlappingAssigner ( std::size_t  maxlength,
const BCRSMatrix< FieldMatrix< T, n, m >, A > &  mat,
const range_type b,
range_type x 
)

Constructor.

Parameters
maxlengthThe maximum entries over all subdomains.
matThe global matrix.
bthe global right hand side.
xthe global left hand side.
template<class M , class X , class Y >
Dune::OverlappingAssignerILUBase< M, X, Y >::OverlappingAssignerILUBase ( std::size_t  maxlength,
const M &  mat,
const Y &  b,
X &  x 
)

Constructor.

Parameters
maxlengthThe maximum entries over all subdomains.
matThe global matrix.
bthe global right hand side.
xthe global left hand side.
template<class I , class S , class D >
Dune::OverlappingSchwarzInitializer< I, S, D >::OverlappingSchwarzInitializer ( InitializerList il,
const IndexSet indices,
const subdomain_vector domains 
)
template<class K , int n, class Al , class X , class Y >
void Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::relaxResult ( field_type  relax)
inline

relax the result.

Parameters
relaxThe relaxation parameter.
template<typename T , typename A , int n, int m>
void Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::relaxResult ( field_type  relax)

relax the result.

Parameters
relaxThe relaxation parameter.
template<class M , class X , class Y >
void Dune::OverlappingAssignerILUBase< M, X, Y >::relaxResult ( field_type  relax)

relax the result.

Parameters
relaxThe relaxation parameter.
template<class K , int n, class Al , class X , class Y >
void Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::resetIndexForNextDomain ( )
inline

Resets the local index to zero.

template<typename T , typename A , int n, int m>
void Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::resetIndexForNextDomain ( )
template<class M , class X , class Y >
void Dune::OverlappingAssignerILUBase< M, X, Y >::resetIndexForNextDomain ( )

Resets the local index to zero.

template<class K , int n, class Al , class X , class Y >
DynamicVector< K > & Dune::OverlappingAssigner< DynamicMatrixSubdomainSolver< BCRSMatrix< FieldMatrix< K, n, n >, Al >, X, Y > >::rhs ( )
inline

Get the local right hand side.

Returns
The local right hand side.
template<typename T , typename A , int n, int m>
OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::field_type * Dune::OverlappingAssigner< SuperLU< BCRSMatrix< FieldMatrix< T, n, m >, A > > >::rhs ( )

Get the local right hand side.

Returns
The local right hand side.
template<class M , class X , class Y >
Y & Dune::OverlappingAssignerILUBase< M, X, Y >::rhs ( )

Get the local right hand side.

Returns
The local right hand side.
template<class M , class X , class TM , class TD , class TA >
Dune::SeqOverlappingSchwarz< M, X, TM, TD, TA >::SeqOverlappingSchwarz ( const matrix_type mat,
const subdomain_vector subDomains,
field_type  relaxationFactor = 1,
bool  onTheFly_ = true 
)

Construct the overlapping Schwarz method.

Parameters
matThe matrix to precondition.
subDomainsArray of sets of rowindices belonging to an overlapping subdomain
relaxationFactorrelaxation factor
onTheFly_If true the decomposition of the exact local solvers is computed on the fly for each subdomain and iteration step. If false all decompositions are computed in pre and only forward and backward substitution takes place in the iteration steps.
Warning
Each rowindex should be part of at least one subdomain!

References row.

template<class M , class X , class TM , class TD , class TA >
Dune::SeqOverlappingSchwarz< M, X, TM, TD, TA >::SeqOverlappingSchwarz ( const matrix_type mat,
const rowtodomain_vector rowToDomain,
field_type  relaxationFactor = 1,
bool  onTheFly_ = true 
)

Construct the overlapping Schwarz method

Parameters
matThe matrix to precondition.
rowToDomainThe mapping of the rows onto the domains.
relaxationFactorrelaxation factor
onTheFly_If true the decomposition of the exact local solvers is computed on the fly for each subdomain and iteration step. If false all decompositions are computed in pre and only forward and backward substitution takes place in the iteration steps.

References row.