10 #ifdef MOOSE_MFEM_ENABLED 33 _mfem_problem(dynamic_cast<
MFEMProblem &>(feProblem())),
34 _mfem_problem_data(_mfem_problem.getProblemData()),
35 _mfem_problem_solve(*this, getProblemOperators()),
36 _system_time(getParam<
Real>(
"time")),
37 _time_step(_mfem_problem.timeStep()),
39 _last_solve_converged(
false)
42 if (getProblemOperators().empty())
46 if (dynamic_cast<MFEMEigenproblem *>(&_mfem_problem))
48 _mfem_problem_data.eqn_system = std::make_shared<Moose::MFEM::EigenproblemEquationSystem>();
49 auto problem_operator =
50 std::make_shared<Moose::MFEM::EigenproblemESProblemOperator>(_mfem_problem);
51 addProblemOperator(std::move(problem_operator));
55 _mfem_problem_data.eqn_system = std::make_shared<Moose::MFEM::EquationSystem>();
56 auto problem_operator =
57 std::make_shared<Moose::MFEM::EquationSystemProblemOperator>(_mfem_problem);
58 addProblemOperator(std::move(problem_operator));
63 _mfem_problem_data.eqn_system = std::make_shared<Moose::MFEM::ComplexEquationSystem>();
64 auto problem_operator =
65 std::make_shared<Moose::MFEM::ComplexEquationSystemProblemOperator>(_mfem_problem);
66 addProblemOperator(std::move(problem_operator));
70 "Please set the Problem numeric type to either 'real' or 'complex'.");
84 getParam<MooseEnum>(
"assembly_level").getEnum<mfem::AssemblyLevel>());
88 problem_operator->SetGridFunctions();
98 _console <<
"\nCannot recover steady solves!\nExiting...\n" << std::endl;
126 TIME_SECTION(
"final", 1,
"Executing Final Objects")
virtual void preExecute()
Override this for actions that should take place before execution.
void timestepSetup() override
registerMooseObject("MooseApp", MFEMSteady)
virtual Real & time() const
Moose::MFEM::ComplexGridFunctions cmplx_gridfunctions
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
virtual void postExecute()
Method called at the end of the simulation.
virtual bool solve() override
Solve routine provided by this object.
MFEMProblemData & _mfem_problem_data
virtual void computeMarkers()
virtual std::vector< std::shared_ptr< ProblemOperatorBase > > & getProblemOperators()
Returns a pointer to the operator's equation system.
MFEMSteady(const InputParameters ¶ms)
const ExecFlagType EXEC_TIMESTEP_END
MFEMProblem & _mfem_problem
virtual void advanceState()
Advance all of the state holding vectors / datastructures so that we can move to the next timestep...
static InputParameters validParams()
static InputParameters validParams()
const ExecFlagType EXEC_PRE_MULTIAPP_SETUP
virtual void computeIndicators()
virtual void postExecute()
Override this for actions that should take place after execution.
virtual void initialSetup() override
Executioners are objects that do the actual work of solving your problem.
static InputParameters validParams()
MooseApp & _app
The MOOSE application this is associated with.
std::shared_ptr< Moose::MFEM::EquationSystem > eqn_system
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
MFEMProblemSolve _mfem_problem_solve
virtual void init() override
Initialize the executioner.
virtual void execute() override
Pure virtual execute function MUST be overridden by children classes.
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
bool execMultiApps(ExecFlagType type, bool auto_advance=true)
Execute the MultiApps associated with the ExecFlagType.
Moose::MFEM::GridFunctions gridfunctions
bool _last_solve_converged
Flag showing if the last solve converged.
bool isRecovering() const
Whether or not this is a "recover" calculation.
const ExecFlagType EXEC_FINAL
virtual void outputStep(ExecFlagType type)
Output the current step.
virtual void execute(const ExecFlagType &exec_type) override
Convenience function for performing execution of MOOSE systems.
const ExecFlagType EXEC_INITIAL