Hill Constants

Build and rotate the Hill Tensor. It can be used with other Hill plasticity and creep materials.

Description

The HillConstants material transforms the user specified hill constants from global co-ordinates to the material co-ordinates and stores them as a material property. It rotates the hill constants during the initial time step only. This class does not rotate the hill tensor during the simulation. The initial rotation is performed based of the user defined rotation angle parameters. The rotated Hill tensor is obtained as Stewart et al. (2011):

(1)

Here, is the transformed hill tensor, is the initial Hill tensor and is the transformation matrix. The transformation matrix is formed from the components of the total rotation matrix due to initial rotation and the orientation change due to large deformation.

Temperature dependency and large deformation kinematics

The Hill's tensor varies depending on temperature (due to texture) and depending on the material's rotation. To that effect, the user can create functions describing the evolution of the coefficients with temperature and provide it to the material, as follows:

[Materials]
  [hill_constants]
    type = ADHillConstants
    # F G H L M N
    hill_constants = "0.5 0.5 0.5 1.5 1.5 1.5"
    function_names = 'F G H L M N'
    temperature = temperature
  []
[]
(moose/modules/solid_mechanics/test/tests/ad_anisotropic_creep/ad_aniso_creep_temperature_coefficients_function_variation.i)

where six piecewise linear functions are created to define the material directional creep dependency with temperature.

In addition, the code accounts for finite strain rotation to update the Hill's tensor by default. For simple problems, the user can deactivate this feature by setting the input argument use_large_rotation to false. Updating of directional coefficients with finite strain rotation kinematics is strongly encouraged when the material Similarly, use of the transformed Hill's tensor would need to be disabled in the creep model, i.e. the following input file's command line needs to be passed: use_transformation = false.

[Materials]
  [hill_tensor]
    type = ADHillConstants
    # F G H L M N
    hill_constants = "0.5 1.0 0.5 1.5 1.5 1.5"
    use_large_rotation = true
  []
[]
(moose/modules/solid_mechanics/test/tests/ad_anisotropic_creep/3d_bar_orthotropic_90deg_rotation_ad_creep_z.i)
commentnote

Temperature coupling and large deformation updates have only been tested on creep models.

Example Input File Syntax

[Materials]
  [hill_tensor]
    type = ADHillConstants
    # F G H L M N
    hill_constants = "0.5829856 0.364424 0.6342174 2.0691375 2.3492325 1.814589"
    base_name = trial_plasticity
  []
[]
(moose/modules/solid_mechanics/test/tests/anisotropic_plasticity/ad_aniso_plasticity_x.i)

Input Parameters

  • hill_constantsHill material constants in order: F, G, H, L, M, N

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Hill material constants in order: F, G, H, L, M, N

Required Parameters

  • base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases

    C++ Type:std::string

    Unit:(no unit assumed)

    Controllable:No

    Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases

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

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

    Unit:(no unit assumed)

    Controllable:No

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

  • boundaryThe list of boundaries (ids or names) from the mesh where this object applies

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The list of boundaries (ids or names) from the mesh where this object applies

  • computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.

  • constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped

    Default:NONE

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:NONE, ELEMENT, SUBDOMAIN

    Controllable:No

    Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped

  • declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.

  • function_namesA set of functions that describe the evolution of anisotropy with temperature

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

    Unit:(no unit assumed)

    Controllable:No

    Description:A set of functions that describe the evolution of anisotropy with temperature

  • 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

    Unit:(no unit assumed)

    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.

  • rotation_anglesProvide the rotation angles for the transformation matrix. This should be a vector that provides the rotation angles about z-, x-, and z-axis, respectively in degrees.

    C++ Type:libMesh::VectorValue<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Provide the rotation angles for the transformation matrix. This should be a vector that provides the rotation angles about z-, x-, and z-axis, respectively in degrees.

  • temperatureCoupled temperature

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Coupled temperature

  • use_automatic_differentiationFalseWhether thermal contact depends on automatic differentiation materials.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether thermal contact depends on automatic differentiation materials.

  • use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

  • use_large_rotationTrueWhether to rotate the Hill tensor (anisotropic parameters) to account for large kinematic rotations. It's recommended to set it to true if large displacements are to be expected.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether to rotate the Hill tensor (anisotropic parameters) to account for large kinematic rotations. It's recommended to set it to true if large displacements are to be expected.

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    Controllable:No

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

  • seed0The seed for the master random number generator

    Default:0

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:The seed for the master random number generator

  • use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

    Default:False

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

Advanced Parameters

  • output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)

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

    Unit:(no unit assumed)

    Controllable:No

    Description:List of material properties, from this material, to output (outputs must also be defined to an output type)

  • outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object

    Default:none

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object

Outputs Parameters

References

  1. Calvin M Stewart, Ali P Gordon, Young Wha Ma, and Richard W Neu. An anisotropic tertiary creep damage constitutive model for anisotropic materials. International Journal of Pressure Vessels and Piping, 88(8-9):356–364, 2011.[BibTeX]