10#ifdef MOOSE_MFEM_ENABLED
21 params.
addClassDescription(
"Hypre auxiliary-space Maxwell eigensolver to compute the lowest "
22 "eigenmodes of a generalized eigenvalue problem.");
28 :
Moose::MFEM::EigensolverBase(parameters)
41 _eigensolver->SetPrintLevel(getParam<int>(
"print_level"));
47 if (
auto * prec =
dynamic_cast<mfem::HypreSolver *
>(&
_preconditioner->GetSolver()))
50 paramError(
"preconditioner",
"MFEMHypreAME requires a hypre solver as its preconditioner");
registerMooseObject("MooseApp", MFEMHypreAME)
Class for the HypreAME eigensolver.
virtual void ConstructSolver() override
Override in derived classes to construct and set the solver options.
static InputParameters validParams()
MFEMHypreAME(const InputParameters ¶meters)
std::unique_ptr< mfem::HypreAME > _eigensolver
Eigensolver to be used for the problem.
virtual void SetPreconditionerImpl() override
Override in solvers that accept a preconditioner.
MFEMProblem & getMFEMProblem()
Return the owning MFEM problem.
void paramError(const std::string ¶m, Args... args) const
Emits an error prefixed with the file and line number of the given param (from the input file) along ...
static InputParameters validParams()
int _num_modes
Number of eigenmodes to compute.
std::shared_ptr< LinearSolverBase > _preconditioner
Preconditioner to be used for the problem.
MOOSE now contains C++17 code, so give a reasonable error message stating what the user can do to add...