- vThe coupled variable whose components are coupled to AuxVariableC++ Type:std::vector<VariableName> Unit:(no unit assumed) Controllable:No Description:The coupled variable whose components are coupled to AuxVariable 
- variableThe name of the variable that this object applies toC++ Type:AuxVariableName Unit:(no unit assumed) Controllable:No Description:The name of the variable that this object applies to 
- vector_tagName of the vector tag to extract values fromC++ Type:TagName Controllable:No Description:Name of the vector tag to extract values from 
TagVectorAux
The value of a tagged vector for a given node and a given variable is coupled to the current AuxVariable. TagVectorAux return the coupled nodal value. AuxVariable then is written out in an exodus file.
Extract DOF values from a tagged vector into an AuxVariable
Input Parameters
- blockThe list of blocks (ids or names) that this object will be appliedC++ Type:std::vector<SubdomainName> Controllable:No Description:The list of blocks (ids or names) that this object will be applied 
- boundaryThe list of boundaries (ids or names) from the mesh where this object appliesC++ Type:std::vector<BoundaryName> Controllable:No Description:The list of boundaries (ids or names) from the mesh where this object applies 
- check_boundary_restrictedTrueWhether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a meshDefault:True C++ Type:bool Controllable:No Description:Whether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh 
- remove_variable_scalingFalseWhether to remove variable scaling from DOF value. If false, values are directly extracted from the tag vector, and potentially with scaling applied. If true, any scaling of variables is undone in the reported values.Default:False C++ Type:bool Controllable:No Description:Whether to remove variable scaling from DOF value. If false, values are directly extracted from the tag vector, and potentially with scaling applied. If true, any scaling of variables is undone in the reported values. 
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.C++ Type:std::vector<std::string> Controllable:No Description:Adds user-defined labels for accessing object parameters via control logic. 
- enableTrueSet the enabled status of the MooseObject.Default:True C++ Type:bool Controllable:Yes Description:Set the enabled status of the MooseObject. 
- search_methodnearest_node_connected_sidesChoice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).Default:nearest_node_connected_sides C++ Type:MooseEnum Options:nearest_node_connected_sides, all_proximate_sides Controllable:No Description:Choice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes). 
- seed0The seed for the master random number generatorDefault:0 C++ Type:unsigned int Controllable:No Description:The seed for the master random number generator 
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.Default:False C++ Type:bool Controllable:No Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used. 
Advanced Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.C++ Type:MaterialPropertyName Unit:(no unit assumed) Controllable:No Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character. 
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.Default:False C++ Type:bool Controllable:No Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction. 
Material Property Retrieval Parameters
Input Files
- (test/tests/kokkos/tag/kokkos_tag_nodal_kernels.i)
- (modules/scalar_transport/test/tests/ncp-lms/diagonal-ncp-lm-nodal-enforcement-nodal-forces.i)
- (test/tests/tag/2d_diffusion_tag_vector.i)
- (modules/solid_mechanics/test/tests/uel/small_test_umat_states_fields_gradient.i)
- (modules/optimization/test/tests/optimizationreporter/point_loads/adjoint.i)
- (modules/solid_mechanics/test/tests/uel/small_test_expanded_umat.i)
- (modules/solid_mechanics/test/tests/uel/tensile_uel_umat_moose.i)
- (test/tests/tag/not_zeroed_tag_vector.i)
- (test/tests/tag/2d_diffusion_vector_tag_test.i)
- (modules/solid_mechanics/test/tests/uel/reference.i)
- (test/tests/tag/tag_dirac_kernels.i)
- (test/tests/tag/tag_interface_kernels.i)
- (modules/solid_mechanics/test/tests/uel/tensile_uel_umat_moose_temperature.i)
- (modules/heat_transfer/test/tests/convective_flux_function/convective_flux_function.i)
- (test/tests/tag/tag-linearfv.i)
- (test/tests/tag/2d_diffusion_dg_tag.i)
- (test/tests/tag/eigen_tag.i)
- (modules/solid_mechanics/test/tests/uel/small_test_uel_states_fields_gradient.i)
- (modules/solid_mechanics/test/tests/uel/small.i)
- (test/tests/tag/tag-fv.i)
- (modules/solid_mechanics/test/tests/uel/small_test_expanded.i)
- (test/tests/tag/wrong_tag_type.i)
- (modules/solid_mechanics/test/tests/uel/uel_test_print.i)
- (test/tests/tag/old_eigen_tag.i)
- (modules/solid_mechanics/test/tests/uel/small_test_uel_states_fields.i)
- (test/tests/kokkos/tag/kokkos_tag_neumann.i)
- (test/tests/tag/tag_nodal_kernels.i)
- (modules/solid_mechanics/test/tests/uel/small_test_umat_states_fields.i)
- (modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/adjoint.i)
- (modules/scalar_transport/test/tests/ncp-lms/diagonal-ncp-lm-nodal-enforcement.i)
- (modules/navier_stokes/examples/laser-welding/2d-fv.i)
- (modules/solid_mechanics/test/tests/uel/small_test.i)
- (test/tests/tag/tag_neumann.i)
Child Objects
References
No citations exist within this document.(test/tests/kokkos/tag/kokkos_tag_nodal_kernels.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 10
  ny = 10
[]
[Variables]
  [u]
  []
  [nodal_ode]
  []
[]
[KokkosKernels]
  [diff]
    type = KokkosDiffusion
    variable = u
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  []
  [time]
    type = KokkosTimeDerivative
    variable = u
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  []
[]
[KokkosNodalKernels]
  [td]
    type = KokkosTimeDerivativeNodalKernel
    variable = nodal_ode
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  []
  [constant_rate]
    type = KokkosConstantRate
    variable = nodal_ode
    rate = 1.0
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1 vec_tag2'
  []
[]
[KokkosBCs]
  [left]
    type = KokkosDirichletBC
    variable = u
    boundary = left
    value = 0
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  []
  [right]
    type = KokkosDirichletBC
    variable = u
    boundary = right
    value = 10
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  []
[]
[Problem]
  type = TagTestProblem
  test_tag_vectors =  'time nontime residual vec_tag1 vec_tag2'
  test_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_vectors  = 'vec_tag1 vec_tag2'
[]
[AuxVariables]
  [tag_variable1]
    order = FIRST
    family = LAGRANGE
  []
  [tag_variable2]
    order = FIRST
    family = LAGRANGE
  []
[]
[AuxKernels]
  [TagVectorAux1]
    type = TagVectorAux
    variable = tag_variable1
    v = nodal_ode
    vector_tag = vec_tag2
  []
  [TagVectorAux2]
    type = TagMatrixAux
    variable = tag_variable2
    v = u
    matrix_tag = mat_tag2
  []
[]
[Executioner]
  type = Transient
  num_steps = 10
  nl_rel_tol = 1e-08
  dt = 0.01
[]
[Outputs]
  exodus = true
[]
(modules/scalar_transport/test/tests/ncp-lms/diagonal-ncp-lm-nodal-enforcement-nodal-forces.i)
l=10
nx=100
num_steps=${l}
dt=1
[GlobalParams]
  lm_sign_positive = false
[]
[Problem]
  extra_tag_vectors = 'positive diffusion rest'
[]
[Mesh]
  type = GeneratedMesh
  dim = 1
  xmax = ${l}
  nx = ${nx}
  elem_type = EDGE3
[]
[Variables]
  [u]
    order = SECOND
  []
  [lm]
    order = SECOND
  []
[]
[AuxVariables]
  [positive]
    order = SECOND
  []
  [diffusion_lm]
    order = SECOND
  []
  [rest_lm]
    order = SECOND
  []
  [diffusion_primal]
    order = SECOND
  []
  [rest_primal]
    order = SECOND
  []
[]
[AuxKernels]
  [positive]
    type = TagVectorAux
    variable = positive
    v = lm
    vector_tag = positive
  []
  [diffusion_lm]
    type = TagVectorAux
    variable = diffusion_lm
    v = lm
    vector_tag = diffusion
  []
  [rest_lm]
    type = TagVectorAux
    variable = rest_lm
    v = lm
    vector_tag = rest
  []
  [diffusion_primal]
    type = TagVectorAux
    variable = diffusion_primal
    v = u
    vector_tag = diffusion
  []
  [rest_primal]
    type = TagVectorAux
    variable = rest_primal
    v = u
    vector_tag = rest
  []
[]
[ICs]
  [u]
    type = FunctionIC
    variable = u
    function = '${l} - x'
  []
[]
[Kernels]
  [time]
    type = TimeDerivativeLM
    variable = u
    lm_variable = lm
    extra_vector_tags = 'rest'
  []
  [diff]
    type = Diffusion
    variable = u
    extra_vector_tags = 'diffusion'
  []
  [diff_lm]
    type = LMDiffusion
    variable = lm
    primal_variable = u
    extra_vector_tags = 'diffusion'
  []
  [ffn]
    type = BodyForceLM
    variable = u
    lm_variable = lm
    function = '-1'
    extra_vector_tags = 'rest'
  []
[]
[NodalKernels]
  [forces]
    type = CoupledForceNodalKernel
    variable = u
    v = lm
    extra_vector_tags = 'rest'
  []
  [corresponding_lm_portion]
    type = ReactionNodalKernel
    variable = lm
    coeff = 1
    extra_vector_tags = 'rest'
  []
  [positive_constraint]
    type = LowerBoundNodalKernel
    extra_vector_tags = positive
    variable = lm
    v = u
    # exclude_boundaries = 'left right'
  []
[]
[BCs]
  [left]
    type = DirichletBC
    boundary = left
    value = ${l}
    variable = u
  []
  [right]
    type = DirichletBC
    boundary = right
    value = 0
    variable = u
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  num_steps = ${num_steps}
  dt = ${dt}
  dtmin = ${dt}
  solve_type = NEWTON
  petsc_options_iname = '-snes_max_linear_solve_fail -ksp_max_it -pc_factor_levels'
  petsc_options_value = '0                           30          16'
[]
[Outputs]
  exodus = true
  csv = true
  [dof]
    type = DOFMap
    execute_on = 'initial'
  []
[]
[Postprocessors]
  [active_lm]
    type = GreaterThanLessThanPostprocessor
    variable = lm
    execute_on = 'nonlinear timestep_end'
    value = 1e-12
  []
  [violations]
    type = GreaterThanLessThanPostprocessor
    variable = u
    execute_on = 'nonlinear timestep_end'
    value = -1e-12
    comparator = 'less'
  []
[]
[Debug]
  show_var_residual_norms = true
[]
(test/tests/tag/2d_diffusion_tag_vector.i)
[Mesh]
  [square]
    type = GeneratedMeshGenerator
    nx = 2
    ny = 2
    dim = 2
  []
[]
[Variables]
  [u]
    order = FIRST
    family = LAGRANGE
  []
[]
[AuxVariables]
  [tag_variable1]
    order = FIRST
    family = LAGRANGE
  []
  [tag_variable2]
    order = FIRST
    family = LAGRANGE
  []
[]
[Kernels]
  [diff]
    type = Diffusion
    variable = u
    extra_vector_tags = 'vec_tag1 vec_tag2'
  []
[]
[AuxKernels]
  active = 'TagVectorAux1 TagVectorAux2'
  [TagVectorAux1]
    type = TagVectorAux
    variable = tag_variable1
    v = u
    vector_tag = vec_tag1
  []
  [on_the_fly]
    type = OnTheFlyTagVectorAux
    variable = tag_variable1
    v = u
    vector_tag = vec_tag1
  []
  [TagVectorAux2]
    type = TagVectorAux
    variable = tag_variable2
    v = u
    vector_tag = vec_tag2
  []
[]
[BCs]
  [left]
    type = DirichletBC
    variable = u
    boundary = 3
    value = 0
    preset = false
    extra_vector_tags = vec_tag1
  []
  [right]
    type = DirichletBC
    variable = u
    boundary = 1
    value = 1
    preset = false
    extra_vector_tags = vec_tag2
  []
[]
[Problem]
  type = FEProblem
  extra_tag_vectors  = 'vec_tag1 vec_tag2'
[]
[Executioner]
  type = Steady
  solve_type = 'NEWTON'
[]
[Outputs]
  file_base = tag_vector_out
  exodus = true
[]
(modules/solid_mechanics/test/tests/uel/small_test_umat_states_fields_gradient.i)
[GlobalParams]
  displacements = 'disp_x disp_y'
[]
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 20
    ny = 10
    xmax = 10
    ymax = 3
    elem_type = TRI3
  []
  [pin]
    type = ExtraNodesetGenerator
    nodes = 106
    new_boundary = pin
    input = gen
  []
  displacements = 'disp_x disp_y'
[]
[AuxVariables]
  [temperature]
    initial_condition = 400
  []
  [voltage]
    initial_condition = 210
  []
[]
[AuxKernels]
  [temperature]
    type = FunctionAux
    function = '25* x + 40 * y + 400'
    variable = temperature
  []
  [voltage]
    type = FunctionAux
    function = '10 * x + 4 * y + 210'
    variable = voltage
  []
[]
[BCs]
  [left_x]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [left_y]
    type = DirichletBC
    variable = disp_y
    boundary = pin
    value = 0
  []
  inactive = 'right_dirichlet'
  [right_neumann]
    type = FunctionNeumannBC
    variable = disp_x
    function = t/10
    boundary = right
  []
  [right_dirichlet]
    type = FunctionDirichletBC
    variable = disp_x
    function = t/10
    boundary = right
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    add_variables = true
    strain = SMALL
    incremental = true
    extra_vector_tags = 'kernel_residual'
  []
[]
[Materials]
  [umat]
    type = AbaqusUMATStress
    constant_properties = '100 0.3'
    plugin = '../../plugins/small_elastic_tri_states'
    num_state_vars = 2
    use_one_based_indexing = true
    temperature = 'temperature'
    external_fields = 'voltage'
  []
[]
[Problem]
  kernel_coverage_check = false
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Executioner]
  type = Transient
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  dt = 1
  num_steps = 15
  [Quadrature]
   type = GAUSS
   order = CONSTANT
  []
