Bounds System

The Bounds system is designed to bound the value of a nonlinear variable. Whether the bound is an upper or lower bound depends on the parameters passed to the Bounds object. The bound may be spatially and time-dependent, and even depend on other simulation quantities, as implemented in the particular Bounds object used.

The auxiliary variable that serves as the variable parameter of a Bounds object is not actually used or even set in the computation. However, its type is used to decide if the Bounds loop will be 'nodal' (loop on all nodes) or 'elemental' (loop on quadrature points in elements). Its block restriction is used to define where the bounds is applied. It may be re-used for multiple bounds objects.

commentnote

Only nodal and constant elemental variables are supported at this time.

The Bounds system supports both finite element and finite volume variables. Only elemental bounds should be used for finite volume variables.

Note that in order for Bounds to have an effect, the user has to specify the PETSc options -snes_type vinewtonssls or -snes_type vinewtonrsls. A warning will be generated if neither option is specified. The PETSc manual pages for the vinewtonssls algorithm can be found here while the manual page for vinewtonrsls can be found here.

Example syntax

In the following example, a lower and an upper bound are applied to two variables u and v using the same auxiliary variable bounds_dummy and four Bounds objects.

[Variables]
  [u]
    order = FIRST
    family = LAGRANGE
  []

  [v]
    order = FIRST
    family = LAGRANGE
  []
[]

[AuxVariables]
  [bounds_dummy]
    order = FIRST
    family = LAGRANGE
  []
[]

[Bounds]
  [u_upper_bound]
    type = ConstantBoundsAux
    variable = bounds_dummy
    bounded_variable = u
    bound_type = upper
    bound_value = 1
  []
  [u_lower_bound]
    type = ConstantBoundsAux
    variable = bounds_dummy
    bounded_variable = u
    bound_type = lower
    bound_value = 0
  []

  [v_upper_bound]
    type = ConstantBoundsAux
    variable = bounds_dummy
    bounded_variable = v
    bound_type = upper
    bound_value = 3
  []
  [v_lower_bound]
    type = ConstantBoundsAux
    variable = bounds_dummy
    bounded_variable = v
    bound_type = lower
    bound_value = -1
  []
[]
(../moose/test/tests/auxkernels/bounds/constant_bounds.i)

Available Objects

  • Moose App
  • ADFunctorElementalGradientAuxEvaluates the gradient of a functor (variable, function or functor material property) on the current element or quadrature point.
  • ADVectorMaterialRealVectorValueAuxConverts a vector-quantity material property into a vector auxiliary variable
  • ArrayParsedAuxSets field array variable values to the evaluation of a parsed expression.
  • BuildArrayVariableAuxCombines multiple standard variables into an array variable.
  • FunctionArrayAuxAuxiliary Kernel that creates and updates an array field variable by sampling functions through space and time.
  • FunctorElementalGradientAuxEvaluates the gradient of a functor (variable, function or functor material property) on the current element or quadrature point.
  • ParsedVectorAuxSets a field vector variable value to the evaluation of a parsed expression.
  • TagVectorArrayVariableAuxCouple a tagged vector, and return its evaluations at degree of freedom indices corresponding to the coupled array variable.
  • TagVectorArrayVariableValueAuxCouple a tagged vector, and return its array value.
  • VectorFunctionAuxAuxiliary Kernel that creates and updates a vector field variable by sampling a Function object, via the vectorValue method, through space and time.
  • VectorMaterialRealVectorValueAuxConverts a vector-quantity material property into a vector auxiliary variable
  • Electromagnetics App
  • ADCurrentDensityCalculates the current density vector field (in A/m^2) when given electrostatic potential (electrostatic = true, default) or electric field.
  • CurrentDensityCalculates the current density vector field (in A/m^2) when given electrostatic potential (electrostatic = true, default) or electric field.

Available Actions