MFEMPostprocessor
Summary
Base class for MFEM postprocessors used to evaluate a single scalar.
Overview
MFEM postprocessors calculate scalar quantities from the (aux)variables, typically after each timestep.
An MFEMPostprocessor is derived from MFEMExecutedObject. Its ordering relative to MFEM initial conditions, aux kernels, transfers, and other MFEM postprocessors is determined automatically from detected data dependencies instead of manual execution groups.
The value of a postprocessor added to an MFEM problem is available as a spatially uniform scalar coefficient named after it, and so may be used anywhere a scalar coefficient is expected. This applies to postprocessors of all types, not only to those derived from MFEMPostprocessor, so that values calculated elsewhere and transferred in, such as from a subapp into a Receiver postprocessor, may also be used to build coefficients.
Such a coefficient reads the postprocessor's value whenever it is evaluated, and does not itself register a data dependency on the postprocessor supplying it. An object consuming the coefficient on the same execution flag as the postprocessor is executed on is therefore not ordered after it, and will see the value from the previous execution. Where the two would otherwise coincide, execute the supplying postprocessor on an earlier flag, as in the example below:
[Postprocessors<<<{"href": "../../../syntax/Postprocessors/index.html"}>>>]
# Coefficients built from postprocessor values are not ordered against the postprocessors
# supplying them, so this is executed on an earlier flag than the aux kernel scaling by it.
[DummyComparison]
type = PostprocessorComparison<<<{"description": "Compares two post-processors and produces a boolean value", "href": "../../postprocessors/PostprocessorComparison.html"}>>>
value_a<<<{"description": "The first post-processor or value in the comparison"}>>> = 7
value_b<<<{"description": "The second post-processor or value in the comparison"}>>> = 77
comparison_type<<<{"description": "The type of comparison to perform. Options are: equals greater_than_equals less_than_equals greater_than less_than"}>>> = less_than
execute_on<<<{"description": "The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html."}>>> = INITIAL
[]
[UnscaledError]
type = MFEMVectorL2Error<<<{"description": "Computes L2 error $\\left\\Vert \\vec u_{ex} - \\vec u_{h}\\right\\Vert_{\\rm L2}$ for vector gridfunctions.", "href": "MFEMVectorL2Error.html"}>>>
variable<<<{"description": "Name of the vector variable of which to find the norm of the error."}>>> = unscaled
function<<<{"description": "The analytic solution to compare against. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = source
[]
[FunctionScaledError]
type = MFEMVectorL2Error<<<{"description": "Computes L2 error $\\left\\Vert \\vec u_{ex} - \\vec u_{h}\\right\\Vert_{\\rm L2}$ for vector gridfunctions.", "href": "MFEMVectorL2Error.html"}>>>
variable<<<{"description": "Name of the vector variable of which to find the norm of the error."}>>> = function_scaled
function<<<{"description": "The analytic solution to compare against. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = expected_function_scaled
[]
[PostprocessorScaledError]
type = MFEMVectorL2Error<<<{"description": "Computes L2 error $\\left\\Vert \\vec u_{ex} - \\vec u_{h}\\right\\Vert_{\\rm L2}$ for vector gridfunctions.", "href": "MFEMVectorL2Error.html"}>>>
variable<<<{"description": "Name of the vector variable of which to find the norm of the error."}>>> = postprocessor_scaled
function<<<{"description": "The analytic solution to compare against. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = source
[]
[ComplexFunctionScaledError]
type = MFEMComplexVectorL2Error<<<{"description": "Computes L2 error $\\left\\Vert \\vec u_{ex} - \\vec u_{h}\\right\\Vert_{\\rm L2}$ for complex vector gridfunctions.", "href": "MFEMComplexVectorL2Error.html"}>>>
variable<<<{"description": "Name of the vector variable of which to find the norm of the error."}>>> = complex_function_scaled
function_real<<<{"description": "The real part of the analytic solution to compare against. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = expected_function_scaled
function_imag<<<{"description": "The imaginary part of the analytic solution to compare against. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = expected_imag_function_scaled
[]
[]
[AuxKernels<<<{"href": "../../../syntax/AuxKernels/index.html"}>>>]
[copy]
type = MFEMVectorProjectionAux<<<{"description": "Projects a vector coefficient $\\vec u$, optionally scaled by a scalar coefficient $k$, onto a vector MFEM auxvariable, storing $k \\vec u$.", "href": "../auxkernels/MFEMVectorProjectionAux.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = unscaled
vector_coefficient<<<{"description": "Name of the vector coefficient to project. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = source_field
[]
[scale_by_function]
type = MFEMVectorProjectionAux<<<{"description": "Projects a vector coefficient $\\vec u$, optionally scaled by a scalar coefficient $k$, onto a vector MFEM auxvariable, storing $k \\vec u$.", "href": "../auxkernels/MFEMVectorProjectionAux.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = function_scaled
vector_coefficient<<<{"description": "Name of the vector coefficient to project. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = source_field
coefficient<<<{"description": "Name of the scalar coefficient k to scale the vector coefficient by. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a number."}>>> = ramp
[]
[scale_by_postprocessor]
type = MFEMVectorProjectionAux<<<{"description": "Projects a vector coefficient $\\vec u$, optionally scaled by a scalar coefficient $k$, onto a vector MFEM auxvariable, storing $k \\vec u$.", "href": "../auxkernels/MFEMVectorProjectionAux.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = postprocessor_scaled
vector_coefficient<<<{"description": "Name of the vector coefficient to project. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = source_field
coefficient<<<{"description": "Name of the scalar coefficient k to scale the vector coefficient by. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a number."}>>> = DummyComparison
[]
[complex_scale_by_function]
type = MFEMComplexVectorProjectionAux<<<{"description": "Projects a real and imaginary vector coefficient, optionally scaled by a real scalar coefficient, onto a complex vector MFEM auxvariable.", "href": "../auxkernels/MFEMComplexVectorProjectionAux.html"}>>>
variable<<<{"description": "The name of the variable that this object applies to"}>>> = complex_function_scaled
vector_coefficient_real<<<{"description": "Name of the real part of the vector coefficient to project. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = source_field
vector_coefficient_imag<<<{"description": "Name of the imaginary part of the vector coefficient to project. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a numeric vector value (enclosed in curly braces)."}>>> = imag_source
coefficient<<<{"description": "Name of the real scalar coefficient k to scale both parts of the vector coefficient by. A functor is any of the following: a variable, an MFEM material property, a function, a postprocessor or a number."}>>> = ramp
[]
[](test/tests/mfem/auxkernels/scaledvector.i)MFEMPostprocessor is a purely virtual base class. Derived classes should override the execute and getValue methods.