[]
[Postprocessors]
  [delta_l]
    type = SideAverageValue
    variable = disp_x
    boundary = right
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [V]
    type = ElementIntegralMaterialProperty
    mat_prop = 1
    use_displaced_mesh = true
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]
[Outputs]
  exodus = true
  csv = true
[]
(modules/optimization/test/tests/optimizationreporter/point_loads/adjoint.i)
# DO NOT CHANGE THIS TEST
# this test is documented as an example in forceInv_pointLoads.md
# if this test is changed, the figures will need to be updated.
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 10
  ny = 10
  xmax = 1
  ymax = 1.4
[]
[Variables]
  [adjoint]
  []
[]
[Problem]
  extra_tag_vectors = 'ref'
[]
[AuxVariables]
  [residual_src]
  []
[]
[AuxKernels]
  [residual_src]
    type = TagVectorAux
    vector_tag = 'ref'
    v = 'adjoint'
    variable = 'residual_src'
  []
[]
[Variables]
  [adjoint]
  []
[]
[Kernels]
  [heat_conduction]
    type = MatDiffusion
    variable = adjoint
    diffusivity = thermal_conductivity
  []
[]
#-----every adjoint problem should have these two
[DiracKernels]
  [pt]
    type = ReporterPointSource
    variable = adjoint
    x_coord_name = misfit/measurement_xcoord
    y_coord_name = misfit/measurement_ycoord
    z_coord_name = misfit/measurement_zcoord
    value_name = misfit/misfit_values
    extra_vector_tags = 'ref'
  []
[]
[Reporters]
  [misfit]
    type = OptimizationData
  []
[]
[BCs]
  [left]
    type = DirichletBC
    variable = adjoint
    boundary = left
    value = 0
  []
  [right]
    type = DirichletBC
    variable = adjoint
    boundary = right
    value = 0
  []
  [bottom]
    type = DirichletBC
    variable = adjoint
    boundary = bottom
    value = 0
  []
  [top]
    type = DirichletBC
    variable = adjoint
    boundary = top
    value = 0
  []
[]
[Materials]
  [steel]
    type = GenericConstantMaterial
    prop_names = thermal_conductivity
    prop_values = 5
  []
[]
[Executioner]
  type = Steady
  solve_type = NEWTON
  nl_abs_tol = 1e-6
  nl_rel_tol = 1e-8
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
[]
[VectorPostprocessors]
  [gradient]
    type = PointValueSampler
    points = '0.2 0.2 0
              0.7 0.56 0
              0.4 1 0'
    variable = adjoint
    sort_by = id
  []
[]
[Outputs]
  console = false
  exodus = false
  file_base = 'adjoint'
[]
(modules/solid_mechanics/test/tests/uel/small_test_expanded_umat.i)
[GlobalParams]
  displacements = 'disp_x disp_y'
[]
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 20
    ny = 10
    xmax = 10
    ymax = 3
    elem_type = TRI3
  []
  [pin]
    type = ExtraNodesetGenerator
    nodes = 106
    new_boundary = pin
    input = gen
  []
  displacements = 'disp_x disp_y'
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
[]
[BCs]
  [left_x]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [left_y]
    type = DirichletBC
    variable = disp_y
    boundary = pin
    value = 0
  []
  inactive = 'right_dirichlet'
  [right_neumann]
    type = FunctionNeumannBC
    variable = disp_x
    function = t
    boundary = right
  []
  [right_dirichlet]
    type = FunctionDirichletBC
    variable = disp_x
    function = t/10
    boundary = right
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    add_variables = true
    strain = SMALL
    incremental = true
    extra_vector_tags = 'kernel_residual'
  []
[]
[Materials]
  [umat]
    type = AbaqusUMATStress
    constant_properties = '100 0.3'
    plugin = '../../plugins/small_elastic_tri'
    num_state_vars = 8
    use_one_based_indexing = false
  []
[]
[Problem]
  kernel_coverage_check = false
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Executioner]
  type = Transient
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  dt = 1
  num_steps = 15
[]
[Postprocessors]
  [delta_l]
    type = SideAverageValue
    variable = disp_x
    boundary = right
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [V]
    type = ElementIntegralMaterialProperty
    mat_prop = 1
    use_displaced_mesh = true
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]
[Outputs]
  exodus = true
  csv = true
[]
(modules/solid_mechanics/test/tests/uel/tensile_uel_umat_moose.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  [mesh]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 1
    ny = 1
    nz = 1
    elem_type = HEX8
  []
  [extra_nodeset]
    type = ExtraNodesetGenerator
    input = mesh
    new_boundary = 'master'
    coord = '1.0 1.0 1.0'
  []
[]
# [AuxVariables]
#   [temperature]
#     initial_condition = 500
#   []
# []
[Variables]
  [disp_x]
  []
  [disp_y]
  []
  [disp_z]
  []
[]
[Functions]
  [function_pull]
    type = PiecewiseLinear
    x = '0 100'
    y = '0 0.1'
  []
[]
[Constraints]
  [one]
    type = LinearNodalConstraint
    variable = disp_x
    primary = '6'
    secondary_node_ids = '1 2 5'
    penalty = 1.0e8
    formulation = kinematic
    weights = '1'
  []
  [two]
    type = LinearNodalConstraint
    variable = disp_z
    primary = '6'
    secondary_node_ids = '4 5 7'
    penalty = 1.0e8
    formulation = kinematic
    weights = '1'
  []
[]
[BCs]
  [symmy]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [symmx]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [symmz]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  # What's done below is to capture the weird constraints
  [axial_load]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = 'top'
    function = function_pull
  []
[]
[UserObjects]
  [uel]
    type = AbaqusUserElement
    variables = 'disp_x disp_y'
    plugin = '../../../../solid_mechanics/examples/uel_build/uel'
    use_displaced_mesh = false
    #temperature = temperature # TODO
    #use_one_based_indexing = true # TODO
    jtype = 17
    num_state_vars = 177
    constant_properties = '190.0 28.0 3.0 1.0 6.0 0.0 0.0 23.0 25.0 26.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 '
                          '0.0 0.0 0.0 0.0 0.0 31700000.0 0.32 6.67e-06 1e-08 5000.0 4.0' # 27 properties
    extra_vector_tags = 'kernel_residual'
  []
[]
[Problem]
  kernel_coverage_check = false
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  l_max_its = 100
  l_tol = 1e-8
  nl_max_its = 50
  nl_rel_tol = 1e-8
  nl_abs_tol = 1e-8
  dtmin = 1
  dt = 5
  end_time = 100
[]
[Outputs]
  exodus = true
[]
(test/tests/tag/not_zeroed_tag_vector.i)
[Problem]
  extra_tag_vectors = zeroed_tag
  not_zeroed_tag_vectors = not_zeroed_tag
[]
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 2
  xmin = -1
  xmax = 1
[]
[Variables]
  [u]
  []
[]
[Kernels]
  [null]
    type = NullKernel
    variable = u
  []
[]
[Functions]
  [switch_off]
    type = ParsedFunction
    expression = 'if(t < 1.0001, 1, 0)'
  []
[]
[DiracKernels]
  [point_source1]
    type = FunctionDiracSource
    variable = u
    function = switch_off
    point = '0 0 0'
    vector_tags = 'zeroed_tag not_zeroed_tag'
  []
[]
[AuxVariables]
  [not_zeroed_tag]
  []
  [zeroed_tag]
  []
[]
[AuxKernels]
  [not_zeroed_tag_value]
    type = TagVectorAux
    variable = not_zeroed_tag
    vector_tag = not_zeroed_tag
    v = u
  []
  [zeroed_tag_value]
    type = TagVectorAux
    variable = zeroed_tag
    vector_tag = zeroed_tag
    v = u
  []
[]
[Executioner]
  type = Transient
  dt = 1
  num_steps = 2
[]
[Outputs]
  exodus = true
[]
(test/tests/tag/2d_diffusion_vector_tag_test.i)
[Mesh]
  [./square]
    type = GeneratedMeshGenerator
    nx = 2
    ny = 2
    dim = 2
  [../]
[]
[Variables]
  [./u]
    order = FIRST
    family = LAGRANGE
    initial_condition = 1.0
  [../]
[]
[AuxVariables]
  [./tag_variable1]
    order = FIRST
    family = LAGRANGE
  [../]
  [./tag_variable2]
    order = FIRST
    family = LAGRANGE
  [../]
[]
[Kernels]
  [./reaction1]
    type = Reaction
    variable = u
    extra_vector_tags = 'vec_tag1 vec_tag2'
  [../]
  [./reaction2]
    type = Reaction
    variable = u
    extra_vector_tags = 'vec_tag1 vec_tag2'
  [../]
  [./reaction3]
    type = Reaction
    variable = u
  [../]
  [./reaction4]
    type = Reaction
    variable = u
  [../]
[]
[AuxKernels]
  [./TagVectorAux1]
    type = TagVectorAux
    variable = tag_variable1
    v = u
    vector_tag = vec_tag1
  [../]
  [./TagVectorAux2]
    type = TagVectorAux
    variable = tag_variable2
    v = u
    vector_tag = vec_tag2
  [../]
[]
[BCs]
  active = 'left right'
  [./left]
    type = DirichletBC
    variable = u
    preset = false
    boundary = 3
    value = 10
    extra_vector_tags = vec_tag1
  [../]
  [./right]
    type = DirichletBC
    variable = u
    preset = false
    boundary = 1
    value = 100
    extra_vector_tags = vec_tag2
  [../]
  [./right1]
    type = DirichletBC
    variable = u
    preset = false
    boundary = 1
    value = 100
  [../]
  [./right2]
    type = DirichletBC
    variable = u
    preset = false
    boundary = 1
    value = 100
  [../]
[]
[Problem]
  type = TagTestProblem
  extra_tag_vectors  = 'vec_tag1 vec_tag2'
  test_tag_vectors =  'vec_tag1 vec_tag2'
[]
[Executioner]
  type = Steady
  solve_type = 'NEWTON'
[]
[Outputs]
  file_base = vector_tag_test_out
  exodus = true
[]
(modules/solid_mechanics/test/tests/uel/reference.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 20
    ny = 10
    xmax = 10
    ymax = 3
    elem_type = TRI3
  []
  [pin]
    type = ExtraNodesetGenerator
    nodes = 106
    new_boundary = pin
    input = gen
  []
[]
[GlobalParams]
  displacements = 'disp_x disp_y'
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    strain = SMALL
    incremental = false
    add_variables = true
    extra_vector_tags = 'kernel_residual'
  []
[]
[BCs]
  [left_x]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [left_y]
    type = DirichletBC
    variable = disp_y
    boundary = pin
    value = 0
  []
  inactive = 'right_dirichlet'
  [right_neumann]
    type = FunctionNeumannBC
    variable = disp_x
    function = t
    boundary = right
  []
  [right_dirichlet]
    type = FunctionDirichletBC
    variable = disp_x
    function = t/10
    boundary = right
  []
[]
[Materials]
  [stress]
    type = ComputeLinearElasticStress
  []
  [elasticity]
    type = ComputeIsotropicElasticityTensor
    youngs_modulus = 100
    poissons_ratio = 0.3
  []
[]
[Problem]
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Executioner]
  type = Transient
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  dt = 1
  num_steps = 15
[]
[Postprocessors]
  [delta_l]
    type = SideAverageValue
    variable = disp_x
    boundary = right
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [V]
    type = ElementIntegralMaterialProperty
    mat_prop = 1
    use_displaced_mesh = true
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]
[Outputs]
  exodus = true
  csv = true
