- 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 simplifies the input syntax for creating a generalized plane strain model. It creates the objects associated with the scalar out-of-plane strain variable and the out-of-plane equilibrium equation. 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 Objects
Without automatic differentiation, the action creates the UserObject, ScalarKernel, and off-diagonal Kernel objects listed below.
Table 1: Non-AD objects created by GeneralizedPlaneStrainAction
| Object | Purpose |
|---|---|
| Generalized Plane Strain Off Diagonal | Couples the 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 the residual and diagonal Jacobian data used by the scalar kernel. |
With "use_automatic_differentiation", the action creates exactly one ADGeneralizedPlaneStrain object. The non-AD UserObject, ScalarKernel, and off-diagonal Kernel objects are not created because ADKernelScalarBase assembles the scalar residual and its couplings through automatic differentiation. When "use_displaced_mesh" is true, the AD kernel uses displaced-mesh quadrature weights for that scalar assembly.
Table 2: AD objects created by GeneralizedPlaneStrainAction
| Object | Purpose |
|---|---|
| ADGeneralizedPlaneStrain | Assembles the scalar out-of-plane equilibrium residual and AD couplings. |
The action also creates the scalar out-of-plane strain variable named by "scalar_out_of_plane_strain" when it is missing. The automatically created scalar variable is a FIRST order nonlinear scalar variable in the nonlinear system that contains the in-plane displacement variables. If the named scalar variable already exists in that system, the action reuses it. A field variable or a scalar variable in a different nonlinear system with the same name is rejected.
Out-of-Plane Pressure
The residual assembled for the scalar out-of-plane strain is where is the out-of-plane pressure. Positive pressure is 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.
The pressure may be supplied with "out_of_plane_pressure_function", with "out_of_plane_pressure_material", or with both; the two contributions are summed and scaled by "pressure_factor". With automatic differentiation, the pressure material is read as a regular Real material property, so it does not add derivatives to the scalar equation.
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 input shows a standalone [Physics/SolidMechanics/GeneralizedPlaneStrain] action block. The action creates the missing scalar out-of-plane strain variable for a model that uses AD.
[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:Real
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