10 #ifdef MOOSE_MFEM_ENABLED 21 params.
addParam<std::string>(
"device",
"Run app on the chosen device.");
22 MooseEnum assembly_levels(
"legacy full element partial none",
"legacy",
true);
23 params.
addParam<
MooseEnum>(
"assembly_level", assembly_levels,
"Matrix assembly level.");
29 std::vector<std::shared_ptr<Moose::MFEM::ProblemOperatorBase>> & problem_operators)
31 _mfem_problem(dynamic_cast<
MFEMProblem &>(_problem)),
32 _problem_operators(problem_operators)
49 problem_operator->Solve();
57 if (
auto * prec = solver->GetPreconditioner())
58 prec->ConstructSolver();
59 solver->ConstructSolver();
64 problem_operator->SetGridFunctions();
68 problem_operator->Solve();
bool isUltimateMaster() const
Whether or not this app is the ultimate master app.
MFEMProblemData & getProblemData()
Method to get the current MFEMProblemData object storing the current data specifying the FE problem...
std::vector< std::shared_ptr< Moose::MFEM::ProblemOperatorBase > > & _problem_operators
virtual bool solve() override
Solve routine provided by this object.
std::shared_ptr< Moose::MFEM::LinearSolverBase > jacobian_solver
void displaceMesh()
Displace the mesh, if mesh displacement is enabled.
bool hRefine()
If AMR is enabled, request (and perform if needed) h-refinement.
std::optional< MooseEnum > getComputeDevice() const
Get the device accelerated computations are supposed to be running on.
MFEMProblem & _mfem_problem
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Executioners are objects that do the actual work of solving your problem.
static InputParameters validParams()
MooseApp & _app
The MOOSE application this is associated with.
MFEMProblemSolve(Executioner &ex, std::vector< std::shared_ptr< Moose::MFEM::ProblemOperatorBase >> &problem_operators)
void setMFEMDevice(const std::string &device_string, Moose::PassKey< MFEMProblemSolve >)
Create/configure the MFEM device with the provided device_string.
bool isParamValid(const std::string &name) const
Test if the supplied parameter is valid.
bool pRefine()
If AMR is enabled, request (and perform if needed) p-refinement.