[]
(test/tests/tag/tag_dirac_kernels.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  xmin = 0
  xmax = 1
  ymin = 0
  ymax = 1
  nx = 2
  ny = 2
  elem_type = QUAD4
  uniform_refine = 4
[]
[Variables]
  [./u]
    order = FIRST
    family = LAGRANGE
  [../]
  [./v]
    order = FIRST
    family = LAGRANGE
  [../]
[]
[Kernels]
  [./ddt_u]
    type = TimeDerivative
    variable = u
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./diff_u]
    type = Diffusion
    variable = u
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./ddt_v]
    type = TimeDerivative
    variable = v
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./diff_v]
    type = Diffusion
    variable = v
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
[]
[DiracKernels]
  [./nonlinear_source]
    type = NonlinearSource
    variable = u
    coupled_var = v
    scale_factor = 1000
    point = '0.2 0.3 0'
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1 vec_tag2'
  [../]
[]
[BCs]
  [./left_u]
    type = DirichletBC
    variable = u
    boundary = 3
    value = 0
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./right_u]
    type = DirichletBC
    variable = u
    boundary = 1
    value = 1
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./left_v]
    type = DirichletBC
    variable = v
    boundary = 3
    value = 1
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./right_v]
    type = DirichletBC
    variable = v
    boundary = 1
    value = 0
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
[]
[Preconditioning]
  [./precond]
    type = SMP
    full = true
  [../]
[]
[Problem]
  type = TagTestProblem
  test_tag_vectors =  'time nontime residual vec_tag1 vec_tag2'
  test_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_vectors  = 'vec_tag1 vec_tag2'
[]
[AuxVariables]
  [./tag_variable1]
    order = FIRST
    family = LAGRANGE
  [../]
  [./tag_variable2]
    order = FIRST
    family = LAGRANGE
  [../]
[]
[AuxKernels]
  [./TagVectorAux1]
    type = TagVectorAux
    variable = tag_variable1
    v = u
    vector_tag = vec_tag2
  [../]
  [./TagVectorAux2]
    type = TagMatrixAux
    variable = tag_variable2
    v = u
    matrix_tag = mat_tag2
  [../]
[]
[Executioner]
  type = Transient
  solve_type = 'NEWTON' # NEWTON provides a more stringent test of off-diagonal Jacobians
  num_steps = 5
  dt = 1
  dtmin = 1
  l_max_its = 100
  nl_max_its = 6
  nl_abs_tol = 1.e-13
[]
[Postprocessors]
  [./point_value]
    type = PointValue
    variable = u
    point = '0.2 0.3 0'
  [../]
[]
[Outputs]
  exodus = true
[]
(test/tests/tag/tag_interface_kernels.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 2
    xmax = 2
    ny = 2
    ymax = 2
    nz = 2
    zmax = 2
  []
  [./subdomain1]
    input = gen
    type = SubdomainBoundingBoxGenerator
    bottom_left = '0 0 0'
    top_right = '1 1 1'
    block_id = 1
  [../]
  [./break_boundary]
    input = subdomain1
    type = BreakBoundaryOnSubdomainGenerator
  [../]
  [./interface]
    type = SideSetsBetweenSubdomainsGenerator
    input = break_boundary
    primary_block = '0'
    paired_block = '1'
    new_boundary = 'primary0_interface'
  [../]
[]
[Variables]
  [./u]
    order = FIRST
    family = LAGRANGE
    block = 0
  [../]
  [./v]
    order = FIRST
    family = LAGRANGE
    block = 1
  [../]
[]
[Kernels]
  [./diff_u]
    type = CoeffParamDiffusion
    variable = u
    D = 4
    block = 0
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./diff_v]
    type = CoeffParamDiffusion
    variable = v
    D = 2
    block = 1
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./source_u]
    type = BodyForce
    variable = u
    value = 1
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1 vec_tag2'
  [../]
[]
[InterfaceKernels]
  [./interface]
    type = PenaltyInterfaceDiffusion
    variable = u
    neighbor_var = v
    boundary = primary0_interface
    penalty = 1e6
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1 vec_tag2'
  [../]
[]
[BCs]
  [./u]
    type = VacuumBC
    variable = u
    boundary = 'left_to_0 bottom_to_0 back_to_0 right top front'
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./v]
    type = VacuumBC
    variable = v
    boundary = 'left_to_1 bottom_to_1 back_to_1'
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
[]
[AuxVariables]
  [./tag_variable1]
    order = FIRST
    family = LAGRANGE
    block = 0
  [../]
  [./tag_variable2]
    order = FIRST
    family = LAGRANGE
    block = 1
  [../]
[]
[AuxKernels]
  [./TagVectorAux1]
    type = TagVectorAux
    variable = tag_variable1
    v = u
    block = 0
    vector_tag = vec_tag2
  [../]
  [./TagVectorAux2]
    type = TagMatrixAux
    variable = tag_variable2
    v = v
    block = 1
    matrix_tag = mat_tag2
  [../]
[]
[Postprocessors]
  [./u_int]
    type = ElementIntegralVariablePostprocessor
    variable = u
    block = 0
  [../]
  [./v_int]
    type = ElementIntegralVariablePostprocessor
    variable = v
    block = 1
  [../]
[]
[Preconditioning]
  [./smp]
    type = SMP
    full = true
  [../]
[]
[Problem]
  type = TagTestProblem
  test_tag_vectors =  'nontime residual vec_tag1 vec_tag2'
  test_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_vectors  = 'vec_tag1 vec_tag2'
[]
[Executioner]
  type = Steady
  solve_type = NEWTON
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/uel/tensile_uel_umat_moose_temperature.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  [mesh]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 1
    ny = 1
    nz = 1
    elem_type = HEX8
  []
  [extra_nodeset]
    type = ExtraNodesetGenerator
    input = mesh
    new_boundary = 'master'
    coord = '1.0 1.0 1.0'
  []
[]
[AuxVariables]
  [temperature]
    initial_condition = 500
  []
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
  [disp_z]
  []
[]
[Functions]
  [function_pull]
    type = PiecewiseLinear
    x = '0 100'
    y = '0 0.1'
  []
[]
[Constraints]
  [one]
    type = LinearNodalConstraint
    variable = disp_x
    primary = '6'
    secondary_node_ids = '1 2 5'
    penalty = 1.0e8
    formulation = kinematic
    weights = '1'
  []
  [two]
    type = LinearNodalConstraint
    variable = disp_z
    primary = '6'
    secondary_node_ids = '4 5 7'
    penalty = 1.0e8
    formulation = kinematic
    weights = '1'
  []
[]
[BCs]
  [symmy]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [symmx]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [symmz]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  # What's done below is to capture the weird constraints
  [axial_load]
    type = FunctionDirichletBC
    variable = disp_y
    boundary = 'top'
    function = function_pull
  []
[]
[UserObjects]
  [uel]
    type = AbaqusUserElement
    variables = 'disp_x disp_y'
    plugin = '../../../../solid_mechanics/examples/uel_build/uel'
    use_displaced_mesh = false
    aux_variables = temperature # TODO
    #use_one_based_indexing = true # TODO
    jtype = 17
    num_state_vars = 177
    constant_properties = '190 28.0 3.0 1.0 6.0 0.0 0.0 23.0 25.0 26.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 '
                          '0.0 0.0 0.0 0.0 0.0 31700000.0 0.32 6.67e-06 1e-08 5000.0 4.0' # 28 properties
    extra_vector_tags = 'kernel_residual'
  []
[]
[Problem]
  kernel_coverage_check = false
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  l_max_its = 100
  l_tol = 1e-8
  nl_max_its = 50
  nl_rel_tol = 1e-8
  nl_abs_tol = 1e-8
  dtmin = 1
  dt = 5
  end_time = 100
[]
[Outputs]
  exodus = true
[]
(modules/heat_transfer/test/tests/convective_flux_function/convective_flux_function.i)
# This is a test of the ConvectiveFluxFunction BC.
# There is a single 1x1 element with a prescribed temperature
# on the left side and a convective flux BC on the right side.
# The temperature on the left is 100, and the far-field temp is 200.
# The conductance of the body (conductivity * length) is 10
#
# If the conductance in the BC is also 10, the temperature on the
# right side of the solid element should be 150 because half of the
# temperature drop should occur over the body and half in the BC.
#
# The integrated flux is deltaT * conductance, or -50 * 10 = -500.
# The negative sign indicates that heat is going into the body.
#
# The conductance is defined multiple ways using this input, and
# as long as it evaluates to 10, the result described above will
# be obtained.
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 1
  ny = 1
