Key Components
Description
Platypus components are intended to be used together in MOOSE simulations with the MFEMProblem
Problem
type. In general, regular MOOSE objects and types should not be used in a sub-app using MFEMProblem
, with the notable exception of MOOSE Functions
, which may be used and included in Platypus problems. Documentation on the main components comprising Platypus can be found in the following files:
Problem Assembly
PlatypusApp: Defines relative dependencies between Actions when parsing user input files during problem set-up, and thus the order in which they are executed.
MFEMExecutioner: Controls the assembly and execution of an MFEM FE problem. Choice of device (CPU/GPU) and assembly level is controlled here.
MFEMProblem: Builder responsible for constructing and adding user requested objects to the FE problem.
MFEMProblemData: Struct containing data associated with the state of the MFEMProblem.
ProblemOperator: Responsible for updating the state of the system. For transient problems, the
ProblemOperator
is passed to the timestepper.
Problem Data
MFEMMesh: Builds an
mfem::ParMesh
object from the provided mesh input file.MFEMFESpace: Base class for defining the finite element space with respect to which an
MFEMVariable
is defined.MFEMVariable: Wrapper for set-up of
mfem::ParGridFunction
objects representing trial variables; stores a set of (true) degrees of freedom for a variable with respect to anMFEMFESpace
.MFEMKernel: Base class defining integrators contributing to the weak form built inside
EquationSystem
. Contains methods returningmfem::NonlinearFormIntegrators
andmfem::LinearFormIntegrators
to add to the weak form, along with marker arrays labelling the volumes the (domain) integrators are to be applied to.MFEMBoundaryCondition: Base class defining essential (Dirichlet) and integrated boundary conditions to apply to the equation system.
EquationSystem: Class responsible for defining and assembling the weak form into an
mfem::Operator
, that can be used to solve for the set of trial variables at a given time or timestep, which can be passed to anmfem::NewtonSolver
.