20 #ifndef GEOS_LINEARALGEBRA_SOLVERS_SEPARATECOMPONENTPRECONDITIONER_HPP_
21 #define GEOS_LINEARALGEBRA_SOLVERS_SEPARATECOMPONENTPRECONDITIONER_HPP_
23 #include "linearAlgebra/common/PreconditionerBase.hpp"
34 template<
typename LAI >
76 return m_precond->hasPreconditionerMatrix();
81 return m_precond->preconditionerMatrix();
111 std::unique_ptr< PreconditionerBase< LAI > > m_precond;
Abstract base class for linear operators.
Common interface for preconditioning operators.
bool ready() const
Chech if preconditioner is ready to use.
typename Base::Vector Vector
Alias for vector type.
typename LAI::ParallelMatrix Matrix
Alias for matrix type.
Separate component filter implemented as a compound preconditioner.
virtual Matrix const & preconditionerMatrix() const override
Access the preconditioner in matrix form (whenever available). It must be overridden by the specific ...
SeparateComponentPreconditioner(localIndex const numComp, std::unique_ptr< PreconditionerBase< LAI > > precond)
Constructor.
typename Base::Matrix Matrix
Alias for matrix type.
virtual void clear() override
Clean up the preconditioner setup.
virtual void apply(Vector const &src, Vector &dst) const override
Apply operator to a vector.
virtual bool hasPreconditionerMatrix() const override
Check whether the preconditioner is available in matrix (explicit) form.
virtual void setup(Matrix const &mat) override
Compute the preconditioner from a matrix.
virtual ~SeparateComponentPreconditioner() override
Destructor.
Matrix const & separateComponentMatrix() const
PreconditionerBase< LAI > const & innerPrecond() const
Access to the nested preconditioner.
#define GEOS_LAI_ASSERT(expr)
GEOS_LOCALINDEX_TYPE localIndex
Local index type (for indexing objects within an MPI partition).