HomogenizedTotalLagrangianStressDivergence

Total Lagrangian stress equilibrium kernel with homogenization constraint Jacobian terms

Overview

This object provides the total Lagrangian stress equilibrium kernel and corresponding Jacobian for the homogenization system. It is identical to the TotalLagrangianStressDivergence class except it also provides the correct off-diagonal Jacobinan terms for the Lagrangian kernel homogenization system.

The TensorMechanics/MasterAction can add this object automatically, which is the recommended way to set up homogenization constraints.

Example Input File Syntax

The following example manually specifies the parameters required to setup the kernel for a large deformation homogenization problem. The macro_gradient parameter is the name of the ScalarVariable containing the homogenization strain or displacement gradient field. The constraint_types parameters controls the type of constraint (deformation or stress) for each input. The homogenization system documentation lists the order of these inputs for each problem dimension/type.

[Kernels]
  [sdx]
    type = HomogenizedTotalLagrangianStressDivergence
    variable = disp_x
    component = 0
    displacements = 'disp_x disp_y disp_z'
    large_kinematics = true
    macro_gradient = hvar
    constraint_types = 'stress strain strain stress stress strain stress stress stress'
  []
  [sdy]
    type = HomogenizedTotalLagrangianStressDivergence
    variable = disp_y
    component = 1
    displacements = 'disp_x disp_y disp_z'
    large_kinematics = true
    macro_gradient = hvar
    constraint_types = 'stress strain strain stress stress strain stress stress stress'
  []
  [sdz]
    type = HomogenizedTotalLagrangianStressDivergence
    variable = disp_z
    component = 2
    displacements = 'disp_x disp_y disp_z'
    large_kinematics = true
    macro_gradient = hvar
    constraint_types = 'stress strain strain stress stress strain stress stress stress'
  []
[]
(modules/tensor_mechanics/test/tests/lagrangian/total/homogenization/large-tests/3d-stress.i)

Input Parameters

  • componentAn integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z)

    C++ Type:unsigned int

    Controllable:No

    Description:An integer corresponding to the direction the variable this kernel acts in. (0 for x, 1 for y, 2 for z)

  • displacementsThe displacement components

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:The displacement components

  • macro_gradientOptional scalar field with the macro gradient

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:Optional scalar field with the macro gradient

  • variableThe name of the variable that this residual object operates on

    C++ Type:NonlinearVariableName

    Controllable:No

    Description:The name of the variable that this residual object operates on

Required Parameters

  • base_nameMaterial property base name

    C++ Type:std::string

    Controllable:No

    Description:Material property base name

  • blockThe list of blocks (ids or names) that this object will be applied

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The list of blocks (ids or names) that this object will be applied

  • constraint_typesType of each constraint: strain or stress

    C++ Type:MultiMooseEnum

    Options:strain, stress

    Controllable:No

    Description:Type of each constraint: strain or stress

  • eigenstrain_namesList of eigenstrains used in the strain calculation. Used for computing their derivatives for off-diagonal Jacobian terms.

    C++ Type:std::vector<MaterialPropertyName>

    Controllable:No

    Description:List of eigenstrains used in the strain calculation. Used for computing their derivatives for off-diagonal Jacobian terms.

  • large_kinematicsFalseUse large displacement kinematics

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Use large displacement kinematics

  • prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

  • stabilize_strainFalseAverage the volumetric strains

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Average the volumetric strains

  • temperatureThe name of the temperature variable used in the ComputeThermalExpansionEigenstrain. (Not required for simulations without temperature coupling.)

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:The name of the temperature variable used in the ComputeThermalExpansionEigenstrain. (Not required for simulations without temperature coupling.)

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.

  • diag_save_inThe name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

    C++ Type:std::vector<AuxVariableName>

    Controllable:No

    Description:The name of auxiliary variables to save this Kernel's diagonal Jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

  • implicitTrueDetermines whether this object is calculated using an implicit or explicit form

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Determines whether this object is calculated using an implicit or explicit form

  • save_inThe name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

    C++ Type:std::vector<AuxVariableName>

    Controllable:No

    Description:The name of auxiliary variables to save this Kernel's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

  • seed0The seed for the master random number generator

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The seed for the master random number generator

Advanced Parameters

  • extra_matrix_tagsThe extra tags for the matrices this Kernel should fill

    C++ Type:std::vector<TagName>

    Controllable:No

    Description:The extra tags for the matrices this Kernel should fill

  • extra_vector_tagsThe extra tags for the vectors this Kernel should fill

    C++ Type:std::vector<TagName>

    Controllable:No

    Description:The extra tags for the vectors this Kernel should fill

  • matrix_tagssystemThe tag for the matrices this Kernel should fill

    Default:system

    C++ Type:MultiMooseEnum

    Options:nontime, system

    Controllable:No

    Description:The tag for the matrices this Kernel should fill

  • vector_tagsnontimeThe tag for the vectors this Kernel should fill

    Default:nontime

    C++ Type:MultiMooseEnum

    Options:nontime, time

    Controllable:No

    Description:The tag for the vectors this Kernel should fill

Tagging Parameters

Input Files