- displacementsThe displacement variables
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The displacement variables
- scalar_out_of_plane_strainScalar variable for the out-of-plane strain (in y direction for 1D Axisymmetric or in z direction for 2D Cartesian problems)
C++ Type:VariableName
Unit:(no unit assumed)
Controllable:No
Description:Scalar variable for the out-of-plane strain (in y direction for 1D Axisymmetric or in z direction for 2D Cartesian problems)
Generalized Plane Strain Action System
Set up the GeneralizedPlaneStrain environment
Description
This action sets up a generalized plane strain model. A detailed description of the formulation is available on the generalized plane strain page.
GeneralizedPlaneStrainAction supports 1D axisymmetric or 2D generalized plane strain cases. For 1D axisymmetric and 2D Cartesian cases in the x-y plane, the number of displacement variables must be one or two, respectively.
For 2D generalized plane strain cases in the x-z or y-z planes, the number of displacement variables must be three.
Constructed MooseObjects
The GeneralizedPlaneStrain Action constructs the objects and scalar out-of-plane strain variable required for a generalized plane strain simulation. When the scalar variable named by "scalar_out_of_plane_strain" does not exist, the action creates a FIRST order nonlinear scalar variable in nonlinear system nl0. If that scalar variable already exists in nl0, the action reuses it.
Table 1: Legacy objects created by GeneralizedPlaneStrainAction
| Object | Purpose |
|---|---|
| Generalized Plane Strain Off Diagonal | Couples in-plane displacement variables and the scalar out-of-plane strain variable in the off-diagonal Jacobian. |
| Generalized Plane Strain Scalar Kernel | Assembles the scalar out-of-plane equilibrium residual. |
| Generalized Plane Strain User Object | Computes residual and diagonal Jacobian data for the scalar kernel. |
When "use_automatic_differentiation" is true, the action creates exactly one AD object and skips the legacy UserObject, ScalarKernel, and off-diagonal Kernel objects. ADKernelScalarBase owns the scalar residual assembly in this mode; when "use_displaced_mesh" is true, the AD kernel uses displaced-mesh quadrature weights for the scalar equation.
Table 2: AD objects created by GeneralizedPlaneStrainAction
| Object | Purpose |
|---|---|
| ADGeneralizedPlaneStrain | Assembles the scalar out-of-plane equilibrium residual and AD couplings. |
The scalar residual is where is positive when applied toward the body. In Cartesian coordinates, the out-of-plane x, y, and z directions use , , and , respectively. In RZ axisymmetry, the out-of-plane direction is the axial y direction and the residual uses axisymmetric coordinate weighting.
Example Input Syntax
Subblocks
The subblocks of the GeneralizedPlaneStrain action trigger object construction. If a generalized plane strain model is applied to the whole simulation domain, use a single subblock.
[./GeneralizedPlaneStrain]
[./gps]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
out_of_plane_pressure_function = traction_function
pressure_factor = 1e5
[../]
[../](modules/solid_mechanics/test/tests/generalized_plane_strain/out_of_plane_pressure.i)If different mesh subdomains use different generalized plane strain models, use multiple subblocks with subdomain restrictions.
[./GeneralizedPlaneStrain]
[./gps1]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz1
block = '1'
[../]
[./gps2]
use_displaced_mesh = true
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz2
block = '2'
[../]
[../](modules/solid_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_squares.i)An example of using generalized plane strain through the Solid Mechanics QuasiStatic physics block with an "out_of_plane_direction" different from the default direction is given by:
[./generalized_plane_strain]
block = 1
strain = SMALL
scalar_out_of_plane_strain = scalar_strain_yy
out_of_plane_direction = y
planar_formulation = GENERALIZED_PLANE_STRAIN
eigenstrain_names = 'eigenstrain'
generate_output = 'stress_xx stress_xz stress_yy stress_zz strain_xx strain_xz strain_yy strain_zz'
[../](modules/solid_mechanics/test/tests/2D_different_planes/gps_xz.i)Parameters supplied at the [Physics/SolidMechanics/GeneralizedPlaneStrain] level act as defaults for the QuasiStatic Physics subblocks.
The following test-spec block shows the standard small-strain generalized plane strain input run with automatic differentiation.
[generalized_plane_strain_small_ad]
type = 'Exodiff'
input = 'generalized_plane_strain_small.i'
exodiff = 'generalized_plane_strain_small_out.e'
custom_cmp = 'generalized.exodiff'
prereq = generalized_plane_strain_small
cli_args = 'Physics/SolidMechanics/QuasiStatic/all/use_automatic_differentiation=true '
'Postprocessors/react_z/type=ADMaterialTensorIntegral '
'Materials/elastic_tensor/type=ADComputeIsotropicElasticityTensor '
'Materials/thermal_strain/type=ADComputeThermalExpansionEigenstrain '
'Materials/stress/type=ADComputeLinearElasticStress'
requirement = 'The system shall support an automatic-differentiation generalized plane strain mechanics solution'
design = 'ADComputePlaneSmallStrain.md'
[]
(modules/solid_mechanics/test/tests/generalized_plane_strain/tests)The following standalone action input lets the action create the missing scalar out-of-plane strain variable in AD mode.
[Physics<<<{"href": "../../index.html"}>>>]
[SolidMechanics<<<{"href": "../index.html"}>>>]
[GeneralizedPlaneStrain<<<{"href": "index.html"}>>>]
[gps]
use_automatic_differentiation<<<{"description": "Use automatic differentiation to assemble the generalized plane strain equation and its coupling terms"}>>> = true
use_displaced_mesh<<<{"description": "Whether to use displaced mesh"}>>> = true
displacements<<<{"description": "The displacement variables"}>>> = 'disp_x disp_y'
scalar_out_of_plane_strain<<<{"description": "Scalar variable for the out-of-plane strain (in y direction for 1D Axisymmetric or in z direction for 2D Cartesian problems)"}>>> = scalar_strain_zz
out_of_plane_pressure_function<<<{"description": "Function used to prescribe pressure (applied toward the body) in the out-of-plane direction (y for 1D Axisymmetric or z for 2D Cartesian problems)"}>>> = traction_function
pressure_factor<<<{"description": "Scale factor applied to prescribed out-of-plane pressure (both material and function)"}>>> = 1e5
[]
[]
[]
[](modules/solid_mechanics/test/tests/generalized_plane_strain/generalized_plane_strain_auto_scalar.i)Input Parameters
- absolute_value_vector_tagsThe tag names for extra vectors that the absolute value of the residual should be accumulated into
C++ Type:std::vector<TagName>
Controllable:No
Description:The tag names for extra vectors that the absolute value of the residual should be accumulated into
- active__all__ If specified only the blocks named will be visited and made active
Default:__all__
C++ Type:std::vector<std::string>
Controllable:No
Description:If specified only the blocks named will be visited and made active
- base_nameMaterial property base name
C++ Type:std::string
Controllable:No
Description:Material property base name
- blockThe list of ids of the blocks (subdomain) that the GeneralizedPlaneStrain kernels will be applied to
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of ids of the blocks (subdomain) that the GeneralizedPlaneStrain kernels will be applied to
- extra_vector_tagsThe tag names for extra vectors that residual data should be saved into
C++ Type:std::vector<TagName>
Controllable:No
Description:The tag names for extra vectors that residual data should be saved into
- inactiveIf specified blocks matching these identifiers will be skipped.
C++ Type:std::vector<std::string>
Controllable:No
Description:If specified blocks matching these identifiers will be skipped.
- out_of_plane_directionzThe direction of the out-of-plane strain.
Default:z
C++ Type:MooseEnum
Controllable:No
Description:The direction of the out-of-plane strain.
- out_of_plane_pressure_functionFunction used to prescribe pressure (applied toward the body) in the out-of-plane direction (y for 1D Axisymmetric or z for 2D Cartesian problems)
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Function used to prescribe pressure (applied toward the body) in the out-of-plane direction (y for 1D Axisymmetric or z for 2D Cartesian problems)
- out_of_plane_pressure_material0Material used to prescribe pressure (applied toward the body) in the out-of-plane direction
Default:0
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:Material used to prescribe pressure (applied toward the body) in the out-of-plane direction
- pressure_factorScale factor applied to prescribed out-of-plane pressure (both material and function)
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Scale factor applied to prescribed out-of-plane pressure (both material and function)
- temperatureThe temperature variable
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The temperature variable
- use_automatic_differentiationFalseUse automatic differentiation to assemble the generalized plane strain equation and its coupling terms
Default:False
C++ Type:bool
Controllable:No
Description:Use automatic differentiation to assemble the generalized plane strain equation and its coupling terms
- use_displaced_meshFalseWhether to use displaced mesh
Default:False
C++ Type:bool
Controllable:No
Description:Whether to use displaced mesh
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.
Advanced Parameters
Associated Actions
Available Actions
- Solid Mechanics App
- GeneralizedPlaneStrainActionSet up the GeneralizedPlaneStrain environment