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. A detailed description of the formulation is available on the generalized plane strain page.

warningwarning:For 2D and 1D Simulations

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

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.

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

ObjectPurpose
ADGeneralizedPlaneStrainAssembles 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": "../../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)

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)

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: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