AMDiS 2.11-git
The Adaptive Multi-Dimensional Simulation Toolbox
 
Loading...
Searching...
No Matches
BlockPreconditioner< M, V, RowBasis, ColBasis > Class Template Reference

Preconditioner for block-preconditioners using row/column sub-ranges. More...

#include <BlockPreconditioner.hpp>

Inherits BlockPreconditionerImpl< RowBasis, ColBasis >, and PreconditionerInterface< M, V, V >.

Public Types

using StridedVector = mtl::vec::strided_vector_ref< typename V::value_type >
 Return a view on a sub-vector block for indices given in a strided range.
 

Public Member Functions

 BlockPreconditioner (std::shared_ptr< RowBasis > rowBasis, std::shared_ptr< ColBasis > colBasis)
 Constructor, constructs a block mapping for row and column basis.
 
 BlockPreconditioner (std::shared_ptr< RowBasis > rowBasis)
 Constructor, constructs a block mapping for row and column basis.
 
void init (M const &A) override
 Initialize the preconditioner by initializing all sub precons.
 
void initBlocks (M const &A, bool diagonalsOnly=false)
 Fill block matrices from fullMatrix.
 
M const & subMatrix (std::size_t i, std::size_t j) const
 Return the sub-matrix block (i,j)
 
M & subMatrix (std::size_t i, std::size_t j)
 Return the sub-matrix block (i,j)
 
template<class Vector >
auto subVector (Vector &&vec, mtl::irange const &ir) const
 Return a view on a sub-vector block for indices given in a range.
 
StridedVector subVector (V &vec, mtl::srange const &sr) const
 
StridedVector const subVector (V const &vec, mtl::srange const &sr) const
 Return a view on a sub-vector block for indices given in a strided range.
 
std::size_t rows () const
 Return the number of row blocks.
 
std::size_t cols () const
 Return the number of columns blocks.
 
- Public Member Functions inherited from PreconditionerInterface< M, V, V >
virtual ~PreconditionerInterface ()=default
 Virtual destructor.
 
virtual void finish ()=0
 Is called at the end of a solution procedure.
 
virtual void solve (V const &x, V &y) const=0
 Apply the preconditioner to a vector x and store the result in y.
 
virtual void adjoint_solve (V const &x, V &y) const
 Apply the transposed preconditioner to a vector x and store the result in y.
 

Protected Attributes

BlockedBasisMapping< RowBasis, ColBasis > blockMapping_
 
BlockMatrix< M > subMatrix_
 

Detailed Description

template<class M, class V, class RowBasis, class ColBasis = RowBasis>
class AMDiS::BlockPreconditioner< M, V, RowBasis, ColBasis >

Preconditioner for block-preconditioners using row/column sub-ranges.

Member Function Documentation

◆ init()

template<class M , class V , class RowBasis , class ColBasis = RowBasis>
void init ( M const &  A)
inlineoverridevirtual

Initialize the preconditioner by initializing all sub precons.

Implements PreconditionerInterface< M, V, V >.

References BlockPreconditioner< M, V, RowBasis, ColBasis >::initBlocks().


The documentation for this class was generated from the following file: