12#ifndef MFEM_FILTEREDSOLVER
13#define MFEM_FILTEREDSOLVER
87 mutable std::unique_ptr<const Operator>
PtAP =
nullptr;
94 std::unique_ptr<const Operator> GetPtAP(
const Operator *Aop,
97 void MakeSolver()
const;
125 std::unique_ptr<HypreBoomerAMG> amg;
130 amg = std::make_unique<HypreBoomerAMG>();
145 MFEM_ABORT(
"SetSolver is not supported in AMGFSolver. It is set to AMG by default");
AMG with Filtering: specialization of FilteredSolver.
const HypreBoomerAMG & GetAMG() const
Const access to the internal HypreBoomerAMG instance.
AMGFSolver()
Construct AMGF solver with default HypreBoomerAMG.
void SetSolver(Solver &B) override
Set the solver B that operates on the full space.
~AMGFSolver() override=default
Destructor.
void SetFilteredSubspaceTransferOperator(const HypreParMatrix &Pop)
Set the parallel transfer operator P for the filtered subspace.
HypreBoomerAMG & GetAMG()
Access to the internal HypreBoomerAMG instance.
virtual void SetOperator(const Operator &A) override
Set the system operator A.
Base class for solvers with filtering (subspace correction).
std::unique_ptr< const Operator > PtAP
Projected operator.
void Mult(const Vector &x, Vector &y) const override
Apply the filtered solver.
virtual ~FilteredSolver()=default
FilteredSolver & operator=(FilteredSolver &&)=default
FilteredSolver(const FilteredSolver &)=delete
const Operator * P
Transfer operator (not owned).
virtual void SetOperator(const Operator &A) override
Set the system operator A.
void SetFilteredSubspaceTransferOperator(const Operator &P)
Set the transfer operator P from filtered subspace to the full space.
Solver * B
Base solver (not owned).
Solver * S
Subspace solver (not owned).
void InitVectors() const
Initialize work vectors.
void SetFilteredSubspaceSolver(Solver &S)
Set a solver S that operates on the filtered subspace operator .
const Operator * A
System operator (not owned).
FilteredSolver & operator=(const FilteredSolver &)=delete
virtual void SetSolver(Solver &B)
Set the solver B that operates on the full space.
FilteredSolver()
Construct an empty filtered solver. Must set operator and solver before use.
FilteredSolver(FilteredSolver &&)=default
The BoomerAMG solver in hypre.
Wrapper for hypre's ParCSR matrix class.