[]
[Problem]
  extra_tag_vectors = 'bcs'
[]
[Variables]
  [temp]
    initial_condition = 100.0
  []
[]
[AuxVariables]
  [flux]
  []
[]
[AuxKernels]
  [flux]
    type = TagVectorAux
    variable = flux
    v = temp
    vector_tag = 'bcs'
  []
[]
[Kernels]
  [heat_conduction]
    type = HeatConduction
    variable = temp
  []
[]
[Materials]
  [thermal]
    type = HeatConductionMaterial
    thermal_conductivity = 10.0
  []
[]
[BCs]
  [left]
    type = DirichletBC
    variable = temp
    boundary = left
    value = 100.0
  []
  [right]
    type = ConvectiveFluxFunction
    variable = temp
    boundary = right
    T_infinity = 200.0
    coefficient = 10.0 #This will behave as described in the header of this file if this evaluates to 10
    extra_vector_tags = 'bcs'
  []
[]
[Postprocessors]
  [integrated_flux]
    type = NodalSum
    variable = flux
    boundary = right
  []
[]
[Executioner]
  type = Transient
  start_time = 0.0
  end_time = 1.0
  dt = 1.0
  nl_rel_tol=1e-12
[]
[Outputs]
  csv = true
[]
(test/tests/tag/tag-linearfv.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 1
    nx = 3
  []
[]
[Problem]
  linear_sys_names = 'u_sys v_sys'
  extra_tag_matrices = 'mat_tag_u; mat_tag_v'
  extra_tag_vectors = 'vec_tag_u; vec_tag_v'
[]
[Variables]
  [u]
    type = MooseLinearVariableFVReal
    initial_condition = 1.0
    solver_sys = u_sys
  []
  [v]
    type = MooseLinearVariableFVReal
    initial_condition = 0.5
    solver_sys = v_sys
  []
[]
[LinearFVKernels]
  [diffusion]
    type = LinearFVDiffusion
    variable = u
    diffusion_coeff = 2.0
  []
  [reaction]
    type = LinearFVReaction
    variable = u
    coeff = 3.0
    matrix_tags = 'system mat_tag_u'
  []
  [source]
    type = LinearFVSource
    variable = u
    source_density = 60.0
    vector_tags = 'rhs vec_tag_u'
  []
  [diffusion_v]
    type = LinearFVDiffusion
    variable = v
    diffusion_coeff = 1.0
  []
  [reaction_v]
    type = LinearFVReaction
    variable = v
    coeff = 1.5
    matrix_tags = 'system mat_tag_v'
  []
  [source_v]
    type = LinearFVSource
    variable = v
    source_density = 20.0
    vector_tags = 'rhs vec_tag_v'
  []
[]
[LinearFVBCs]
  [left_u]
    type = LinearFVAdvectionDiffusionFunctorDirichletBC
    variable = u
    boundary = left
    functor = 1.0
  []
  [right_u]
    type = LinearFVAdvectionDiffusionFunctorDirichletBC
    variable = u
    boundary = right
    functor = 3.0
  []
  [left_v]
    type = LinearFVAdvectionDiffusionFunctorDirichletBC
    variable = v
    boundary = left
    functor = 1.0
  []
  [right_v]
    type = LinearFVAdvectionDiffusionFunctorDirichletBC
    variable = v
    boundary = right
    functor = 3.0
  []
[]
[AuxVariables]
  [soln_u_dof]
    type = MooseLinearVariableFVReal
  []
  [soln_u]
    type = MooseLinearVariableFVReal
  []
  [rhs_u_dof]
    type = MooseLinearVariableFVReal
  []
  [rhs_u]
    type = MooseLinearVariableFVReal
  []
  [vector_tag_u]
    type = MooseLinearVariableFVReal
  []
  [matrix_u_diag]
    type = MooseLinearVariableFVReal
  []
  [soln_v_dof]
    type = MooseLinearVariableFVReal
  []
  [soln_v]
    type = MooseLinearVariableFVReal
  []
  [rhs_v_dof]
    type = MooseLinearVariableFVReal
  []
  [rhs_v]
    type = MooseLinearVariableFVReal
  []
  [vector_tag_v]
    type = MooseLinearVariableFVReal
  []
  [matrix_v_diag]
    type = MooseLinearVariableFVReal
  []
[]
[AuxKernels]
  [soln_u_dof]
    type = TagVectorDofValueAux
    variable = soln_u_dof
    v = u
    vector_tag = 'solution'
  []
  [soln_u]
    type = TagVectorAux
    variable = soln_u
    v = u
    vector_tag = 'solution'
  []
  [rhs_u_dof]
    type = TagVectorDofValueAux
    variable = rhs_u_dof
    v = u
    vector_tag = 'rhs'
  []
  [rhs_u]
    type = TagVectorAux
    variable = rhs_u
    v = u
    vector_tag = 'rhs'
  []
  [extra_vector_u_dof]
    type = TagVectorDofValueAux
    variable = vector_tag_u
    v = u
    vector_tag = 'vec_tag_u'
  []
  [extra_vector_u]
    type = TagVectorAux
    variable = vector_tag_u
    v = u
    vector_tag = 'vec_tag_u'
  []
  [extra_matrix_u]
    type = TagMatrixAux
    variable = matrix_u_diag
    v = u
    matrix_tag = 'mat_tag_u'
  []
  [soln_v_dof]
    type = TagVectorDofValueAux
    variable = soln_v_dof
    v = v
    vector_tag = 'solution'
  []
  [soln_v]
    type = TagVectorAux
    variable = soln_v
    v = v
    vector_tag = 'solution'
  []
  [rhs_v_dof]
    type = TagVectorDofValueAux
    variable = rhs_v_dof
    v = v
    vector_tag = 'rhs'
  []
  [rhs_v]
    type = TagVectorAux
    variable = rhs_v
    v = v
    vector_tag = 'rhs'
  []
  [extra_vector_v_dof]
    type = TagVectorDofValueAux
    variable = vector_tag_v
    v = v
    vector_tag = 'vec_tag_v'
  []
  [extra_vector_v]
    type = TagVectorAux
    variable = vector_tag_v
    v = v
    vector_tag = 'vec_tag_v'
  []
  [extra_matrix_v]
    type = TagMatrixAux
    variable = matrix_v_diag
    v = v
    matrix_tag = 'mat_tag_v'
  []
[]
[Executioner]
  type = Steady
  solve_type = 'LINEAR'
  system_names = 'u_sys v_sys'
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
  exodus = true
  execute_on = timestep_end
[]
(test/tests/tag/2d_diffusion_dg_tag.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 4
  ny = 4
  xmin = 0
  xmax = 1
  ymin = 0
  ymax = 1
  elem_type = QUAD4
[]
[Variables]
  [./u]
    order = FIRST
    family = MONOMIAL
    [./InitialCondition]
      type = ConstantIC
      value = 1
    [../]
  [../]
[]
[AuxVariables]
  [./tag_variable1]
    order = FIRST
    family = MONOMIAL
  [../]
  [./tag_variable2]
    order = FIRST
    family = MONOMIAL
  [../]
[]
[AuxKernels]
  [./TagVectorAux1]
    type = TagVectorAux
    variable = tag_variable1
    v = u
    vector_tag = vec_tag2
  [../]
  [./TagVectorAux2]
    type = TagMatrixAux
    variable = tag_variable2
    v = u
    matrix_tag = mat_tag2
  [../]
[]
[Functions]
  [./forcing_fn]
    type = ParsedFunction
    expression = 2*pow(e,-x-(y*y))*(1-2*y*y)
  [../]
  [./exact_fn]
    type = ParsedGradFunction
    value = pow(e,-x-(y*y))
    grad_x = -pow(e,-x-(y*y))
    grad_y = -2*y*pow(e,-x-(y*y))
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1 vec_tag2'
  [../]
  [./abs]
    type = Reaction
    variable = u
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1 vec_tag2'
  [../]
  [./forcing]
    type = BodyForce
    variable = u
    function = forcing_fn
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
[]
[DGKernels]
  [./dg_diff]
    type = DGDiffusion
    variable = u
    epsilon = -1
    sigma = 6
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1 vec_tag2'
  [../]
[]
[BCs]
  [./all]
    type = DGFunctionDiffusionDirichletBC
    variable = u
    boundary = '0 1 2 3'
    function = exact_fn
    epsilon = -1
    sigma = 6
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1 vec_tag2'
  [../]
[]
[Problem]
  type = TagTestProblem
  test_tag_vectors =  'nontime residual vec_tag1 vec_tag2'
  test_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_vectors  = 'vec_tag1 vec_tag2'
[]
[Executioner]
  type = Steady
  solve_type = 'NEWTON'
  nl_rel_tol = 1e-10
[]
[Postprocessors]
  [./h]
    type = AverageElementSize
  [../]
  [./dofs]
    type = NumDOFs
  [../]
  [./l2_err]
    type = ElementL2Error
    variable = u
    function = exact_fn
  [../]
[]
[Outputs]
  exodus = true
[]
(test/tests/tag/eigen_tag.i)
[Mesh/gmg]
  type = GeneratedMeshGenerator
  dim = 2
  nx = 5
  ny = 5
[]
[Variables/u]
[]
[AuxVariables]
  [vec_tag_diff]
    order = FIRST
    family = LAGRANGE
  []
  [vec_tag_rhs]
    order = FIRST
    family = LAGRANGE
  []
  [mat_tag_diff]
    order = FIRST
    family = LAGRANGE
  []
  [mat_tag_rhs]
    order = FIRST
    family = LAGRANGE
  []
[]
[Kernels]
  [diff]
    type = Diffusion
    variable = u
    extra_vector_tags = 'tag_diff'
    extra_matrix_tags = 'tag_diff'
  []
  [rhs]
    type = CoefReaction
    variable = u
    extra_vector_tags = 'eigen tag_rhs'
    extra_matrix_tags = 'tag_rhs'
  []
[]
[AuxKernels]
  [vec_tag_diff]
    type = TagVectorAux
    variable = vec_tag_diff
    v = u
    vector_tag = tag_diff
  []
  [vec_tag_rhs]
    type = TagVectorAux
    variable = vec_tag_rhs
    v = u
    vector_tag = tag_rhs
  []
  [mat_tag_diff]
    type = TagVectorAux
    variable = mat_tag_diff
    v = u
    vector_tag = tag_diff
  []
  [mat_tag_rhs]
    type = TagVectorAux
    variable = mat_tag_diff
    v = u
    vector_tag = tag_rhs
  []
[]
[BCs/homogeneous]
  type = DirichletBC
  boundary = 'top right bottom left'
  variable = u
  value = 0
[]
[Problem]
  extra_tag_vectors = 'tag_diff tag_rhs'
  extra_tag_matrices = 'tag_diff tag_rhs'
[]
[Executioner]
  type = Eigenvalue
  solve_type = NEWTON
  eigen_problem_type = GEN_NON_HERMITIAN
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/uel/small_test_uel_states_fields_gradient.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 20
    ny = 10
    xmax = 10
    ymax = 3
    elem_type = TRI3
  []
  [pin]
    type = ExtraNodesetGenerator
    nodes = 106
    new_boundary = pin
    input = gen
  []
  displacements = 'disp_x disp_y'
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
[]
[AuxVariables]
  [temperature]
    initial_condition = 400
  []
  [voltage]
    initial_condition = 210
  []
[]
[AuxKernels]
  [temperature]
    type = FunctionAux
    function = '25* x + 40 * y + 400'
    variable = temperature
  []
  [voltage]
    type = FunctionAux
    function = '10 * x + 4 * y + 210'
    variable = voltage
  []
[]
[BCs]
  [left_x]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [left_y]
    type = DirichletBC
    variable = disp_y
    boundary = pin
    value = 0
  []
  inactive = 'right_dirichlet'
  [right_neumann]
    type = FunctionNeumannBC
    variable = disp_x
    function = t/10
    boundary = right
  []
  [right_dirichlet]
    type = FunctionDirichletBC
    variable = disp_x
    function = t/10
    boundary = right
  []
[]
[UserObjects]
  [uel]
    type = AbaqusUserElement
    variables = 'disp_x disp_y'
    plugin = ../../../examples/uel_tri_states_tests/uel
    use_displaced_mesh = false
    num_state_vars = 8
    constant_properties = '100 0.3' # E nu
    external_fields = 'temperature voltage'
    extra_vector_tags = 'kernel_residual'
  []
[]
[Problem]
  kernel_coverage_check = false
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Executioner]
  type = Transient
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  dt = 1
  num_steps = 15
[]
[Postprocessors]
  [delta_l]
    type = SideAverageValue
    variable = disp_x
    boundary = right
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [V]
    type = ElementIntegralMaterialProperty
    mat_prop = 1
    use_displaced_mesh = true
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]
[Outputs]
  exodus = true
  csv = true
