CrystalPlasticityTwinningKalidindiUpdate

Twinning propagation model based on Kalidindi's treatment of twinning in a FCC material

CrystalPlasticityTwinningKalidindiUpdate is designed to be used in conjunction with the ComputeMultipleCrystalPlasticityStress class to calculate the response of a FCC crystalline solid. Details about the algorithm and specific stress and strain measures used in the CrystalPlasticityUpdate base class are given on the documentation page for ComputeMultipleCrystalPlasticityStress.

Additionally CrystalPlasticityTwinningKalidindiUpdate is intended to be used with a constitutive model for dislocation glide or slip: combining this twinning model with CrystalPlasticityKalidindiUpdate will replicate the coupling of the two constitutive models through the plastic velocity gradient calcualtion as presented in Kalidindi (2001).

Constitutive Model Definition

Proposed by Kalidindi, this straight-forward twinning propagation model computes the plastic shear increment due to twinning with a power law constiutive model: where is the reference slip rate, is the applied resolved shear stress, g is the twin propagation resistance value, m is the slip rate sensitivity exponent, f is the sum of the twin volume fraction on all twin systems, and f is the user-defined upper limit for the twin volume fraction. This constitutive model does not allow de-twinning.

The rate of twin volume fraction on each twin system is calculated from the system plastic shear increment where is the characteristic shear of the twin (Kalidindi, 2001).

The twin propagation resistance is calculated as a function of the twin volume fraction and the characteristic twin shear, with different hardening coefficients for non-coplanar and coplanar twinning systems. The different coefficients are required to capture experimental observations of early twinning deformation on non-coplanar systems (Kalidindi, 2001). where h is the user-defined non-coplanar hardening coefficent, b is the hardening exponent for non-coplanar twin systems, and h is the user-defined coplanar hardening coefficient.

Plastic Velocity Gradient Calculation

In simulations where both twin propagation and dislocation slip constitutive models are included, the influence of the twin propagation on the plastic velocity gradient is implemented as a fraction of the twin volume fraction (1) where is the plastic shear rate due to dislocation slip, S is the Schmid tensor for the slip systems, and S is the Schmid tensor for the twinning system. Note that the value of the total volume fraction of twins used in Eq. (1) lags by single timestep. The use of this lagged value is designated by the subscript. This modification requires that the name for the total twin volume fraction material property be provided to the dislocation slip constitutive model as shown below.

Example Input File Syntax

[twin_only_xtalpl]
  type = CrystalPlasticityTwinningKalidindiUpdate
  number_slip_systems = 12
  slip_sys_file_name = 'fcc_input_twinning_systems.txt'
  initial_twin_lattice_friction = 3.0
  non_coplanar_coefficient_twin_hardening = 8e5
  coplanar_coefficient_twin_hardening = 8e4
[]
(../moose/modules/tensor_mechanics/test/tests/crystal_plasticity/twinning/only_twinning_fcc.i)

CrystalPlasticityTwinningKalidindiUpdate must be run in conjunction with the crystal plasticity specific stress calculator as shown below:

[stress]
  type = ComputeMultipleCrystalPlasticityStress
  crystal_plasticity_models = 'twin_only_xtalpl'
  tan_mod_type = exact
  maximum_substep_iteration = 2
[]
(../moose/modules/tensor_mechanics/test/tests/crystal_plasticity/twinning/only_twinning_fcc.i)

In most cases this twinning model is intended to be used with a dislocation glide or slip model, such as CrystalPlasticityKalidindiUpdate. To couple the volume fraction of twins to the dislocation slip plastic velocity gradient contribution, as shown in Eq. (1). The name of the total twin volume fraction material property must be supplied to the glide or slip material model:

[slip_xtalpl]
  type = CrystalPlasticityKalidindiUpdate
  number_slip_systems = 12
  slip_sys_file_name = input_slip_sys.txt
  total_twin_volume_fraction = 'twin_total_volume_fraction_twins'
[]
(../moose/modules/tensor_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_100compression.i)

Input Parameters

  • number_slip_systemsThe total number of possible active slip systems for the crystalline material

    C++ Type:unsigned int

    Controllable:No

    Description:The total number of possible active slip systems for the crystalline material

  • slip_sys_file_nameName of the file containing the slip systems, one slip system per row, with the slip plane normal given before the slip plane direction.

    C++ Type:FileName

    Controllable:No

    Description:Name of the file containing the slip systems, one slip system per row, with the slip plane normal given before the slip plane direction.

