- number_slip_systemsThe total number of possible active slip systems for the crystalline material
C++ Type:unsigned int
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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.
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 calculation 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 constitutive 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 coefficient, 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
[Materials]
[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/solid_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:
[Materials]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_only_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 2
[]
[]
(moose/modules/solid_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:
[Materials]
[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/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_100compression.i)Input Parameters
- base_nameOptional parameter that allows the user to define multiple crystal plasticity mechanisms
C++ Type:std::string
Unit:(no unit assumed)
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>
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
- characteristic_twin_shear0.707107The amount of shear that is associated with a twin in this cubic structure
Default:0.707107
C++ Type:double
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
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.
- 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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
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.
- resistance_tol0.01Constitutive slip system resistance relative residual tolerance for each individual constitutive model
Default:0.01
C++ Type:double
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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>
Unit:(no unit assumed)
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
Unit:(no unit assumed)
Controllable:No
Description:The maximumum amount of twinning volume fraction allowed
- 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.
- zero_tol1e-12Tolerance for residual check when variable value is zero for each individual constitutive model
Default:1e-12
C++ Type:double
Unit:(no unit assumed)
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>
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
- 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]