General 2x2 block preconditioner.
More...
#include <BlockPreconditioner.hpp>
|
| BlockPreconditioner (BlockShapeOption const shapeOption, SchurComplementOption const schurOption, BlockScalingOption const scalingOption) |
| Constructor. More...
|
|
virtual | ~BlockPreconditioner () override |
| Destructor.
|
|
void | setupBlock (localIndex const blockIndex, std::vector< DofManager::SubComponent > blockDofs, std::unique_ptr< PreconditionerBase< LAI > > solver, real64 const scaling=1.0) |
| Setup data for one of the two blocks. More...
|
|
|
virtual void | compute (Matrix const &mat, DofManager const &dofManager) override |
| Compute the preconditioner from a matrix. More...
|
|
virtual void | apply (Vector const &src, Vector &dst) const override |
| Apply operator to a vector. More...
|
|
virtual void | clear () override |
| Clean up the preconditioner setup. More...
|
|
virtual void | compute (Matrix const &mat) |
| Compute the preconditioner from a matrix. More...
|
|
virtual void | compute (Matrix const &mat, DofManager const &dofManager) |
| Compute the preconditioner from a matrix. More...
|
|
virtual globalIndex | numGlobalRows () const override |
| Get the number of global rows. More...
|
|
virtual globalIndex | numGlobalCols () const override |
| Get the number of global columns. More...
|
|
bool | ready () const |
| Chech if preconditioner is ready to use. More...
|
|
Matrix const & | matrix () const |
| Access the matrix the preconditioner was computed from. More...
|
|
virtual bool | hasPreconditionerMatrix () const |
| Check whether the preconditioner is available in matrix (explicit) form. More...
|
|
virtual Matrix const & | preconditionerMatrix () const |
| Access the preconditioner in matrix form (whenever available). It must be overridden by the specific preconditioner. More...
|
|
| LinearOperator ()=default |
| Constructor.
|
|
virtual | ~LinearOperator ()=default |
| Destructor.
|
|
virtual void | apply (Vector const &src, Vector &dst) const=0 |
| Apply operator to a vector. More...
|
|
virtual void | residual (Vector const &x, Vector const &b, Vector &r) const |
| Compute residual r = Ax - b . More...
|
|
template<typename LAI>
class geosx::BlockPreconditioner< LAI >
General 2x2 block preconditioner.
- Template Parameters
-
LAI | type of linear algebra interface providing matrix/vector types |
Definition at line 100 of file BlockPreconditioner.hpp.
◆ BlockPreconditioner()
Constructor.
- Parameters
-
shapeOption | preconditioner block shape |
schurOption | type of Schur complement approximation to use |
scalingOption | type of scaling to apply to blocks |
◆ apply()
Apply operator to a vector.
- Parameters
-
src | Input vector (x). |
dst | Output vector (b). |
- Warning
src
and dst
cannot alias the same vector (some implementations may allow this).
◆ clear()
Clean up the preconditioner setup.
Releases memory used and allows the matrix to be deleted cleanly. This method should be called before the matrix used to compute the preconditioner goes out of scope or is re-created. Some implementations require the matrix to outlive the preconditioner (for example, Trilinos/ML may crash the program if deleted after the matrix).
- Note
- Should be properly overridden in derived classes, which may call this method.
Reimplemented from geosx::PreconditionerBase< LAI >.
◆ compute()
Compute the preconditioner from a matrix.
- Parameters
-
mat | the matrix to precondition |
dofManager | the Degree-of-Freedom manager associated with matrix |
◆ setupBlock()
Setup data for one of the two blocks.
- Parameters
-
blockIndex | index of the block to set up |
blockDofs | choice of DoF components (from a monolithic system) |
solver | instance of the inner preconditioner for the block |
scaling | user-provided row scaling coefficient for this block |
- Note
- While not strictly required, it is generally expected that
blockDofs
of the two blocks are non-overlapping and their union includes all DoF components in the monolithic system.
The documentation for this class was generated from the following file: