# 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 AuxiliarySystem. The NonlinearSystem or MooseEigenSystem contains the matrix and vectors used for solving the equations implemented through a combination of other objects in your simulations (Kernels, 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 FEProblem.

# Problem System

## Available Objects

• Moose App
• DisplacedProblem
• DumpObjectsProblemSingle purpose problem object that does not run the given input but allows deconstructing actions into their series of underlying Moose objects and variables.
• EigenProblem
• FEProblem
• 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.
• External Petsc Solver App
• ExternalPETScProblemProblem extension point for wrapping external applications
• Contact App
• AugmentedLagrangianContactProblemProblem that checks for convergence relative to a user-supplied reference quantity rather than the initial residual
• ReferenceResidualProblemProblem that checks for convergence relative to a user-supplied reference quantity rather than the initial residual