10#ifdef MOOSE_MFEM_ENABLED
21 params.
addParam<std::string>(
"device",
"",
"Run app on the chosen device.");
22 params.
addParam<
bool>(
"gpu_aware_mpi",
false,
"Use GPU-aware MPI.");
23 MooseEnum assembly_levels(
"legacy full element partial none",
"legacy");
24 params.
addParam<
MooseEnum>(
"assembly_level", assembly_levels,
"Matrix assembly level.");
30 std::vector<std::shared_ptr<Moose::MFEM::ProblemOperatorBase>> & problem_operators)
32 _mfem_problem(dynamic_cast<
MFEMProblem &>(_problem)),
33 _problem_operators(problem_operators)
35 _app.
setMFEMDevice(getParam<std::string>(
"device"), getParam<bool>(
"gpu_aware_mpi"));
44 problem_operator->Solve();
52 if (
auto * prec = solver->GetPreconditioner())
53 prec->ConstructSolver();
54 solver->ConstructSolver();
59 problem_operator->SetGridFunctions();
63 problem_operator->Solve();
Executioners are objects that do the actual work of solving your problem.
virtual bool solve() override
Solve routine provided by this object.
MFEMProblem & _mfem_problem
static InputParameters validParams()
MFEMProblemSolve(Executioner &ex, std::vector< std::shared_ptr< Moose::MFEM::ProblemOperatorBase > > &problem_operators)
std::vector< std::shared_ptr< Moose::MFEM::ProblemOperatorBase > > & _problem_operators
bool hRefine()
If AMR is enabled, request (and perform if needed) h-refinement.
MFEMProblemData & getProblemData()
Method to get the current MFEMProblemData object storing the current data specifying the FE problem.
bool pRefine()
If AMR is enabled, request (and perform if needed) p-refinement.
void displaceMesh()
Displace the mesh, if mesh displacement is enabled.
void setMFEMDevice(const std::string &executioner_device, const bool &gpu_aware_mpi)
Create/configure the MFEM device.
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
MooseApp & _app
The MOOSE application this is associated with.
std::shared_ptr< Moose::MFEM::LinearSolverBase > jacobian_solver