[]
(modules/solid_mechanics/test/tests/uel/small.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 20
    ny = 10
    xmax = 10
    ymax = 3
    elem_type = TRI3
  []
  [pin]
    type = ExtraNodesetGenerator
    nodes = 106
    new_boundary = pin
    input = gen
  []
  displacements = 'disp_x disp_y'
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
[]
[BCs]
  [left_x]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [left_y]
    type = DirichletBC
    variable = disp_y
    boundary = pin
    value = 0
  []
  inactive = 'right_dirichlet'
  [right_neumann]
    type = FunctionNeumannBC
    variable = disp_x
    function = t
    boundary = right
  []
  [right_dirichlet]
    type = FunctionDirichletBC
    variable = disp_x
    function = t/10
    boundary = right
  []
[]
[UserObjects]
  [uel]
    type = AbaqusUserElement
    variables = 'disp_x disp_y'
    plugin = ../../plugins/small_strain_tri_uel
    use_displaced_mesh = false
    num_state_vars = 8
    constant_properties = '100 0.3' # E nu
    extra_vector_tags = 'kernel_residual'
  []
[]
[Problem]
  kernel_coverage_check = false
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Executioner]
  type = Transient
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  dt = 1
  num_steps = 15
[]
[Postprocessors]
  [delta_l]
    type = SideAverageValue
    variable = disp_x
    boundary = right
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [V]
    type = ElementIntegralMaterialProperty
    mat_prop = 1
    use_displaced_mesh = true
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]
[Outputs]
  exodus = true
  csv = true
[]
(test/tests/tag/tag-fv.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 5
  ny = 5
[]
[Variables]
  [v]
    type = MooseVariableFVReal
    initial_condition = 7
  []
[]
[AuxVariables]
  [soln_dof]
    type = MooseVariableFVReal
  []
  [soln_old_dof]
    type = MooseVariableFVReal
  []
  [soln_older_dof]
    type = MooseVariableFVReal
  []
  [resid_nontime_dof]
    type = MooseVariableFVReal
  []
  [soln]
    type = MooseVariableFVReal
  []
  [soln_old]
    type = MooseVariableFVReal
  []
  [soln_older]
    type = MooseVariableFVReal
  []
  [resid_nontime]
    type = MooseVariableFVReal
  []
[]
[AuxKernels]
  [soln_dof]
    type = TagVectorDofValueAux
    variable = soln_dof
    v = v
    vector_tag = 'solution'
  []
  [soln_old_dof]
    type = TagVectorDofValueAux
    variable = soln_old_dof
    v = v
    vector_tag = 'solution_state_1'
  []
  [soln_older_dof]
    type = TagVectorDofValueAux
    variable = soln_older_dof
    v = v
    vector_tag = 'solution_state_2'
  []
  [nontime_dof]
    type = TagVectorDofValueAux
    variable = resid_nontime_dof
    v = v
    vector_tag = 'nontime'
  []
  [soln]
    type = TagVectorAux
    variable = soln
    v = v
    vector_tag = 'solution'
  []
  [soln_old]
    type = TagVectorAux
    variable = soln_old
    v = v
    vector_tag = 'solution_state_1'
  []
  [soln_older]
    type = TagVectorAux
    variable = soln_older
    v = v
    vector_tag = 'solution_state_2'
  []
  [nontime]
    type = TagVectorAux
    variable = resid_nontime
    v = v
    vector_tag = 'nontime'
  []
[]
[FVKernels]
  [time]
    type = FVTimeKernel
    variable = v
  []
  [diff]
    type = FVDiffusion
    variable = v
    coeff = coeff
  []
[]
[FVBCs]
  [left]
    type = FVDirichletBC
    variable = v
    boundary = left
    value = 7
  []
  [right]
    type = FVDirichletBC
    variable = v
    boundary = right
    value = 42
  []
[]
[Materials]
  [diff]
    type = ADGenericFunctorMaterial
    prop_names = 'coeff'
    prop_values = '.2'
  []
[]
[Executioner]
  type = Transient
  solve_type = 'NEWTON'
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
  num_steps = 5
  dt = 0.1
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/uel/small_test_expanded.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 20
    ny = 10
    xmax = 10
    ymax = 3
    elem_type = TRI3
  []
  [pin]
    type = ExtraNodesetGenerator
    nodes = 106
    new_boundary = pin
    input = gen
  []
  displacements = 'disp_x disp_y'
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
[]
[BCs]
  [left_x]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [left_y]
    type = DirichletBC
    variable = disp_y
    boundary = pin
    value = 0
  []
  inactive = 'right_dirichlet'
  [right_neumann]
    type = FunctionNeumannBC
    variable = disp_x
    function = t
    boundary = right
  []
  [right_dirichlet]
    type = FunctionDirichletBC
    variable = disp_x
    function = t/10
    boundary = right
  []
[]
[UserObjects]
  [uel]
    type = AbaqusUserElement
    variables = 'disp_x disp_y'
    plugin = ../../../examples/uel_tri_tests/uel
    use_displaced_mesh = false
    num_state_vars = 18
    constant_properties = '100 0.3' # E nu
    extra_vector_tags = 'kernel_residual'
  []
[]
[Problem]
  kernel_coverage_check = false
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Executioner]
  type = Transient
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  dt = 1
  num_steps = 15
[]
[Postprocessors]
  [delta_l]
    type = SideAverageValue
    variable = disp_x
    boundary = right
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [V]
    type = ElementIntegralMaterialProperty
    mat_prop = 1
    use_displaced_mesh = true
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]
[Outputs]
  exodus = true
  csv = true
[]
(test/tests/tag/wrong_tag_type.i)
[Mesh]
  [gmg]
    type = GeneratedMeshGenerator
    dim = 1
    nx = 10
  []
[]
[Problem]
  solve = false
  extra_tag_vectors = 'vec_tag1'
  extra_tag_solutions = 'vec_tag2'
[]
[Variables]
  [u]
    initial_condition = 1
  []
[]
[Kernels]
  [diff]
    type = Diffusion
    variable = u
    extra_vector_tags = 'vec_tag1'
  []
  [react]
    type = Reaction
    variable = u
    extra_vector_tags = 'vec_tag1 vec_tag2'
  []
[]
[AuxVariables]
  [tag_value]
    [AuxKernel]
      type = TagVectorAux
      v = u
      vector_tag = vec_tag2
      remove_variable_scaling = true
    []
  []
[]
[Executioner]
  type = Steady
[]
(modules/solid_mechanics/test/tests/uel/uel_test_print.i)
[GlobalParams]
  displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
  [mesh]
    type = GeneratedMeshGenerator
    dim = 3
    nx = 3
    ny = 3
    nz = 3
    elem_type = HEX8
  []
  [extra_nodeset]
    type = ExtraNodesetGenerator
    input = mesh
    new_boundary = 'master'
    coord = '1.0 1.0 1.0'
  []
[]
[AuxVariables]
  [temperature]
    initial_condition = 1500
  []
  [voltage]
    initial_condition = 210
  []
[]
[AuxKernels]
  [temperature]
    type = FunctionAux
    function = temperature_function
    variable = temperature
  []
  [voltage]
    type = FunctionAux
    function = voltage_function
    variable = voltage
  []
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
  [disp_z]
  []
[]
[Functions]
  [function_pull]
    type = PiecewiseLinear
    x = '0 100'
    y = '0 0.1'
  []
  [pressure_function]
    type = PiecewiseLinear
    x = '0 100'
    y = '0 2.0e4'
  []
  [voltage_function]
    type = PiecewiseLinear
    x = '0 100'
    y = '210 450'
  []
  [temperature_function]
    type = PiecewiseLinear
    x = '0 100'
    y = '1500 800'
  []
[]
[Constraints]
  [one]
    type = LinearNodalConstraint
    variable = disp_x
    primary = '6'
    secondary_node_ids = '1 2 5'
    penalty = 1.0e8
    formulation = kinematic
    weights = '1'
  []
  [two]
    type = LinearNodalConstraint
    variable = disp_z
    primary = '6'
    secondary_node_ids = '4 5 7'
    penalty = 1.0e8
    formulation = kinematic
    weights = '1'
  []
[]
[BCs]
  [symmy]
    type = DirichletBC
    variable = disp_y
    boundary = bottom
    value = 0
  []
  [symmx]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [symmz]
    type = DirichletBC
    variable = disp_z
    boundary = back
    value = 0
  []
  [Pressure]
    [press]
      boundary = 'top'
      displacements = 'disp_x disp_y disp_z'
      function = pressure_function
    []
  []
[]
[UserObjects]
  [uel]
    type = AbaqusUserElement
    variables = 'disp_x disp_y disp_z'
    plugin = '../../../../solid_mechanics/examples/uel_build_tests/uel'
    use_displaced_mesh = false
    external_fields = 'temperature voltage'
    jtype = 10
    num_state_vars = 96 #
    constant_properties = '2 1 2 210000 0.3'
    extra_vector_tags = 'kernel_residual'
  []
[]
[Problem]
  kernel_coverage_check = false
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  petsc_options = '-snes_converged_reason'
  petsc_options_iname = '-pc_type -pc_factor_mat_solver_type'
  petsc_options_value = ' lu       superlu_dist'
  line_search = none
  l_max_its = 100
  l_tol = 1e-8
  nl_max_its = 1
  nl_rel_tol = 1e-8
  nl_abs_tol = 1e-8
  error_on_dtmin = false
  dtmin = 10
  dt = 10
  end_time = 10
