10 #ifdef MOOSE_MFEM_ENABLED 21 params.
addClassDescription(
"Hypre solver for the iterative solution of MFEM equation systems " 22 "using the generalized minimal residual method.");
24 params.
addParam<mfem::real_t>(
"l_tol", 1e-5,
"Set the relative tolerance.");
25 params.
addParam<mfem::real_t>(
"l_abs_tol", 1e-50,
"Set the absolute tolerance.");
26 params.
addParam<
int>(
"l_max_its", 10000,
"Set the maximum number of iterations.");
27 params.
addParam<
int>(
"kdim", 10,
"Set the k-dimension.");
28 params.
addParam<
int>(
"print_level", 2,
"Set the solver verbosity.");
29 params.
addParam<MFEMSolverName>(
"preconditioner",
"Optional choice of preconditioner to use.");
35 :
Moose::MFEM::LORLinearSolverBase<
mfem::HypreGMRES>(parameters)
52 solver.iterative_mode = getParam<bool>(
"use_initial_guess");
53 solver.SetTol(getParam<mfem::real_t>(
"l_tol"));
54 solver.SetAbsTol(getParam<mfem::real_t>(
"l_abs_tol"));
55 solver.SetMaxIter(getParam<int>(
"l_max_its"));
56 solver.SetKDim(getParam<int>(
"kdim"));
57 solver.SetPrintLevel(getParam<int>(
"print_level"));
static InputParameters validParams()
MFEMProblem & getMFEMProblem()
Return the owning MFEM problem.
virtual void SetSolverParameters(mfem::HypreGMRES &solver) override
Update the wrapped MFEM solver parameters.
std::unique_ptr< mfem::Solver > _solver
Solver to be used for the problem.
registerMooseObject("MooseApp", MFEMHypreGMRES)
static InputParameters validParams()
MFEMHypreGMRES(const InputParameters &)
Wrapper for mfem::HypreGMRES solver.
MPI_Comm getComm()
Return the MPI communicator associated with this FE problem's mesh.
void SetPreconditioner(T &solver)
Retrieves the preconditioner userobject if present, sets the member pointer to said object if still u...
void ConstructSolver() override
Override in derived classes to construct and set the solver options.
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...