10#ifdef MOOSE_MFEM_ENABLED
26 :
Moose::MFEM::NonlinearSolverBase(parameters)
34 auto solver = std::make_unique<mfem::NewtonSolver>(
getMFEMProblem().getComm());
35 solver->iterative_mode = getParam<bool>(
"use_initial_guess");
36 solver->SetRelTol(getParam<mfem::real_t>(
"rel_tol"));
37 solver->SetAbsTol(getParam<mfem::real_t>(
"abs_tol"));
38 solver->SetMaxIter(getParam<unsigned int>(
"max_its"));
39 solver->SetPrintLevel(getParam<unsigned int>(
"print_level"));
registerMooseObject("MooseApp", MFEMNewtonNonlinearSolver)
MooseObject wrapper for mfem::NewtonSolver-backed nonlinear solves.
void ConstructSolver() override
Override in derived classes to construct and set the solver options.
void SetLinearSolver(mfem::Solver &solver) override
Configure the linear solver used inside the nonlinear solve.
MFEMNewtonNonlinearSolver(const InputParameters ¶meters)
static InputParameters validParams()
MFEMProblem & getMFEMProblem()
Return the owning MFEM problem.
static InputParameters validParams()
mfem::Solver & GetSolver()
Returns the wrapped MFEM solver.
std::unique_ptr< mfem::Solver > _solver
Solver to be used for the problem.
void SetSolver(mfem::Solver *solver)
Set the wrapped MFEM solver.
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...