Connects MFEMProblem's MOOSE solver objects to EquationSystem's mathematics. More...
#include <ProblemOperatorBase.h>
Public Member Functions | |
| ProblemOperatorBase (MFEMProblem &problem) | |
| virtual | ~ProblemOperatorBase ()=default |
| virtual void | SetGridFunctions () |
| virtual void | SetTrialVariablesFromTrueVectors () |
| virtual void | Init () |
| virtual void | Solve ()=0 |
| PerfGraph & | perfGraph () |
| Get the PerfGraph. | |
Static Public Member Functions | |
| static InputParameters | validParams () |
Public Attributes | |
| mfem::Array< int > | _block_true_offsets_test |
| mfem::Array< int > | _block_true_offsets_trial |
| mfem::BlockVector | _true_x |
| mfem::BlockVector | _true_rhs |
| mfem::BlockVector | _true_solution |
| Persistent true-DoF solution vector backing this operator's trial grid functions after Init(). | |
Protected Member Functions | |
| void | SolveWithOperator (mfem::Operator &system_operator, mfem::Operator &linear_operator, const mfem::Vector &rhs, mfem::Vector &x) |
| Solve the current system operator using the configured nonlinear and linear solvers. | |
| void | SolveWithOperator (mfem::Operator &system_operator, const mfem::Vector &rhs, mfem::Vector &x) |
| Solve the current system operator using system_operator.GetGradient(x) as the linear operator. | |
| PerfID | registerTimedSection (const std::string §ion_name, const unsigned int level) const |
| Call to register a named section for timing. | |
| PerfID | registerTimedSection (const std::string §ion_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const |
| Call to register a named section for timing. | |
| std::string | timedSectionName (const std::string §ion_name) const |
Protected Attributes | |
| MFEMProblem & | _problem |
| Reference to the current problem. | |
| MFEMProblemData & | _problem_data |
| std::vector< std::string > | _trial_var_names |
| Vector of names of state gridfunctions used in formulation, ordered by appearance in block vector during solve. | |
| std::vector< std::string > | _test_var_names |
| std::vector< mfem::ParGridFunction * > | _trial_variables |
| std::vector< mfem::ParGridFunction * > | _test_variables |
| mfem::Vector * | _trial_true_vector = nullptr |
| MooseApp & | _pg_moose_app |
| The MooseApp that owns the PerfGraph. | |
| const std::string | _prefix |
| A prefix to use for all sections. | |
Connects MFEMProblem's MOOSE solver objects to EquationSystem's mathematics.
Three distinct layers collaborate to run an MFEM solve inside MOOSE:
Definition at line 58 of file ProblemOperatorBase.h.
| Moose::MFEM::ProblemOperatorBase::ProblemOperatorBase | ( | MFEMProblem & | problem | ) |
Definition at line 18 of file ProblemOperatorBase.C.
|
virtualdefault |
|
virtual |
Reimplemented in Moose::MFEM::TimeDependentEquationSystemProblemOperator.
Definition at line 50 of file ProblemOperatorBase.C.
Referenced by Moose::MFEM::TimeDependentEquationSystemProblemOperator::Init().
|
inherited |
Get the PerfGraph.
Definition at line 86 of file PerfGraphInterface.C.
Referenced by CommonOutputAction::act(), PerfGraphData::finalize(), PerfGraphReporter::finalize(), and PerfGraphOutput::output().
|
protectedinherited |
Call to register a named section for timing.
| section_name | The name of the code section to be timed |
| level | The importance of the timer - lower is more important (0 will always come out) |
Definition at line 61 of file PerfGraphInterface.C.
|
protectedinherited |
Call to register a named section for timing.
| section_name | The name of the code section to be timed |
| level | The importance of the timer - lower is more important (0 will always come out) |
| live_message | The message to be printed to the screen during execution |
| print_dots | Whether or not progress dots should be printed for this section |
Definition at line 72 of file PerfGraphInterface.C.
|
virtual |
Reimplemented in Moose::MFEM::ComplexEquationSystemProblemOperator, Moose::MFEM::EquationSystemProblemOperator, Moose::MFEM::ProblemOperator, Moose::MFEM::TimeDependentEquationSystemProblemOperator, and Moose::MFEM::TimeDependentProblemOperator.
Definition at line 26 of file ProblemOperatorBase.C.
Referenced by Init(), Moose::MFEM::ProblemOperator::SetGridFunctions(), and Moose::MFEM::TimeDependentProblemOperator::SetGridFunctions().
|
virtual |
Definition at line 68 of file ProblemOperatorBase.C.
Referenced by Moose::MFEM::TimeDependentEquationSystemProblemOperator::Solve().
|
pure virtual |
|
inlineprotected |
Solve the current system operator using system_operator.GetGradient(x) as the linear operator.
Definition at line 88 of file ProblemOperatorBase.h.
|
protected |
Solve the current system operator using the configured nonlinear and linear solvers.
Definition at line 80 of file ProblemOperatorBase.C.
Referenced by Moose::MFEM::TimeDependentEquationSystemProblemOperator::ImplicitSolve(), Moose::MFEM::ComplexEquationSystemProblemOperator::Solve(), Moose::MFEM::EquationSystemProblemOperator::Solve(), and SolveWithOperator().
|
protectedinherited |
section_name.Optionally adds a prefix if one is defined.
Definition at line 55 of file PerfGraphInterface.C.
Referenced by PerfGraphInterface::registerTimedSection(), and PerfGraphInterface::registerTimedSection().
|
staticinherited |
Definition at line 16 of file PerfGraphInterface.C.
Referenced by Convergence::validParams().
| mfem::Array<int> Moose::MFEM::ProblemOperatorBase::_block_true_offsets_test |
Definition at line 69 of file ProblemOperatorBase.h.
Referenced by SetGridFunctions(), Moose::MFEM::ComplexEquationSystemProblemOperator::SetGridFunctions(), Moose::MFEM::ProblemOperator::SetGridFunctions(), and Moose::MFEM::TimeDependentProblemOperator::SetGridFunctions().
| mfem::Array<int> Moose::MFEM::ProblemOperatorBase::_block_true_offsets_trial |
Definition at line 70 of file ProblemOperatorBase.h.
Referenced by Init(), SetGridFunctions(), Moose::MFEM::ComplexEquationSystemProblemOperator::SetGridFunctions(), Moose::MFEM::ProblemOperator::SetGridFunctions(), and Moose::MFEM::TimeDependentProblemOperator::SetGridFunctions().
|
protectedinherited |
The MooseApp that owns the PerfGraph.
Definition at line 135 of file PerfGraphInterface.h.
Referenced by PerfGraphInterface::perfGraph().
|
protectedinherited |
A prefix to use for all sections.
Definition at line 138 of file PerfGraphInterface.h.
Referenced by PerfGraphInterface::timedSectionName().
|
protected |
Reference to the current problem.
Definition at line 94 of file ProblemOperatorBase.h.
Referenced by Moose::MFEM::EigenproblemESProblemOperator::FormEquationSystemOperator(), Moose::MFEM::TimeDependentEquationSystemProblemOperator::Init(), and Moose::MFEM::TimeDependentEquationSystemProblemOperator::Solve().
|
protected |
Definition at line 95 of file ProblemOperatorBase.h.
Referenced by Moose::MFEM::TimeDependentEquationSystemProblemOperator::ImplicitSolve(), Moose::MFEM::TimeDependentEquationSystemProblemOperator::Init(), Moose::MFEM::EigenproblemESProblemOperator::RecoverEigenproblemSolution(), SetGridFunctions(), Moose::MFEM::ComplexEquationSystemProblemOperator::SetGridFunctions(), Moose::MFEM::EigenproblemESProblemOperator::Solve(), Moose::MFEM::TimeDependentEquationSystemProblemOperator::Solve(), and SolveWithOperator().
|
protected |
Definition at line 100 of file ProblemOperatorBase.h.
Referenced by SetGridFunctions(), Moose::MFEM::ComplexEquationSystemProblemOperator::SetGridFunctions(), Moose::MFEM::EquationSystemProblemOperator::SetGridFunctions(), and Moose::MFEM::TimeDependentEquationSystemProblemOperator::SetGridFunctions().
|
protected |
Definition at line 102 of file ProblemOperatorBase.h.
Referenced by SetGridFunctions(), Moose::MFEM::ProblemOperator::SetGridFunctions(), and Moose::MFEM::TimeDependentProblemOperator::SetGridFunctions().
|
protected |
Definition at line 103 of file ProblemOperatorBase.h.
Referenced by Init(), SetTrialVariablesFromTrueVectors(), and Moose::MFEM::TimeDependentEquationSystemProblemOperator::Solve().
|
protected |
Vector of names of state gridfunctions used in formulation, ordered by appearance in block vector during solve.
Definition at line 99 of file ProblemOperatorBase.h.
Referenced by Moose::MFEM::EigenproblemESProblemOperator::RecoverEigenproblemSolution(), SetGridFunctions(), Moose::MFEM::ComplexEquationSystemProblemOperator::SetGridFunctions(), Moose::MFEM::EquationSystemProblemOperator::SetGridFunctions(), Moose::MFEM::TimeDependentEquationSystemProblemOperator::SetGridFunctions(), and Moose::MFEM::TimeDependentEquationSystemProblemOperator::Solve().
|
protected |
Definition at line 101 of file ProblemOperatorBase.h.
Referenced by Init(), SetGridFunctions(), Moose::MFEM::ProblemOperator::SetGridFunctions(), Moose::MFEM::TimeDependentProblemOperator::SetGridFunctions(), and SetTrialVariablesFromTrueVectors().
| mfem::BlockVector Moose::MFEM::ProblemOperatorBase::_true_rhs |
Definition at line 72 of file ProblemOperatorBase.h.
Referenced by Moose::MFEM::EquationSystemProblemOperator::FormEquationSystemOperator(), Moose::MFEM::TimeDependentEquationSystemProblemOperator::FormEquationSystemOperator(), Moose::MFEM::TimeDependentEquationSystemProblemOperator::ImplicitSolve(), SetGridFunctions(), Moose::MFEM::ComplexEquationSystemProblemOperator::SetGridFunctions(), Moose::MFEM::ComplexEquationSystemProblemOperator::Solve(), and Moose::MFEM::EquationSystemProblemOperator::Solve().
| mfem::BlockVector Moose::MFEM::ProblemOperatorBase::_true_solution |
Persistent true-DoF solution vector backing this operator's trial grid functions after Init().
Each operator owns its own, because Init() aliases its trial grid functions into this vector; sharing one across operators would make each alias the same storage.
Definition at line 77 of file ProblemOperatorBase.h.
Referenced by Init().
| mfem::BlockVector Moose::MFEM::ProblemOperatorBase::_true_x |
Definition at line 72 of file ProblemOperatorBase.h.
Referenced by Moose::MFEM::EigenproblemESProblemOperator::FormEquationSystemOperator(), Moose::MFEM::EquationSystemProblemOperator::FormEquationSystemOperator(), Moose::MFEM::TimeDependentEquationSystemProblemOperator::FormEquationSystemOperator(), Moose::MFEM::TimeDependentEquationSystemProblemOperator::ImplicitSolve(), SetGridFunctions(), Moose::MFEM::ComplexEquationSystemProblemOperator::SetGridFunctions(), Moose::MFEM::ComplexEquationSystemProblemOperator::Solve(), and Moose::MFEM::EquationSystemProblemOperator::Solve().