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_ |
Preconditioner for block-preconditioners using row/column sub-ranges.
|
inlineoverridevirtual |
Initialize the preconditioner by initializing all sub precons.
Implements PreconditionerInterface< M, V, V >.
References BlockPreconditioner< M, V, RowBasis, ColBasis >::initBlocks().