[]
[Outputs]
  exodus = true
[]
(test/tests/tag/old_eigen_tag.i)
[Mesh/gmg]
  type = GeneratedMeshGenerator
  dim = 2
  nx = 5
  ny = 5
[]
[Variables]
  [u]
  []
  [v]
  []
[]
[AuxVariables]
  [u_vec_tag_diff]
  []
  [u_vec_tag_rhs]
  []
  [u_mat_tag_diff]
  []
  [u_mat_tag_rhs]
  []
  [u_mat_savein_rhs]
  []
  [v_vec_tag_diff]
  []
  [v_vec_tag_rhs]
  []
  [v_mat_tag_diff]
  []
  [v_mat_tag_rhs]
  []
[]
[Kernels]
  [diff_u]
    type = Diffusion
    variable = u
    extra_vector_tags = 'tag_diff'
    extra_matrix_tags = 'tag_diff'
  []
  [rhs_u]
    type = MassEigenKernel
    variable = u
    extra_vector_tags = 'tag_rhs'
    extra_matrix_tags = 'tag_rhs'
    diag_save_in = 'u_mat_savein_rhs'
  []
  [diff_v]
    type = Diffusion
    variable = v
    extra_vector_tags = 'tag_diff'
    extra_matrix_tags = 'tag_diff'
  []
  [rhs_v]
    type = MassEigenKernel
    variable = v
    extra_vector_tags = 'tag_rhs'
    extra_matrix_tags = 'tag_rhs'
  []
  [rhs_uv]
    type = CoupledEigenKernel
    variable = u
    v = v
    extra_vector_tags = 'tag_rhs'
    extra_matrix_tags = 'tag_rhs'
  []
  [rhs_vu]
    type = CoupledEigenKernel
    variable = v
    v = u
    extra_vector_tags = 'tag_rhs'
    extra_matrix_tags = 'tag_rhs'
  []
[]
[AuxKernels]
  [u_vec_tag_diff]
    type = TagVectorAux
    variable = u_vec_tag_diff
    v = u
    vector_tag = tag_diff
  []
  [u_vec_tag_rhs]
    type = TagVectorAux
    variable = u_vec_tag_rhs
    v = u
    vector_tag = tag_rhs
  []
  [u_mat_tag_diff]
    type = TagVectorAux
    variable = u_mat_tag_diff
    v = u
    vector_tag = tag_diff
  []
  [u_mat_tag_rhs]
    type = TagVectorAux
    variable = u_mat_tag_diff
    v = u
    vector_tag = tag_rhs
  []
  [v_vec_tag_diff]
    type = TagVectorAux
    variable = v_vec_tag_diff
    v = v
    vector_tag = tag_diff
  []
  [v_vec_tag_rhs]
    type = TagVectorAux
    variable = v_vec_tag_rhs
    v = v
    vector_tag = tag_rhs
  []
  [v_mat_tag_diff]
    type = TagVectorAux
    variable = v_mat_tag_diff
    v = v
    vector_tag = tag_diff
  []
  [v_mat_tag_rhs]
    type = TagVectorAux
    variable = v_mat_tag_diff
    v = v
    vector_tag = tag_rhs
  []
[]
[BCs]
  [homogeneous_u]
    type = DirichletBC
    boundary = 'top right bottom left'
    variable = u
    value = 0
  []
  [homogeneous_v]
    type = DirichletBC
    boundary = 'top right bottom left'
    variable = v
    value = 0
  []
[]
[Problem]
  extra_tag_vectors = 'tag_diff tag_rhs'
  extra_tag_matrices = 'tag_diff tag_rhs'
  use_hash_table_matrix_assembly = true
[]
[Postprocessors]
  [unorm]
    type = NodalL2Norm
    variable = u
    execute_on = linear
  []
  [vnorm]
    type = NodalL2Norm
    variable = v
    execute_on = linear
  []
  [uvnorm]
    type = ParsedPostprocessor
    expression = 'sqrt(unorm*unorm + vnorm*vnorm)'
    pp_names = 'unorm vnorm'
    execute_on = linear
  []
[]
[Preconditioning/smp]
  type = SMP
  full = true
[]
[Executioner]
  type = NonlinearEigen
  bx_norm = uvnorm
  free_l_tol = 1e-8
  nl_abs_tol = 1e-12
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/uel/small_test_uel_states_fields.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 20
    ny = 10
    # nx = 10
    # ny = 3
    xmax = 10
    ymax = 3
    elem_type = TRI3
  []
  [pin]
    type = ExtraNodesetGenerator
    nodes = 106
    new_boundary = pin
    input = gen
  []
  displacements = 'disp_x disp_y'
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
[]
[AuxVariables]
  [temperature]
    initial_condition = 1500
  []
  [voltage]
    initial_condition = 210
  []
[]
[AuxKernels]
  [temperature]
    type = FunctionAux
    function = temperature_function
    variable = temperature
  []
  [voltage]
    type = FunctionAux
    function = voltage_function
    variable = voltage
  []
[]
[Functions]
  [voltage_function]
    type = PiecewiseLinear
    x = '0 15'
    y = '210 450'
  []
  [temperature_function]
    type = PiecewiseLinear
    x = '0 15'
    y = '1500 800'
  []
[]
[BCs]
  [left_x]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [left_y]
    type = DirichletBC
    variable = disp_y
    boundary = pin
    value = 0
  []
  inactive = 'right_dirichlet'
  # inactive = 'right_neumann'
  [right_neumann]
    type = FunctionNeumannBC
    variable = disp_x
    function = t
    boundary = right
  []
  [right_dirichlet]
    type = FunctionDirichletBC
    variable = disp_x
    function = t/10
    boundary = right
  []
[]
[UserObjects]
  [uel]
    type = AbaqusUserElement
    variables = 'disp_x disp_y'
    plugin = ../../../examples/uel_tri_states_tests/uel
    use_displaced_mesh = false
    num_state_vars = 8
    constant_properties = '100 0.3' # E nu
    external_fields = 'temperature voltage'
    extra_vector_tags = 'kernel_residual'
  []
[]
[Problem]
  kernel_coverage_check = false
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Executioner]
  type = Transient
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  dt = 1
  num_steps = 15
[]
[Postprocessors]
  [delta_l]
    type = SideAverageValue
    variable = disp_x
    boundary = right
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [V]
    type = ElementIntegralMaterialProperty
    mat_prop = 1
    use_displaced_mesh = true
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]
[Outputs]
  exodus = true
  csv = true
[]
(test/tests/kokkos/tag/kokkos_tag_neumann.i)
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 10
  construct_side_list_from_node_list = true
[]
[Variables]
  [u]
  []
[]
[KokkosKernels]
  [diff]
    type = KokkosDiffusion
    variable = u
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  []
[]
[AuxVariables]
  [tag_variable1]
    order = FIRST
    family = LAGRANGE
  []
  [tag_variable2]
    order = FIRST
    family = LAGRANGE
  []
[]
[AuxKernels]
  [TagVectorAux1]
    type = TagVectorAux
    variable = tag_variable1
    v = u
    vector_tag = vec_tag2
  []
  [TagVectorAux2]
    type = TagMatrixAux
    variable = tag_variable2
    v = u
    matrix_tag = mat_tag2
  []
[]
[KokkosBCs]
  [left]
    type = KokkosDirichletBC
    variable = u
    boundary = left
    value = 0
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  []
  [right]
    type = KokkosNeumannBC
    variable = u
    boundary = right
    value = 2
    extra_vector_tags = 'vec_tag1 vec_tag2'
  []
[]
[Problem]
  type = TagTestProblem
  test_tag_vectors =  'nontime residual vec_tag1 vec_tag2'
  test_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_vectors  = 'vec_tag1 vec_tag2'
[]
[Executioner]
  type = Steady
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
  exodus = true
[]
(test/tests/tag/tag_nodal_kernels.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 10
  ny = 10
[]
[Variables]
  [./u]
  [../]
  [./nodal_ode]
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./time]
    type = TimeDerivative
    variable = u
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
[]
[NodalKernels]
  [./td]
    type = TimeDerivativeNodalKernel
    variable = nodal_ode
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./constant_rate]
    type = ConstantRate
    variable = nodal_ode
    rate = 1.0
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1 vec_tag2'
  [../]
[]
[BCs]
  [./left]
    type = DirichletBC
    variable = u
    boundary = left
    value = 0
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./right]
    type = DirichletBC
    variable = u
    boundary = right
    value = 10
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
[]
[Problem]
  type = TagTestProblem
  test_tag_vectors =  'time nontime residual vec_tag1 vec_tag2'
  test_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_vectors  = 'vec_tag1 vec_tag2'
[]
[AuxVariables]
  [./tag_variable1]
    order = FIRST
    family = LAGRANGE
  [../]
  [./tag_variable2]
    order = FIRST
    family = LAGRANGE
  [../]
[]
[AuxKernels]
  [./TagVectorAux1]
    type = TagVectorAux
    variable = tag_variable1
    v = nodal_ode
    vector_tag = vec_tag2
  [../]
  [./TagVectorAux2]
    type = TagMatrixAux
    variable = tag_variable2
    v = u
    matrix_tag = mat_tag2
  [../]
[]
[Executioner]
  type = Transient
  num_steps = 10
  nl_rel_tol = 1e-08
  dt = 0.01
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/test/tests/uel/small_test_umat_states_fields.i)
[GlobalParams]
  displacements = 'disp_x disp_y'
[]
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 20
    ny = 10
    xmax = 10
    ymax = 3
    elem_type = TRI3
  []
  [pin]
    type = ExtraNodesetGenerator
    nodes = 106
    new_boundary = pin
    input = gen
  []
  displacements = 'disp_x disp_y'
[]
[AuxVariables]
  [temperature]
    initial_condition = 1500
  []
  [voltage]
    initial_condition = 210
  []
[]
[AuxKernels]
  [temperature]
    type = FunctionAux
    function = temperature_function
    variable = temperature
  []
  [voltage]
    type = FunctionAux
    function = voltage_function
    variable = voltage
  []
[]
[Functions]
  [voltage_function]
    type = PiecewiseLinear
    x = '0 15'
    y = '210 450'
  []
  [temperature_function]
    type = PiecewiseLinear
    x = '0 15'
    y = '1500 800'
  []
[]
[BCs]
  [left_x]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [left_y]
    type = DirichletBC
    variable = disp_y
    boundary = pin
    value = 0
  []
  inactive = 'right_dirichlet'
  [right_neumann]
    type = FunctionNeumannBC
    variable = disp_x
    function = t
    boundary = right
  []
  [right_dirichlet]
    type = FunctionDirichletBC
    variable = disp_x
    function = t/10
    boundary = right
  []
[]
[Physics/SolidMechanics/QuasiStatic]
  [all]
    add_variables = true
    strain = SMALL
    incremental = true
    extra_vector_tags = 'kernel_residual'
  []
[]
[Materials]
  [umat]
    type = AbaqusUMATStress
    constant_properties = '100 0.3'
    plugin = '../../plugins/small_elastic_tri_states'
    num_state_vars = 2
    use_one_based_indexing = false
    temperature = 'temperature'
    external_fields = 'voltage'
  []
