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
StressDivergenceTensorssystemAdd the strain calculation material for the chosen strain model – both systems
Set
use_displaced_meshcorrectly – both systemsOptional: 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
StressDivergenceTensorssystemOptional: 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.
| Functionality | Constructed Classes | Associated Parameters |
|---|---|---|
| Calculate stress divergence equilibrium for the given coordinate system | StressDivergenceTensors and optionally WeakPlaneStress or StressDivergenceRZTensors or StressDivergenceRSphericalTensors | displacements : a string of the displacement field variables |
| Add the displacement variables | Variables | add_variables: boolean |
| Calculation of strain for the given coordinate system | ComputeFiniteStrain or ComputePlaneFiniteStrain or ComputeAxisymmetric1DFiniteStrain or ComputeAxisymmetricRZFiniteStrain | strain: MooseEnum to select finite or strain formulations |
| ComputeSmallStrain or ComputePlaneSmallStrain or ComputeAxisymmetric1DSmallStrain or ComputeAxisymmetricRZSmallStrain | ||
| ComputeIncrementalStrain or ComputePlaneIncrementalStrain or ComputeAxisymmetric1DIncrementalStrain or ComputeAxisymmetricRZIncrementalStrain | incremental : boolean for using a incremental strain formulation | |
| Add AuxVariables and AuxKernels for various tensor component and quantity outputs | Material Properties as well as AuxVariables and RankTwoAux or RankTwoScalarAux or RankFourAux | generate_output: a string of the quantities to add |
| Add Material Properties for various tensor component and quantity outputs | generate_output: a string of the quantities to add | |
| Add the optional global strain contribution to the strain calculation | Couples the GlobalStrain system | global_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.
| Functionality | Constructed Classes | Associated Parameters |
|---|---|---|
| Calculate stress divergence equilibrium for the given coordinate system | TotalLagrangianStressDivergence or UpdatedLagrangianStressDivergence | displacements : a string of the displacement field variables, formulation : a MooseEnum controlling if the UPDATED or TOTAL Lagrangian formulation is used |
| Add the displacement variables | Variables | add_variables: boolean |
| Calculation of strain for the given coordinate system | ComputeLagrangianStrain | strain: MooseEnum to select finite or small kinematic formulations |
| Add AuxVariables and AuxKernels for various tensor component and quantity outputs | Material Properties as well as AuxVariables and RankTwoAux or RankTwoScalarAux or RankFourAux | generate_output: a string of the quantities to add |
| Add Material Properties for various tensor component and quantity outputs | generate_output: a string of the quantities to add | |
| Add the optional homogenization constraints | Adds all objects required to impose the homogenization constraints | constraint_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 quantity | NEW-system equivalent set automatically |
|---|---|
| (implied) | new_system = true, formulation = TOTAL |
decomposition_method = TaylorExpansion | kinematic_approximation = rashid_approximate on the strain calculator |
decomposition_method = EigenSolution | kinematic_approximation = rashid_eigen on the strain calculator |
decomposition_method = HughesWinget | Rejected 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 material | Auto-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 = UPDATEDis rejected; the OLD-system equivalence is only defined for the total Lagrangian formulation.decomposition_method = HughesWingetis rejected at construction because the Lagrangian kernel system has noHughesWingetcounterpart.strain = SMALLleavesF_bar_modeat its defaulttotalvalue; the strain calculator rejectsincrementalfor small kinematics.