Solid Mechanics QuasiStatic Physics

Set up stress divergence kernels with coordinate system aware logic

The SolidMechanics/QuasiStatic action assembles a consistent set of MOOSE objects for a solid mechanics problem. User-facing documentation, parameters, and examples are on the system page; this page records the objects the action constructs and the compatibility-mode wiring for reference.

Constructed Objects

The action applies to both the legacy StressDivergenceTensors kernels and the Lagrangian kernels; some steps apply to only one system:

  • Add the stress-divergence kernels for the current coordinate system – both systems, Cartesian only for the Lagrangian kernels

  • Add the WeakPlaneStress kernel – only the StressDivergenceTensors system

  • Add the strain calculation material for the chosen strain model – both systems

  • Set use_displaced_mesh correctly – both systems

  • Optional: set up the displacement variables at the correct order – both systems

  • Optional: add AuxVariables and AuxKernels for tensor-component and scalar outputs – both systems

  • Optional: set up out-of-plane stress/strain consistently – only the StressDivergenceTensors system

  • Optional: extract eigenstrain names from materials and apply them to the proper blocks – both systems

  • Optional: set up cell-average homogenization constraints – only the Lagrangian kernels

For the StressDivergenceTensors Kernels

Table 1: Action functionality and constructed objects, legacy StressDivergenceTensors kernel system.

FunctionalityConstructed ClassesAssociated Parameters
Calculate stress divergence equilibrium for the given coordinate systemStressDivergenceTensors and optionally WeakPlaneStress or StressDivergenceRZTensors or StressDivergenceRSphericalTensorsdisplacements : a string of the displacement field variables
Add the displacement variablesVariablesadd_variables: boolean
Calculation of strain for the given coordinate systemComputeFiniteStrain or ComputePlaneFiniteStrain or ComputeAxisymmetric1DFiniteStrain or ComputeAxisymmetricRZFiniteStrainstrain: MooseEnum to select finite or strain formulations
ComputeSmallStrain or ComputePlaneSmallStrain or ComputeAxisymmetric1DSmallStrain or ComputeAxisymmetricRZSmallStrain
ComputeIncrementalStrain or ComputePlaneIncrementalStrain or ComputeAxisymmetric1DIncrementalStrain or ComputeAxisymmetricRZIncrementalStrainincremental : boolean for using a incremental strain formulation
Add AuxVariables and AuxKernels for various tensor component and quantity outputsMaterial Properties as well as AuxVariables and RankTwoAux or RankTwoScalarAux or RankFourAuxgenerate_output: a string of the quantities to add
Add Material Properties for various tensor component and quantity outputsgenerate_output: a string of the quantities to add
Add the optional global strain contribution to the strain calculationCouples the GlobalStrain systemglobal_strain: name of the material property that computes the global strain tensor

For the Lagrangian Kernel System

Table 2: Action functionality and constructed objects, Lagrangian kernel system.

FunctionalityConstructed ClassesAssociated Parameters
Calculate stress divergence equilibrium for the given coordinate systemTotalLagrangianStressDivergence or UpdatedLagrangianStressDivergencedisplacements : a string of the displacement field variables, formulation : a MooseEnum controlling if the UPDATED or TOTAL Lagrangian formulation is used
Add the displacement variablesVariablesadd_variables: boolean
Calculation of strain for the given coordinate systemComputeLagrangianStrainstrain: MooseEnum to select finite or small kinematic formulations
Add AuxVariables and AuxKernels for various tensor component and quantity outputsMaterial Properties as well as AuxVariables and RankTwoAux or RankTwoScalarAux or RankFourAuxgenerate_output: a string of the quantities to add
Add Material Properties for various tensor component and quantity outputsgenerate_output: a string of the quantities to add
Add the optional homogenization constraintsAdds all objects required to impose the homogenization constraintsconstraint_types : MooseEnum controlling whether strain or stress constraints and imposed, targets : Functions providing the time-dependent targets

Compatibility Mode Wiring

Setting compatibility_mode = true configures the Lagrangian kernel system to reproduce the legacy StressDivergenceTensors + ComputeFiniteStrain + ComputeStressBase-style pipeline bit-for-bit. Table 3 summarizes the wiring the action sets up automatically.

Table 3: Mapping from OLD-style parameters to NEW-system settings under compatibility_mode = true.

OLD-style parameter or quantityNEW-system equivalent set automatically
(implied)new_system = true, formulation = TOTAL
decomposition_method = TaylorExpansionkinematic_approximation = rashid_approximate on the strain calculator
decomposition_method = EigenSolutionkinematic_approximation = rashid_eigen on the strain calculator
decomposition_method = HughesWingetRejected at construction (no NEW equivalent)
volumetric_locking_correction = true (FINITE)F_bar_mode = incremental on the strain calc and the kernel
user's ComputeStressBase-style stress materialAuto-wrapped with ComputeLagrangianWrappedStress using objective_rate = rashid and rotate_old_stress = true
(implied for the wrapped material's FSR)publish_rotation_increment = true on the strain calc (when strain = FINITE)
generate_output = stress_*Redirected to read from cauchy_stress_*
generate_output = mechanical_strain_*Redirected to read from rotated_mechanical_strain_*

The user's stress material remains the OLD-style ComputeStressBase descendant (e.g. ComputeMultiPlasticityStress); the action adds the wrapper material around it. See ComputeLagrangianObjectiveStress for the Rashid rate and the kinematic approximations page for the rashid_approximate / rashid_eigen increments.

The action enforces several constraints in compatibility mode:

  • formulation = UPDATED is rejected; the OLD-system equivalence is only defined for the total Lagrangian formulation.

  • decomposition_method = HughesWinget is rejected at construction because the Lagrangian kernel system has no HughesWinget counterpart.

  • strain = SMALL leaves F_bar_mode at its default total value; the strain calculator rejects incremental for small kinematics.