GEOS
Public Types | Public Member Functions | List of all members
geos::PreconditionerBase< LAI > Class Template Reference

Common interface for preconditioning operators. More...

#include <PreconditionerBase.hpp>

Inheritance diagram for geos::PreconditionerBase< LAI >:
Inheritance graph
[legend]

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...
 
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...
 
- 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...
 

Detailed Description

template<typename LAI>
class geos::PreconditionerBase< LAI >

Common interface for preconditioning operators.

Template Parameters
LAIlinear algebra interface providing vectors, matrices and solvers

Definition at line 32 of file PreconditionerBase.hpp.

Member Function Documentation

◆ clear()

template<typename LAI >
virtual void geos::PreconditionerBase< LAI >::clear ( )
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).

Note
Should be properly overridden in derived classes, which may call this method.

Reimplemented in geos::SeparateComponentPreconditioner< LAI >, geos::PreconditionerJacobi< LAI >, geos::PreconditionerBlockJacobi< LAI >, geos::BlockPreconditioner< LAI >, geos::TrilinosPreconditioner, geos::PetscSolver, geos::PetscPreconditioner, geos::HypreSolver, geos::HyprePreconditioner, geos::SuperLUDist< LAI >, and geos::SuiteSparse< LAI >.

Definition at line 71 of file PreconditionerBase.hpp.

◆ comm()

template<typename LAI >
virtual MPI_Comm geos::PreconditionerBase< LAI >::comm ( ) const
inlineoverridevirtual

Get the MPI communicator the matrix was created with.

Returns
MPI communicator passed in create...()
Note
when build without MPI, may return anything (MPI_Comm will be a mock type defined in MpiWrapper)

Implements geos::LinearOperator< LAI::ParallelVector >.

Definition at line 119 of file PreconditionerBase.hpp.

◆ hasPreconditionerMatrix()

template<typename LAI >
virtual bool geos::PreconditionerBase< LAI >::hasPreconditionerMatrix ( ) const
inlinevirtual

Check whether the preconditioner is available in matrix (explicit) form.

Returns
if the preconditioner is available in explicit form

Reimplemented in geos::SeparateComponentPreconditioner< LAI >, and geos::PreconditionerBlockJacobi< LAI >.

Definition at line 147 of file PreconditionerBase.hpp.

◆ matrix()

template<typename LAI >
Matrix const& geos::PreconditionerBase< LAI >::matrix ( ) const
inline

Access the matrix the preconditioner was computed from.

Returns
reference to the matrix (user's repsonsibility to ensure it's still valid)

Definition at line 137 of file PreconditionerBase.hpp.

◆ numGlobalCols()

template<typename LAI >
virtual globalIndex geos::PreconditionerBase< LAI >::numGlobalCols ( ) const
inlineoverridevirtual

Get the number of global columns.

Returns
Number of global columns in the operator.

Implements geos::LinearOperator< LAI::ParallelVector >.

Reimplemented in geos::PreconditionerJacobi< LAI >.

Definition at line 89 of file PreconditionerBase.hpp.

◆ numGlobalRows()

template<typename LAI >
virtual globalIndex geos::PreconditionerBase< LAI >::numGlobalRows ( ) const
inlineoverridevirtual

Get the number of global rows.

Returns
Number of global rows in the operator.

Implements geos::LinearOperator< LAI::ParallelVector >.

Reimplemented in geos::PreconditionerJacobi< LAI >.

Definition at line 80 of file PreconditionerBase.hpp.

◆ numLocalCols()

template<typename LAI >
virtual localIndex geos::PreconditionerBase< LAI >::numLocalCols ( ) const
inlineoverridevirtual

Get the number of local columns.

Returns
Number of local columns in the operator.

Implements geos::LinearOperator< LAI::ParallelVector >.

Definition at line 107 of file PreconditionerBase.hpp.

◆ numLocalRows()

template<typename LAI >
virtual localIndex geos::PreconditionerBase< LAI >::numLocalRows ( ) const
inlineoverridevirtual

Get the number of local rows.

Returns
Number of local rows in the operator.

Implements geos::LinearOperator< LAI::ParallelVector >.

Definition at line 98 of file PreconditionerBase.hpp.

◆ preconditionerMatrix()

template<typename LAI >
virtual Matrix const& geos::PreconditionerBase< LAI >::preconditionerMatrix ( ) const
inlinevirtual

Access the preconditioner in matrix form (whenever available). It must be overridden by the specific preconditioner.

Returns
reference to the preconditioner matrix

Reimplemented in geos::SeparateComponentPreconditioner< LAI >, and geos::PreconditionerBlockJacobi< LAI >.

Definition at line 157 of file PreconditionerBase.hpp.

◆ ready()

template<typename LAI >
bool geos::PreconditionerBase< LAI >::ready ( ) const
inline

Chech if preconditioner is ready to use.

Returns
true if compute() has been called but not clear().

Definition at line 128 of file PreconditionerBase.hpp.

◆ setup()

template<typename LAI >
virtual void geos::PreconditionerBase< LAI >::setup ( Matrix const &  mat)
inlinevirtual

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