GEOSX
|
Common interface for preconditioning operators. More...
#include <PreconditionerBase.hpp>
Public Types | |
using | Base = LinearOperator< typename LAI::ParallelVector > |
Alias for base type. | |
using | Vector = typename Base::Vector |
Alias for vector type. | |
using | Matrix = typename LAI::ParallelMatrix |
Alias for matrix type. | |
Public Types inherited from geos::LinearOperator< LAI::ParallelVector > | |
using | Vector = LAI::ParallelVector |
Alias for template parameter. | |
Public Member Functions | |
virtual void | setup (Matrix const &mat) |
Compute the preconditioner from a matrix. More... | |
virtual void | clear () |
Clean up the preconditioner setup. 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... | |
virtual localIndex | numLocalRows () const override |
Get the number of local rows. More... | |
virtual localIndex | numLocalCols () const override |
Get the number of local columns. More... | |
virtual MPI_Comm | comm () const override |
Get the MPI communicator the matrix was created with. More... | |
bool | ready () const |
Chech if preconditioner is ready to use. More... | |
const Matrix & | 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 const Matrix & | preconditionerMatrix () const |
Access the preconditioner in matrix form (whenever available). It must be overridden by the specific preconditioner. More... | |
Public Member Functions inherited from geos::LinearOperator< LAI::ParallelVector > | |
LinearOperator ()=default | |
Constructor. | |
virtual | ~LinearOperator ()=default |
Destructor. | |
virtual void | apply (Vector const &src, Vector &dst) const=0 |
Apply operator to a vector, dst = this(src) . More... | |
virtual void | residual (Vector const &x, Vector const &b, Vector &r) const |
Compute residual r = b - this(x) . More... | |
virtual globalIndex | numGlobalRows () const=0 |
Get the number of global rows. More... | |
virtual globalIndex | numGlobalCols () const=0 |
Get the number of global columns. More... | |
virtual localIndex | numLocalRows () const=0 |
Get the number of local rows. More... | |
virtual localIndex | numLocalCols () const=0 |
Get the number of local columns. More... | |
virtual MPI_Comm | comm () const=0 |
Get the MPI communicator the matrix was created with. More... | |
Common interface for preconditioning operators.
LAI | linear algebra interface providing vectors, matrices and solvers |
Definition at line 31 of file PreconditionerBase.hpp.
|
inlinevirtual |
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).
Reimplemented in geos::BlockPreconditioner< LAI >, geos::PreconditionerBlockJacobi< LAI >, geos::SuiteSparse< LAI >, geos::PetscPreconditioner, geos::HyprePreconditioner, geos::SuperLUDist< LAI >, geos::TrilinosPreconditioner, geos::HypreSolver, geos::PetscSolver, geos::SeparateComponentPreconditioner< LAI >, and geos::PreconditionerJacobi< LAI >.
Definition at line 70 of file PreconditionerBase.hpp.
|
inlineoverridevirtual |
Get the MPI communicator the matrix was created with.
create
...()Definition at line 118 of file PreconditionerBase.hpp.
|
inlinevirtual |
Check whether the preconditioner is available in matrix (explicit) form.
Reimplemented in geos::PreconditionerBlockJacobi< LAI >, and geos::SeparateComponentPreconditioner< LAI >.
Definition at line 146 of file PreconditionerBase.hpp.
|
inline |
Access the matrix the preconditioner was computed from.
Definition at line 136 of file PreconditionerBase.hpp.
|
inlineoverridevirtual |
Get the number of global columns.
Reimplemented in geos::PreconditionerJacobi< LAI >.
Definition at line 88 of file PreconditionerBase.hpp.
|
inlineoverridevirtual |
Get the number of global rows.
Reimplemented in geos::PreconditionerJacobi< LAI >.
Definition at line 79 of file PreconditionerBase.hpp.
|
inlineoverridevirtual |
Get the number of local columns.
Definition at line 106 of file PreconditionerBase.hpp.
|
inlineoverridevirtual |
Get the number of local rows.
Definition at line 97 of file PreconditionerBase.hpp.
|
inlinevirtual |
Access the preconditioner in matrix form (whenever available). It must be overridden by the specific preconditioner.
Reimplemented in geos::PreconditionerBlockJacobi< LAI >, and geos::SeparateComponentPreconditioner< LAI >.
Definition at line 156 of file PreconditionerBase.hpp.
|
inline |
Chech if preconditioner is ready to use.
true
if compute() has been called but not clear(). Definition at line 127 of file PreconditionerBase.hpp.
|
inlinevirtual |
Compute the preconditioner from a matrix.
mat | the matrix to precondition. |
Reimplemented in geos::HyprePreconditioner, geos::SeparateComponentPreconditioner< LAI >, geos::PreconditionerBlockJacobi< LAI >, and geos::PreconditionerJacobi< LAI >.
Definition at line 52 of file PreconditionerBase.hpp.