Required Parameters

  • base_nameOptional parameter that allows the user to define multiple crystal plasticity mechanisms

    C++ Type:std::string

    Controllable:No

    Description:Optional parameter that allows the user to define multiple crystal plasticity mechanisms

  • 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

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

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

    Controllable:No

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

  • characteristic_twin_shear0.707107The amount of shear that is associated with a twin in this cubic structure

    Default:0.707107

    C++ Type:double

    Controllable:No

    Description:The amount of shear that is associated with a twin in this cubic structure

  • 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

    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

  • coplanar_coefficient_twin_hardening800Hardening coefficient for coplanar twin systems strength as a function of the volume fraction of twins

    Default:800

    C++ Type:double

    Controllable:No

    Description:Hardening coefficient for coplanar twin systems strength as a function of the volume fraction of twins

  • crystal_lattice_typeFCCCrystal lattice type or representative unit cell, i.e., BCC, FCC, HCP, etc.

    Default:FCC

    C++ Type:MooseEnum

    Options:BCC, FCC, HCP

    Controllable:No

    Description:Crystal lattice type or representative unit cell, i.e., BCC, FCC, HCP, etc.

  • declare_suffixAn optional suffix parameter that can be appended to any declared 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 declared properties. The suffix will be prepended with a '_' character.

  • initial_total_twin_volume_fraction0The initial sum of the twin volume fraction across all twin systems in the crystal, if any. This value is distributed evenly across all twin systems in the crystal.

    Default:0

    C++ Type:double

    Controllable:No

    Description:The initial sum of the twin volume fraction across all twin systems in the crystal, if any. This value is distributed evenly across all twin systems in the crystal.

  • initial_twin_lattice_friction0The initial value of the lattice friction for twin propogation, often calculated as a fraction of the Peierls strength

    Default:0

    C++ Type:double

    Controllable:No

    Description:The initial value of the lattice friction for twin propogation, often calculated as a fraction of the Peierls strength

  • non_coplanar_coefficient_twin_hardening8000The factor to apply to the hardening of non-coplanar twin systems strength as a function of the volume fraction of twins

    Default:8000

    C++ Type:double

    Controllable:No

    Description:The factor to apply to the hardening of non-coplanar twin systems strength as a function of the volume fraction of twins

  • non_coplanar_twin_hardening_exponent0.05Parameter used to increase the hardening of non-coplanar twin systems such that the propagation of twins on conplanar systems is favored at early deformation stages.

    Default:0.05

    C++ Type:double

    Controllable:No

    Description:Parameter used to increase the hardening of non-coplanar twin systems such that the propagation of twins on conplanar systems is favored at early deformation stages.

  • number_cross_slip_directions0Quanity of unique slip directions, used to determine cross slip familes

    Default:0

    C++ Type:double

    Controllable:No

    Description:Quanity of unique slip directions, used to determine cross slip familes

  • number_cross_slip_planes0Quanity of slip planes belonging to a single cross slip direction; used to determine cross slip families

    Default:0

    C++ Type:double

    Controllable:No

    Description:Quanity of slip planes belonging to a single cross slip direction; used to determine cross slip families

  • print_state_variable_convergence_error_messagesFalseWhether or not to print warning messages from the crystal plasticity specific convergence checks on both the constiutive model internal state variables.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether or not to print warning messages from the crystal plasticity specific convergence checks on both the constiutive model internal state variables.

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

  • resistance_tol0.01Constitutive slip system resistance relative residual tolerance for each individual constitutive model

    Default:0.01

    C++ Type:double

    Controllable:No

    Description:Constitutive slip system resistance relative residual tolerance for each individual constitutive model

  • slip_increment_tolerance0.02Maximum allowable slip in an increment for each individual constitutive model

    Default:0.02

    C++ Type:double

    Controllable:No

    Description:Maximum allowable slip in an increment for each individual constitutive model

  • stol0.01Constitutive internal state variable relative change tolerance

    Default:0.01

    C++ Type:double

    Controllable:No

    Description:Constitutive internal state variable relative change tolerance

  • twin_reference_strain_rate0.001The reference strain rate, gamma_o, for the power law plastic slip law due to twin propagation.

    Default:0.001

    C++ Type:double

    Controllable:No

    Description:The reference strain rate, gamma_o, for the power law plastic slip law due to twin propagation.

  • twin_strain_rate_sensitivity_exponent0.05The strain rate sensitivity exponent for twin propagation power law strain rate calculation

    Default:0.05

    C++ Type:double

    Controllable:No

    Description:The strain rate sensitivity exponent for twin propagation power law strain rate calculation

  • unit_cell_dimension1 1 1 The dimension of the unit cell along three directions, where a cubic unit cell is assumed for cubic crystals and a hexagonal unit cell (a, a, c) is assumed for HCP crystals. These dimensions will be taken into account while computing the slip systems. Default size is 1.0 along all three directions.

    Default:1 1 1

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

    Controllable:No

    Description:The dimension of the unit cell along three directions, where a cubic unit cell is assumed for cubic crystals and a hexagonal unit cell (a, a, c) is assumed for HCP crystals. These dimensions will be taken into account while computing the slip systems. Default size is 1.0 along all three directions.

  • upper_limit_twin_volume_fraction0.8The maximumum amount of twinning volume fraction allowed

    Default:0.8

    C++ Type:double

    Controllable:No

    Description:The maximumum amount of twinning volume fraction allowed

  • zero_tol1e-12Tolerance for residual check when variable value is zero for each individual constitutive model

    Default:1e-12

    C++ Type:double

    Controllable:No

    Description:Tolerance for residual check when variable value is zero for each individual constitutive model

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.

  • 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

  • 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

  • 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

    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>

    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>

    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. Surya R Kalidindi. Modeling anisotropic strain hardening and deformation textures in low stacking fault energy fcc metals. International Journal of Plasticity, 17:837–860, 2001.[BibTeX]