[]
[Problem]
  kernel_coverage_check = false
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Executioner]
  type = Transient
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  dt = 1
  num_steps = 15
[]
[Postprocessors]
  [delta_l]
    type = SideAverageValue
    variable = disp_x
    boundary = right
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [V]
    type = ElementIntegralMaterialProperty
    mat_prop = 1
    use_displaced_mesh = true
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]
[Outputs]
  exodus = true
  csv = true
[]
(modules/optimization/test/tests/optimizationreporter/general_opt/point_loads_gen_opt/adjoint.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 10
  ny = 10
  xmax = 1
  ymax = 1.4
[]
[Variables]
  [adjoint]
  []
[]
[Problem]
  extra_tag_vectors = 'ref'
[]
[AuxVariables]
  [residual_src]
  []
[]
[AuxKernels]
  [residual_src]
    type = TagVectorAux
    vector_tag = 'ref'
    v = 'adjoint'
    variable = 'residual_src'
  []
[]
[Variables]
  [adjoint]
  []
[]
[Kernels]
  [heat_conduction]
    type = MatDiffusion
    variable = adjoint
    diffusivity = thermal_conductivity
  []
[]
#-----every adjoint problem should have these two
[DiracKernels]
  [pt]
    type = ReporterPointSource
    variable = adjoint
    x_coord_name = misfit/measurement_xcoord
    y_coord_name = misfit/measurement_ycoord
    z_coord_name = misfit/measurement_zcoord
    value_name = misfit/misfit_values
    extra_vector_tags = 'ref'
  []
[]
[Reporters]
  [misfit]
    type = OptimizationData
    measurement_points = ${measurement_points}
    measurement_values = ${measurement_values}
  []
[]
[BCs]
  [left]
    type = DirichletBC
    variable = adjoint
    boundary = left
    value = 0
  []
  [right]
    type = DirichletBC
    variable = adjoint
    boundary = right
    value = 0
  []
  [bottom]
    type = DirichletBC
    variable = adjoint
    boundary = bottom
    value = 0
  []
  [top]
    type = DirichletBC
    variable = adjoint
    boundary = top
    value = 0
  []
[]
[Materials]
  [steel]
    type = GenericConstantMaterial
    prop_names = thermal_conductivity
    prop_values = 5
  []
[]
[Executioner]
  type = Steady
  solve_type = NEWTON
  nl_abs_tol = 1e-6
  nl_rel_tol = 1e-8
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
[]
[VectorPostprocessors]
  [gradient]
    type = PointValueSampler
    points = '0.2 0.2 0
              0.7 0.56 0
              0.4 1 0'
    variable = adjoint
    sort_by = id
  []
[]
[Outputs]
  console = false
  exodus = false
  file_base = 'adjoint'
[]
(modules/scalar_transport/test/tests/ncp-lms/diagonal-ncp-lm-nodal-enforcement.i)
l=10
nx=100
num_steps=${l}
dt=1
[GlobalParams]
  lm_sign_positive = false
[]
[Problem]
  extra_tag_vectors = 'positive diffusion rest'
[]
[Mesh]
  type = GeneratedMesh
  dim = 1
  xmax = ${l}
  nx = ${nx}
  elem_type = EDGE3
[]
[Variables]
  [u]
    order = SECOND
  []
  [lm]
  []
[]
[AuxVariables]
  [positive][]
  [diffusion_lm][]
  [rest_lm][]
  [diffusion_primal]
    order = SECOND
  []
  [rest_primal]
    order = SECOND
  []
[]
[AuxKernels]
  [positive]
    type = TagVectorAux
    variable = positive
    v = lm
    vector_tag = positive
  []
  [diffusion_lm]
    type = TagVectorAux
    variable = diffusion_lm
    v = lm
    vector_tag = diffusion
  []
  [rest_lm]
    type = TagVectorAux
    variable = rest_lm
    v = lm
    vector_tag = rest
  []
  [diffusion_primal]
    type = TagVectorAux
    variable = diffusion_primal
    v = u
    vector_tag = diffusion
  []
  [rest_primal]
    type = TagVectorAux
    variable = rest_primal
    v = u
    vector_tag = rest
  []
[]
[ICs]
  [u]
    type = FunctionIC
    variable = u
    function = '${l} - x'
  []
[]
[Kernels]
  [time]
    type = TimeDerivativeLM
    variable = u
    lm_variable = lm
    extra_vector_tags = 'rest'
  []
  [diff]
    type = Diffusion
    variable = u
    extra_vector_tags = 'diffusion'
  []
  [diff_lm]
    type = LMDiffusion
    variable = lm
    primal_variable = u
    extra_vector_tags = 'diffusion'
  []
  [ffn]
    type = BodyForceLM
    variable = u
    lm_variable = lm
    function = '-1'
    extra_vector_tags = 'rest'
  []
  [lm_coupled_force]
    type = CoupledForceLM
    variable = u
    v = lm
    lm_variable = lm
    extra_vector_tags = 'rest'
  []
[]
[NodalKernels]
  [positive_constraint]
    type = LowerBoundNodalKernel
    extra_vector_tags = positive
    variable = lm
    v = u
  []
[]
[BCs]
  [left]
    type = DirichletBC
    boundary = left
    value = ${l}
    variable = u
  []
  [right]
    type = DirichletBC
    boundary = right
    value = 0
    variable = u
  []
[]
[Preconditioning]
  [smp]
    type = SMP
    full = true
  []
[]
[Executioner]
  type = Transient
  num_steps = ${num_steps}
  dt = ${dt}
  dtmin = ${dt}
  solve_type = NEWTON
  petsc_options_iname = '-snes_max_linear_solve_fail -ksp_max_it -pc_factor_levels -ksp_gmres_restart'
  petsc_options_value = '0                           99          16                99'
[]
[Outputs]
  exodus = true
  csv = true
  [dof]
    type = DOFMap
    execute_on = 'initial'
  []
[]
[Postprocessors]
  [active_lm]
    type = GreaterThanLessThanPostprocessor
    variable = lm
    execute_on = 'nonlinear timestep_end'
    value = 1e-12
  []
  [violations]
    type = GreaterThanLessThanPostprocessor
    variable = u
    execute_on = 'nonlinear timestep_end'
    value = -1e-12
    comparator = 'less'
  []
[]
[Debug]
  show_var_residual_norms = true
[]
(modules/navier_stokes/examples/laser-welding/2d-fv.i)
period=.2e-4 # s
endtime=${fparse 3 * period} # s
timestep=${fparse period / 100} # s
surfacetemp=2700 # K
bottomtemp=2700 # K
sb=5.67e-8 # W/(m^2 K^4)
advected_interp_method='upwind'
velocity_interp_method='rc'
rho='rho'
mu='mu'
[GlobalParams]
  rhie_chow_user_object = 'rc'
[]
[Mesh]
  type = GeneratedMesh
  dim = 2
  xmin = -.7e-3 # m
  xmax = 0.7e-3 # m
  ymin = -.35e-3 # m
  ymax = 0
  nx = 75
  ny = 20
  displacements = 'disp_x disp_y'
[]
[UserObjects]
  [rc]
    type = INSFVRhieChowInterpolator
    u = vel_x
    v = vel_y
    pressure = pressure
    use_displaced_mesh = true
    disp_x = disp_x
    disp_y = disp_y
  []
[]
[Problem]
  extra_tag_vectors = 'e_time e_advection e_conduction e_laser e_radiation e_mesh_advection'
[]
[AuxVariables]
  [mu_out]
    type = MooseVariableFVReal
  []
  [e_time]
    type = MooseVariableFVReal
  []
  [e_advection]
    type = MooseVariableFVReal
  []
  [e_mesh_advection]
    type = MooseVariableFVReal
  []
  [e_conduction]
    type = MooseVariableFVReal
  []
  [e_laser]
    type = MooseVariableFVReal
  []
  [e_radiation]
    type = MooseVariableFVReal
  []
[]
[AuxKernels]
  [mu_out]
    type = FunctorAux
    functor = mu
    variable = mu_out
    execute_on = timestep_end
  []
  [e_time]
    type = TagVectorAux
    variable = e_time
    vector_tag = e_time
    v = T
  []
  [e_advection]
    type = TagVectorAux
    variable = e_advection
    vector_tag = e_advection
    v = T
  []
  [e_mesh_advection]
    type = TagVectorAux
    variable = e_mesh_advection
    vector_tag = e_mesh_advection
    v = T
  []
  [e_conduction]
    type = TagVectorAux
    variable = e_conduction
    vector_tag = e_conduction
    v = T
  []
  [e_laser]
    type = TagVectorAux
    variable = e_laser
    vector_tag = e_laser
    v = T
  []
  [e_radiation]
    type = TagVectorAux
    variable = e_radiation
    vector_tag = e_radiation
    v = T
  []
[]
[Variables]
  [vel_x]
    type = INSFVVelocityVariable
  []
  [vel_y]
    type = INSFVVelocityVariable
  []
  [T]
    type = INSFVEnergyVariable
  []
  [pressure]
    type = INSFVPressureVariable
  []
  [disp_x]
  []
  [disp_y]
  []
[]
[ICs]
  [T]
    type = FunctionIC
    variable = T
    function = '${surfacetemp} + ((${surfacetemp} - ${bottomtemp}) / .35e-3) * y'
  []
[]
[Kernels]
  [disp_x]
    type = MatDiffusion
    variable = disp_x
    diffusivity = 1e6
  []
  [disp_y]
    type = MatDiffusion
    variable = disp_y
    diffusivity = 1e6
  []
[]
[FVKernels]
  # pressure equation
  [mass]
    type = INSFVMassAdvection
    variable = pressure
    advected_interp_method = ${advected_interp_method}
    velocity_interp_method = ${velocity_interp_method}
    rho = ${rho}
    use_displaced_mesh = true
    boundaries_to_force = top
  []
  # momentum equations
  # u equation
  [u_time]
    type = INSFVMomentumTimeDerivative
    variable = vel_x
    rho = ${rho}
    momentum_component = 'x'
    use_displaced_mesh = true
  []
  [u_advection]
    type = INSFVMomentumAdvection
    variable = vel_x
    advected_interp_method = ${advected_interp_method}
    velocity_interp_method = ${velocity_interp_method}
    rho = ${rho}
    momentum_component = 'x'
    use_displaced_mesh = true
  []
  [u_viscosity]
    type = INSFVMomentumDiffusion
    variable = vel_x
    mu = ${mu}
    momentum_component = 'x'
    use_displaced_mesh = true
  []
  [u_pressure]
    type = INSFVMomentumPressureFlux
    variable = vel_x
    momentum_component = 'x'
    pressure = pressure
    use_displaced_mesh = true
  []
  [u_mesh_advection_volumetric]
    type = INSFVMomentumMeshAdvection
    variable = vel_x
    momentum_component = 'x'
    rho = ${rho}
    disp_x = disp_x
    disp_y = disp_y
    add_to_a = false
    use_displaced_mesh = true
  []
  # v equation
  [v_time]
    type = INSFVMomentumTimeDerivative
    variable = vel_y
    rho = ${rho}
    momentum_component = 'y'
    use_displaced_mesh = true
  []
  [v_advection]
    type = INSFVMomentumAdvection
    variable = vel_y
    advected_interp_method = ${advected_interp_method}
    velocity_interp_method = ${velocity_interp_method}
    rho = ${rho}
    momentum_component = 'y'
    use_displaced_mesh = true
  []
  [v_viscosity]
    type = INSFVMomentumDiffusion
    variable = vel_y
    mu = ${mu}
    momentum_component = 'y'
    use_displaced_mesh = true
  []
  [v_pressure]
    type = INSFVMomentumPressureFlux
    variable = vel_y
    momentum_component = 'y'
    pressure = pressure
    use_displaced_mesh = true
  []
  [v_mesh_advection_volumetric]
    type = INSFVMomentumMeshAdvection
    variable = vel_y
    momentum_component = 'y'
    rho = ${rho}
    disp_x = disp_x
    disp_y = disp_y
    add_to_a = false
    use_displaced_mesh = true
  []
  # energy equation
  [temperature_time]
    type = INSFVEnergyTimeDerivative
    variable = T
    rho = ${rho}
    dh_dt = dh_dt
    use_displaced_mesh = true
    extra_vector_tags = 'e_time'
  []
  [temperature_advection]
    type = INSFVEnergyAdvection
    variable = T
    use_displaced_mesh = true
    extra_vector_tags = 'e_advection'
  []
  [temperature_conduction]
    type = FVDiffusion
    coeff = 'k'
    variable = T
    use_displaced_mesh = true
    extra_vector_tags = 'e_conduction'
  []
  [temperature_mesh_advection_volumetric]
    type = INSFVMeshAdvection
    variable = T
    rho = ${rho}
    disp_x = disp_x
    disp_y = disp_y
    advected_quantity = 'h'
    use_displaced_mesh = true
    extra_vector_tags = 'e_mesh_advection'
  []
[]
[FVBCs]
  # momentum boundary conditions
  [no_slip_x]
    type = INSFVNoSlipWallBC
    variable = vel_x
    boundary = 'bottom right left'
    function = 0
  []
  [no_slip_y]
    type = INSFVNoSlipWallBC
    variable = vel_y
    boundary = 'bottom right left'
    function = 0
  []
  [vapor_recoil_x]
    type = INSFVVaporRecoilPressureMomentumFluxBC
    variable = vel_x
    boundary = 'top'
    momentum_component = 'x'
    rc_pressure = rc_pressure
    use_displaced_mesh = true
  []
  [vapor_recoil_y]
    type = INSFVVaporRecoilPressureMomentumFluxBC
    variable = vel_y
    boundary = 'top'
    momentum_component = 'y'
    rc_pressure = rc_pressure
    use_displaced_mesh = true
  []
  # energy boundary conditions
  [T_cold]
    type = FVDirichletBC
    variable = T
    boundary = 'bottom'
    value = '${bottomtemp}'
  []
  [radiation_flux]
    type = FVFunctorRadiativeBC
    variable = T
    boundary = 'top'
    emissivity = '1'
    Tinfinity = 300
    stefan_boltzmann_constant = ${sb}
    use_displaced_mesh = true
    extra_vector_tags = 'e_radiation'
  []
  [weld_flux]
    type = FVGaussianEnergyFluxBC
    variable = T
    boundary = 'top'
    P0 = 159.96989792079225
    R = 1.25e-4
    x_beam_coord = '2e-4 * sin(t * 2 * pi / ${period})'
    y_beam_coord = 0
    z_beam_coord = 0
    use_displaced_mesh = true
    extra_vector_tags = 'e_laser'
  []
[]
[BCs]
  # displacement boundary conditions
  [x_no_disp]
    type = DirichletBC
    variable = disp_x
    boundary = 'bottom'
    value = 0
  []
  [y_no_disp]
    type = DirichletBC
    variable = disp_y
    boundary = 'bottom'
    value = 0
  []
  [displace_x_top]
    type = INSADDisplaceBoundaryBC
    boundary = 'top'
    variable = 'disp_x'
    velocity = 'vel'
    component = 0
    associated_subdomain = 0
  []
  [displace_y_top]
    type = INSADDisplaceBoundaryBC
    boundary = 'top'
    variable = 'disp_y'
    velocity = 'vel'
    component = 1
    associated_subdomain = 0
  []
  [displace_x_top_dummy]
    type = INSADDummyDisplaceBoundaryIntegratedBC
    boundary = 'top'
    variable = 'disp_x'
    velocity = 'vel'
    component = 0
  []
  [displace_y_top_dummy]
    type = INSADDummyDisplaceBoundaryIntegratedBC
    boundary = 'top'
    variable = 'disp_y'
    velocity = 'vel'
    component = 1
  []
[]
[FunctorMaterials]
  [steel]
    type = AriaLaserWeld304LStainlessSteelFunctorMaterial
    temperature = T
    beta = 1e7
  []
  [disp_vec_value_and_dot]
    type = ADGenericVectorFunctorMaterial
    prop_names = 'disp_vec'
    prop_values = 'disp_x disp_y 0'
  []
  [vel]
    type = ADGenericVectorFunctorMaterial
    prop_names = 'vel'
    prop_values = 'vel_x vel_y 0'
  []
[]
[Preconditioning]
  [SMP]
    type = SMP
    full = true
    petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_mat_solver_type -mat_mffd_err'
    petsc_options_value = 'lu       NONZERO               strumpack                  1e-6'
  []
[]
[Executioner]
  type = Transient
  end_time = ${endtime}
  dtmin = 1e-8
  dtmax = ${timestep}
  petsc_options = '-snes_converged_reason -ksp_converged_reason -options_left'
  solve_type = 'PJFNK'
  line_search = 'none'
  nl_max_its = 12
  l_max_its = 100
  [TimeStepper]
    type = IterationAdaptiveDT
    optimal_iterations = 7
    dt = ${timestep}
    linear_iteration_ratio = 1e6
    growth_factor = 1.1
  []
[]
[Outputs]
  exodus = true
  csv = true
[]
[Debug]
  show_var_residual_norms = true
[]
[Postprocessors]
  [laser_flux]
    type = TagVectorSum
    vector = 'e_laser'
  []
  [volume_rho_cp_dT]
    type = TagVectorSum
    vector = 'e_time'
  []
  [conduction]
    type = TagVectorSum
    vector = 'e_conduction'
  []
  [advection]
    type = TagVectorSum
    vector = 'e_advection'
  []
  [mesh_advection]
    type = TagVectorSum
    vector = 'e_mesh_advection'
  []
  [radiation]
    type = TagVectorSum
    vector = 'e_radiation'
  []
  [total_sum]
    type = ParsedPostprocessor
    expression = 'laser_flux + volume_rho_cp_dT + advection + mesh_advection + conduction + radiation'
    pp_names = 'laser_flux volume_rho_cp_dT advection mesh_advection conduction radiation'
  []
[]
(modules/solid_mechanics/test/tests/uel/small_test.i)
[Mesh]
  [gen]
    type = GeneratedMeshGenerator
    dim = 2
    nx = 20
    ny = 10
    xmax = 10
    ymax = 3
    elem_type = TRI3
  []
  [pin]
    type = ExtraNodesetGenerator
    nodes = 106
    new_boundary = pin
    input = gen
  []
  displacements = 'disp_x disp_y'
[]
[Variables]
  [disp_x]
  []
  [disp_y]
  []
[]
[BCs]
  [left_x]
    type = DirichletBC
    variable = disp_x
    boundary = left
    value = 0
  []
  [left_y]
    type = DirichletBC
    variable = disp_y
    boundary = pin
    value = 0
  []
  inactive = 'right_dirichlet'
  [right_neumann]
    type = FunctionNeumannBC
    variable = disp_x
    function = t
    boundary = right
  []
  [right_dirichlet]
    type = FunctionDirichletBC
    variable = disp_x
    function = t/10
    boundary = right
  []
[]
[UserObjects]
  [uel]
    type = AbaqusUserElement
    variables = 'disp_x disp_y'
    plugin = ../../../examples/uel_tri_tests/uel
    use_displaced_mesh = false
    num_state_vars = 6
    constant_properties = '100 0.3' # E nu
    extra_vector_tags = 'kernel_residual'
  []
[]
[Problem]
  kernel_coverage_check = false
  extra_tag_vectors = 'kernel_residual'
[]
[AuxVariables]
  [res_x]
  []
  [res_y]
  []
[]
[AuxKernels]
  [res_x]
    type = TagVectorAux
    variable = res_x
    v = disp_x
    vector_tag = kernel_residual
  []
  [res_y]
    type = TagVectorAux
    variable = res_y
    v = disp_y
    vector_tag = kernel_residual
  []
[]
[Executioner]
  type = Transient
  solve_type = NEWTON
  petsc_options_iname = '-pc_type'
  petsc_options_value = 'lu'
  dt = 1
  num_steps = 15
[]
[Postprocessors]
  [delta_l]
    type = SideAverageValue
    variable = disp_x
    boundary = right
    execute_on = 'INITIAL TIMESTEP_END'
  []
  [V]
    type = ElementIntegralMaterialProperty
    mat_prop = 1
    use_displaced_mesh = true
    execute_on = 'INITIAL TIMESTEP_END'
  []
[]
[Outputs]
  exodus = true
  csv = true
[]
(test/tests/tag/tag_neumann.i)
[Mesh]
  type = GeneratedMesh
  dim = 1
  nx = 10
  construct_side_list_from_node_list = true
[]
[Variables]
  [./u]
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
[]
[AuxVariables]
  [./tag_variable1]
    order = FIRST
    family = LAGRANGE
  [../]
  [./tag_variable2]
    order = FIRST
    family = LAGRANGE
  [../]
[]
[AuxKernels]
  [./TagVectorAux1]
    type = TagVectorAux
    variable = tag_variable1
    v = u
    vector_tag = vec_tag2
  [../]
  [./TagVectorAux2]
    type = TagMatrixAux
    variable = tag_variable2
    v = u
    matrix_tag = mat_tag2
  [../]
[]
[BCs]
  [./left]
    type = DirichletBC
    variable = u
    boundary = left
    value = 0
    extra_matrix_tags = 'mat_tag1 mat_tag2'
    extra_vector_tags = 'vec_tag1'
  [../]
  [./right]
    type = NeumannBC
    variable = u
    boundary = right
    value = 2
    extra_vector_tags = 'vec_tag1 vec_tag2'
  [../]
[]
[Problem]
  type = TagTestProblem
  test_tag_vectors =  'nontime residual vec_tag1 vec_tag2'
  test_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_matrices = 'mat_tag1 mat_tag2'
  extra_tag_vectors  = 'vec_tag1 vec_tag2'
[]
[Executioner]
  type = Steady
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
  exodus = true
[]
(modules/solid_mechanics/include/auxkernels/ReactionForceAux.h)
// This file is part of the MOOSE framework
// https://mooseframework.inl.gov
//
// All rights reserved, see COPYRIGHT for full restrictions
// https://github.com/idaholab/moose/blob/master/COPYRIGHT
//
// Licensed under LGPL 2.1, please see LICENSE for details
// https://www.gnu.org/licenses/lgpl-2.1.html
#pragma once
#include "TagVectorAux.h"
/**
 * ReactionForceAux returns the reaction force corresponding to each DOF.
 */
class ReactionForceAux : public TagVectorAux
{
public:
  static InputParameters validParams();
  ReactionForceAux(const InputParameters & parameters);
};