GeneralizedPlaneStrainAction

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. Use "use_automatic_differentiation" to select the AD construction path.

Constructed Objects

In legacy mode, the action creates the same UserObject, ScalarKernel, and off-diagonal Kernel objects used by existing generalized plane strain inputs.

Table 1: Legacy objects created by GeneralizedPlaneStrainAction

ObjectPurpose
Generalized Plane Strain Off DiagonalCouples the in-plane displacement variables and the scalar out-of-plane strain variable in the off-diagonal Jacobian.
Generalized Plane Strain Scalar KernelAssembles the scalar out-of-plane equilibrium residual.
Generalized Plane Strain User ObjectComputes the residual and diagonal Jacobian data used by the scalar kernel.

In AD mode, the action creates exactly one ADGeneralizedPlaneStrain object. The legacy 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

ObjectPurpose
ADGeneralizedPlaneStrainAssembles the scalar out-of-plane equilibrium residual and AD couplings.

The action also creates the scalar out-of-plane strain variable when it is missing. The automatically created scalar variable is a FIRST order nonlinear scalar variable in nonlinear system nl0. If the named scalar variable already exists in nl0, 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. The pressure may be supplied with "out_of_plane_pressure_function" or with "out_of_plane_pressure_material". In AD mode, the pressure material is read as a regular Real material property, so it does not add derivatives to the scalar equation.

Generalized Plane Strain and Reference Residual

Generalized plane strain problems may use ReferenceResidualProblem. In this case, a reference scalar variable is needed to correspond with the scalar strain variable.

[Problem<<<{"href": "../../syntax/Problem/index.html"}>>>]
  type = ReferenceResidualProblem
  extra_tag_vectors = 'ref'
  reference_vector = 'ref'
[]
(modules/combined/test/tests/generalized_plane_strain_tm_contact/out_of_plane_pressure.i)

The reference scalar variable is set using the AuxScalarKernel Generalized Plane Strain Reference Residual using the Generalized Plane Strain UserObject.

[AuxScalarKernels<<<{"href": "../../syntax/AuxScalarKernels/index.html"}>>>]
  [./gps_ref_res]
    type = GeneralizedPlaneStrainReferenceResidual<<<{"description": "Generalized Plane Strain Reference Residual Scalar Kernel", "href": "../auxkernels/GeneralizedPlaneStrainReferenceResidual.html"}>>>
    variable<<<{"description": "The name of the variable that this kernel operates on"}>>> = saved_zz
    generalized_plane_strain<<<{"description": "The name of the GeneralizedPlaneStrainUserObject"}>>> = gps_GeneralizedPlaneStrainUserObject
  [../]
[]
(modules/combined/test/tests/generalized_plane_strain_tm_contact/out_of_plane_pressure.i)

Example Input Syntax

The following test-spec block shows a modern QuasiStatic generalized plane strain input run in AD mode.

  [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 input shows a standalone [Physics/SolidMechanics/GeneralizedPlaneStrain] action block. The action creates the missing scalar out-of-plane strain variable in AD mode.

[Physics<<<{"href": "../../syntax/Physics/index.html"}>>>]
  [SolidMechanics<<<{"href": "../../syntax/Physics/SolidMechanics/index.html"}>>>]
    [GeneralizedPlaneStrain<<<{"href": "../../syntax/Physics/SolidMechanics/GeneralizedPlaneStrain/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

  • 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)

Required 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

    Options:x, y, z

    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