Problem system overview
The Problem class is one of the core extension points in MOOSE. Problems are designed to hold the
EquationSystems objects (from libMesh) that house the numerical systems we are ultimately solving for our computing.
Fortunately when you are first getting started with MOOSE you normally don't have to worry or do anything special with the Problem object. MOOSE automatically constructs a suitable Problem for your simulation type taking into account the other types of objects present in the input file. Most simulations use the
FEProblem class, which contains a single
NonlinearSystem and single
AuxiliarySystem or a single
MooseEigenSystem and single
MooseEigenSystem contains the matrix and vectors used for solving the equations implemented through a combination of other objects in your simulations (
BCs, etc.). The
AuxiliarySystem houses the solution vectors use to hold computed solutions or values.
As your application grows in complexity, you may find it useful or necessary to create your own problems to extend default behavior provided by the core MOOSE framework. Common examples include, specialized convergence tests, etc.
Automatic Problem Creation
The automatic problem creation is handled for you by MOOSE. In a normal input file that does not contain a special
[Problem] block, MOOSE will create a suitable Problem for you. If however, you need to change specific system related parameters you may find yourself adding a
[Problem] block with name/value pairs. Different types of Problems may be instantiated by using the
/Problem/type whose default value is
- Moose App
- DumpObjectsProblemSingle purpose problem object that does not run the given input but allows deconstructing actions into their series of underlying Moose objects and variables.
- FEProblemA normal (default) Problem object that contains a single NonlinearSystem and a single AuxiliarySystem object.
- ReferenceResidualProblemProblem that checks for convergence relative to a user-supplied reference quantity rather than the initial residual
- Level Set App
- LevelSetProblemA specilized problem class that adds a custom call to MultiAppTransfer execution to transfer adaptivity for the level set reinitialization.
- LevelSetReinitializationProblemA specialied problem that has a method for resetting time for level set reinitialization execution.
- Contact App
- AugmentedLagrangianContactProblemManages nested solution for augmented Lagrange contact
- External Petsc Solver App
- ExternalPETScProblemProblem extension point for wrapping external applications