46#ifndef MFEM_BP_SOLVER_HPP
47#define MFEM_BP_SOLVER_HPP
82 {
if (
Mpi::Root()) { MFEM_WARNING(
"SetPreconditioner has no effect on BPCGSolver.\n"); } }
120 mutable bool use_bpcg;
121 std::unique_ptr<IterativeSolver> solver_;
122 std::unique_ptr<BlockOperator> oop_, ipc_;
123 std::unique_ptr<ProductOperator> mop_, ppc_;
124 std::unique_ptr<SumOperator> map_;
125 std::unique_ptr<BlockDiagonalPreconditioner> cpc_;
126 std::unique_ptr<HypreParMatrix> M_, B_, Q_, S_;
127 std::unique_ptr<TransposeOperator> Bt_;
void Copy(Array ©) const
Create a copy of the internal array to the provided copy.
Wrapper for hypre's ParCSR matrix class.
A class to initialize the size of a Tensor.
Abstract base class for iterative solver.
void SetOperator(const Operator &op) override
Also calls SetOperator for the preconditioner if there is one.
static bool Root()
Return true if the rank in MPI_COMM_WORLD is zero.
Pointer to an Operator of a specified type.
Bramble-Pasciak Conjugate Gradient.
void SetPreconditioner(Solver &pc) override
This should be called before SetOperator.
BPCGSolver(MPI_Comm comm_, const Operator *ipc, const Operator *ppc)
void Mult(const Vector &b, Vector &x) const override
Operator application: y=A(x).
virtual void SetIncompletePreconditioner(const Operator *ipc)
void SetOperator(const Operator &op) override
Set/update the solver for the given operator.
void UpdateVectors()
Bramble-Pasciak CG.
BPCGSolver(const Operator *ipc, const Operator *ppc)
virtual void SetParticularPreconditioner(const Operator *ppc)
Bramble-Pasciak Solver for Darcy equation.
BramblePasciakSolver(ParBilinearForm &mVarf, ParMixedBilinearForm &bVarf, const BPSParameters ¶m)
System and mass preconditioner are constructed from bilinear forms.
void Mult(const Vector &x, Vector &y) const override
Operator application: y=A(x).
static HypreParMatrix * ConstructMassPreconditioner(const ParBilinearForm &mVarf, const real_t alpha=0.5)
Assemble a preconditioner for the mass matrix.
void SetEssZeroDofs(const Array< int > &dofs)
void SetOperator(const Operator &op) override
Set/update the solver for the given operator.
int GetNumIterations() const override
Abstract solver class for Darcy's flow.
Parameters for the BramblePasciakSolver method.