https://mooseframework.inl.gov
Loading...
Searching...
No Matches
MFEMSteady.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
3//*
4//* All rights reserved, see COPYRIGHT for full restrictions
5//* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6//*
7//* Licensed under LGPL 2.1, please see LICENSE for details
8//* https://www.gnu.org/licenses/lgpl-2.1.html
9
10#ifdef MOOSE_MFEM_ENABLED
11
12#include "MFEMSteady.h"
13#include "MFEMProblem.h"
14
16
19{
21 params += Executioner::validParams();
22 params.addClassDescription("Executioner for steady state MFEM problems.");
23 params.addParam<Real>("time", 0.0, "System time");
24 return params;
25}
26
28 : Executioner(params),
29 _mfem_problem(dynamic_cast<MFEMProblem &>(feProblem())),
30 _mfem_problem_solve(*this, _mfem_problem.getProblemOperators()),
31 _system_time(getParam<Real>("time")),
32 _time_step(_mfem_problem.timeStep()),
33 _time([this]() -> Real & { return this->_mfem_problem.time() = this->_system_time; }()),
34 _last_solve_converged(false)
35{
36 _mfem_problem.setAssemblyLevel(
37 getParam<MooseEnum>("assembly_level").getEnum<mfem::AssemblyLevel>());
38}
39
40void
46
47void
49{
50 if (_app.isRecovering())
51 {
52 _console << "\nCannot recover steady solves!\nExiting...\n" << std::endl;
53 return;
54 }
55
56 _time_step = 0;
60
61 preExecute();
62
64
65 // first step in any steady state solve is always 1 (preserving backwards compatibility)
66 _time_step = 1;
69 {
71 return;
72 }
74
76
79
80 // need to keep _time in sync with _time_step to get correct output
86
87 {
88 TIME_SECTION("final", 1, "Executing Final Objects")
96 }
97
99}
100
101#endif
registerMooseObject("MooseApp", MFEMSteady)
const ExecFlagType EXEC_PRE_MULTIAPP_SETUP
Definition Moose.C:57
const ExecFlagType EXEC_TIMESTEP_END
Definition Moose.C:37
const ExecFlagType EXEC_TIMESTEP_BEGIN
Definition Moose.C:38
const ExecFlagType EXEC_INITIAL
Definition Moose.C:31
const ExecFlagType EXEC_FINAL
Definition Moose.C:49
const ConsoleStream _console
An instance of helper class to write streams to the Console objects.
Executioners are objects that do the actual work of solving your problem.
Definition Executioner.h:37
static InputParameters validParams()
Definition Executioner.C:26
virtual void preExecute()
Override this for actions that should take place before execution.
Definition Executioner.h:73
virtual void postExecute()
Override this for actions that should take place after execution.
Definition Executioner.h:78
virtual void advanceState()
Advance all of the state holding vectors / datastructures so that we can move to the next timestep.
virtual void postExecute()
Method called at the end of the simulation.
bool execMultiApps(ExecFlagType type, bool auto_advance=true)
Execute the MultiApps associated with the ExecFlagType.
void timestepSetup() override
virtual void computeIndicators()
void finalizeMultiApps()
virtual Real & time() const
virtual void computeMarkers()
virtual void outputStep(ExecFlagType type)
Output the current step.
The main MOOSE class responsible for handling user-defined parameters in almost every MOOSE system.
void addParam(const std::string &name, const S &value, const std::string &doc_string)
These methods add an optional parameter and a documentation string to the InputParameters object.
void addClassDescription(const std::string &doc_string)
This method adds a description of the class that will be displayed in the input file syntax dump.
virtual bool solve() override
Solve routine provided by this object.
static InputParameters validParams()
virtual void execute(const ExecFlagType &exec_type) override
Convenience function for performing execution of MOOSE systems.
virtual void initialSetup() override
Definition MFEMProblem.C:85
MFEMSteady(const InputParameters &params)
Definition MFEMSteady.C:27
virtual void execute() override
Pure virtual execute function MUST be overridden by children classes.
Definition MFEMSteady.C:48
MFEMProblemSolve _mfem_problem_solve
Definition MFEMSteady.h:32
bool _last_solve_converged
Flag showing if the last solve converged.
Definition MFEMSteady.h:41
int & _time_step
Definition MFEMSteady.h:37
static InputParameters validParams()
Definition MFEMSteady.C:18
MFEMProblem & _mfem_problem
Definition MFEMSteady.h:31
virtual void init() override
Initialize the executioner.
Definition MFEMSteady.C:41
Real _system_time
Definition MFEMSteady.h:36
Real & _time
Definition MFEMSteady.h:38
bool isRecovering() const
Whether or not this is a "recover" calculation.
Definition MooseApp.C:1678
MooseApp & _app
The MOOSE application this is associated with.
Definition MooseBase.h:375