- crystal_plasticity_modelsThe material objects to use to calculate crystal plasticity stress and strains.
C++ Type:std::vector<MaterialName>
Controllable:No
Description:The material objects to use to calculate crystal plasticity stress and strains.
Compute Multiple Crystal Plasticity Stress
Crystal Plasticity base class: handles the Newton iteration over the stress residual and calculates the Jacobian based on constitutive laws from multiple material classes that are inherited from CrystalPlasticityStressUpdateBase
Description
Among the many fields which study the mechanics of crystalline solids, crystal plasticity has been established as a capable tool to explore the relationship between crystalline microstructure evolution and engineering scale stress response (Asaro, 1983; Roters et al., 2010). The formulation of crystal plasticity within a continuum mechanics framework enables the utilization of these models for longer time scales and larger length scales than atomistic and dislocations dynamics models which explicitly track each individual dislocation and defect.
The ComputeMultipleCrystalPlasticityStress
class is designed to facilitate the implementation of different crystal plasticity constitutive laws with a certain degree of modularity among models (e.g., flexibility to include one or several slip modes). Comparing to the existing FiniteStrainUObasedCP class, ComputeMultipleCrystalPlasticityStress
relies on the Materials
system instead of the UserObject
system, to store and update state variables. This means for a specific constitutive model, the computation of variables, e.g., slip rate, slip resistance, state variables, and the associated rate components will all be self-contained in one material class. As a result, this base class greatly reduces the number of additional classes that is necessary for a new crystal plasticity constitutive model. Meanwhile, the input block that defines a specific crystal plasticity model is also significantly simplified.
The class ComputeMultipleCrystalPlasticityStress
is designed to be used in conjunction with one or several crystal plasticity models that are derived from the CrystalPlasticityStressUpdateBase
class.
Any constitutive crystal plasticity model developed for use with the ComputeMultipleCrystalPlasticityStress
class must inherit from the CrystalPlasticityStressUpdateBase
class.
Crystal Plasticity Governing Equations
Within the ComputeMultipleCrystalPlasticityStress
base class, the crystal slip and resulting strain increment are implemented in an updated Lagrangian incremental form. As such, all constitutive evolution equations should also be written in the Lagrangian form (and related to the reference frame).
The corresponding second Piola-Kirchhoff stress measure is used to determine local convergence, at each quadrature point, with in the crystal plasticity constitutive model base class. Once convergence is achieved within the user-specified tolerances, the equivalent Cauchy stress value is calculated. The Cauchy stress measure is then used in the traditional FEM residual calculation within the MOOSE framework (see Figure 2).
A brief overview of the relevant continuum mechanics concepts for the crystal plasticity constitutive model base class is given below.
Constitutive Equations
For finite strain inelastic mechanics of crystal plasticity the deformation gradient is assumed to be multiplicatively decomposed in its elastic and plastic parts as (see e.g., Asaro (1983)): such that and are the elastic and plastic deformation gradients, respectively. The elastic and plastic deformation gradients define two deformed configurations: one intermediate configuration described by , and a final deformed configuration . Here, the change in the crystal shape due to dislocation motion is accounted for in the plastic deformation gradient tensor, , the elastic deformation gradient tensor, , accounts for recoverable elastic stretch and rotations of the crystal lattice,
For a thermo-mechanical problem, a third configuration is introduced accounting for thermal deformations (see e.g., Li et al. (2019), Ozturk et al. (2016), and Meissonnier et al. (2001)). The resulting decomposition reads (1) where is the thermal deformation gradient, such that . The thermal deformation gradient accounts for the deformation of the crystal lattice due to thermal expansion. The constitutive equation and calculation details associated with the thermal deformation gradient are included in ComputeCrystalPlasticityThermalEigenstrain.
The total plastic velocity gradient can be expressed in terms of the plasticity deformation gradient as (2) This formulation is used to compute the updated plastic deformation gradient via backward time integration, i.e., (3) where is the second order identity tensor, the subscript denotes the current step, denotes the previous step, and is the time step size. The plastic deformation gradient is used to calculate the elastic deformation gradient via Eq. (1), which is then used in the computation of the elastic Lagrangian strain. The elastic Lagrangian strain is defined as (4) Let be the second Piola-Kirchhoff tensor, the stress that is work conjugate to . An elastic constitutive relation is given by (5) where is the fourth-order temperature dependent elasticity tensor. The stress is the pull back of the Cauchy stress () from the current configuration which is, (6)
To account for multiple deformation mechanisms, the total plastic velocity gradient () is computed as the sum of plastic velocity gradients coming from each crystal plasticity constitutive equations, (7) where is the plastic velocity gradient corresponding to th th crystal plasticity deformation mechanism, is the total number of deformation modes. Here, is defined as the sum of the slip increments on all of the slip systems (Asaro, 1983), (8) where is the slip rate for the the model on the slip system . Note that the associated slip direction and slip plane normal unit vectors, and , are defined in the reference configuration. The evolution of the plastic slip must be specified for every slip plane and every slip mechanism, which can be expressed as (9) which can take different forms among constitutive models used in crystal plasticity. Here, the denotes the slip resistance and denotes the resolved shear stress that is associated with slip system and model , respectively.
The resolved shear stress is defined as (10) Here, we report the shear stress in a form that considers the thermal effect. For readers who are particularly interested in the thermal eigenstrain calculations, please refer to the ComputeCrystalPlasticityThermalEigenstrain documentation page.
To facilitate the understanding of the above constitutive equations, some fundamental continuum mechanics concepts are included in the following subsections.
Deformation Gradient and Strain Measure in the Reference Configuration
The deformation gradient can be used to find the deformation in the reference configuration as (11) where an upper case subscript denotes the reference configuration, a lower case subscript denotes the current configuration, and denotes the displacement.
The deformation gradient can be multiplicatively decomposed via the Cauchy theorem for nonsingular tensors into two rank-2 tensors, one representing the stretch and the other rotation motion (Malvern, 1969), (12) where is the orthogonal rotation tensor and and are the symmetric right and left stretch tensors, respectively. Cauchy (1827) and Green (1841) introduced the following deformation tensors (13) (14) where and are the left and right Cauchy-Green deformation tensors. These deformation tensors enable the introduction of the Green-Saint Venant and the Almansi-Hemel strain tensors. The Lagrangian Green-Saint Venant strain tensor can be expressed as a function of the right Cauchy-Green deformation tensor (Slaughter, 2012) (15) where is the second order identity tensor. The Lagrangian strain tensor enables the calculation of the strain with respect to the reference configuration as a function of the deformation gradient. In this ComputeMultipleCrystalPlasticityStress
class, the elastic part of the Lagrangian strain tensor () is utilized in the calculation of stress (see Eq. (4) and Eq. (5)).
Second Piola-Kirchhoff Stress
In writing a constitutive equation the appropriate, corresponding strain and stress measures must be used: the work conjugate pairs. The work conjugate to the Lagrangian strain tensor is the second Piola-Kirchhoff stress measure.
Both the first and second Piola-Kirchhoff stress measures are defined on the reference configuration, although only the second Piola-Kirchhoff stress tensor is symmetric. The second Piola-Kirchhoff stress tensor can be defined from the Cauchy stress tensor as (16) The inverse deformation gradient is used to relate the current configuration frame back to the reference frame (i.e., pull back). Note in the ComputeMultipleCrystalPlasticityStress
class, the pull back of Cauchy stress is via the elastic part of the deformation gradient () only (see Eq. (6)).
Calculation of Schmid Tensor
The calculation of the flow direction Schmid tensor, the dyadic product of the slip direction and slip plane normal unit vectors, , is straight forward for the case of cubic crystals, including Face Centered Cubic (FCC) and Body Centered Cubic (BCC) crystals. The 3-index Miller indices commonly used to describe the slip direction and slip plane normals are first normalized individually normalized and then directly used in the dyadic product.
Conversion of Miller-Bravais Indices for HCP to Cartesian System
Hexagonal Close Packed (HCP) crystals are often described with the 4-index Miller-Bravais system: (17) To compute the Schmid tensor from these slip direction and slip plane normals, the indices must first be transformed to the Cartesian coordinate system. Within the associated ComputeMultipleCrystalPlasticityStress
implementation, this conversion uses the assumption that the a-axis, or the H index, aligns with the x-axis in the basal plane of the HCP crystal lattice, see Figure 1. The c-axis, the L index, is assumed to be parallel to the z-axis of the Cartesian system.
The slip plane directions are transformed to the Cartesian system with the matrix equation (18)
where a and c are the HCP unit cell lattice parameters in the basal and axial directions, respectively. A check is performed with the basal plane indices to ensure that those indices sum to zero (). If the slip direction indices are given as decimal values, numerical round-off errors may require an increase in the value of the parameter zero_tol
which is used within the code to set the allowable deviation from exact zero.
The slip plane normals are similarly transformed as (19)
Once transformed to the Cartesian system, these vectors are normalized and then used to compute the Schmid tensor.
The alignment of the a axis of the Miller-Bravais notation and the x-axis of the Cartesian system within the basal plane of the unit HCP is specifically adopted for the conversion implementation in the ComputeMultipleCrystalPlasticityStress
associated classes. While there is broad consensus in the alignment of the HPC c-axis with the Cartesian z-axis, no standard for alignment within the basal plane is clear. Users should note this assumption in the construction of their simulations and the interpretations of the simulation results.
Calculation of Crystal Rotation
The rotation of a crystal during deformation is calculated within the ComputeMultipleCrystalPlasticityStress
class through a polar decomposition on the elastic part of the deformation tensor (), i.e.,
where is the symmetric matrix that describes the elastic stretch of the crystal, is the orthogonal tensor that describes the elastic part of the crystal rotation.
Note here represents the rotation of the crystal with respect to its crystal lattice. To obtain the the crystal rotation relative to the reference frame (total rotation ), initial orientation of the crystal needs to be considered, i.e.,
where denotes the rotation matrix that corresponds to the initial orientation of the crystal.
To obtain the Euler angles for the crystals during deformation, one will need to transform the rotation matrix to the Euler angle. One can refer to the ComputeUpdatedEulerAngle class for this purpose.
Computation Workflow
The order of calculations performed within the ComputeMultipleCrystalPlasticityStress
class is given in flowchart form, Figure 2. The converged Cauchy stress value and the corresponding strain measure are then calculated, via the inverse of Eq. (16), before continuing the FEM residual calculation within the MOOSE framework.
Using a Newton Raphson approach, outlined below in Figure 3, we consider the system converged when the residual of the second Piola-Kirchhoff stress increments from the current and previous iterations is within tolerances specified by the user.
The Newton-Raphson iteration algorithm implemented in CrystalPlasticityStressUpdateBase
separates the iteration over the second Piola-Kirchhoff stress residual from the physically based constitutive models used to calculate the plastic velocity gradient, see Figure 3. The convergence algorithm for Newton-Raphson iteration is taken from other approaches already implemented in MOOSE and is adapted for our crystal plasticity framework.
Constitutive models are used to calculate the plastic slip rate in classes which inherit from CrystalPlasticityStressUpdateBase
.
Units Assumed in the Crystal Plasticity Materials
The simulation domain for crystal plasticity models is resolved on the order of individual crystal grains, and, as such, the mesh size is small. Although MOOSE itself is dimension agnostic, the crystal plasticity models are implemented in the mm-MPa-s unit system. This dimension system choice impacts the input files in the following manner:
Mesh dimensions should be constructed in mm
Elastic constant values (e.g. Young's modulus and shear modulus) are entered in MPa
Initial slip system strength values are entered in MPa
Simulation times are given in s
Strain rates and displacement loading rates are given in 1/s and mm/s, respectively
In physically based models, which maybe based on this class, initial densities of crystal defects (e.g. dislocations, point defects) should be given in 1/mm or 1/mm
Example Input File
[./stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[../]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_test.i)Note that the specific constitutive crystal plasticity model must also be given in the input file to define the plastic slip rate increment
[./trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[../]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_test.i)Finally a specific constant elasticity tensor class must be used with these materials to account for the use of the slip planes and directions in the reference configuration, Eq. (7), Eq. (8), and Eq. (10),
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_test.i)Input Parameters
- abs_tol1e-06Constitutive stress residual absolute tolerance
Default:1e-06
C++ Type:double
Controllable:No
Description:Constitutive stress residual absolute tolerance
- 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
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>
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
- 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
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
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
Controllable:No
Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
- eigenstrain_namesThe material objects to calculate eigenstrains.
C++ Type:std::vector<MaterialName>
Controllable:No
Description:The material objects to calculate eigenstrains.
- line_search_maxiter20Line search bisection method maximum number of iteration
Default:20
C++ Type:unsigned int
Controllable:No
Description:Line search bisection method maximum number of iteration
- line_search_methodCUT_HALFThe method used in line search
Default:CUT_HALF
C++ Type:MooseEnum
Options:CUT_HALF, BISECTION
Controllable:No
Description:The method used in line search
- line_search_tol0.5Line search bisection method tolerance
Default:0.5
C++ Type:double
Controllable:No
Description:Line search bisection method tolerance
- maximum_substep_iteration1Maximum number of substep iteration
Default:1
C++ Type:unsigned int
Controllable:No
Description:Maximum number of substep iteration
- maxiter100Maximum number of iterations for stress update
Default:100
C++ Type:unsigned int
Controllable:No
Description:Maximum number of iterations for stress update
- maxiter_state_variable100Maximum number of iterations for state variable update
Default:100
C++ Type:unsigned int
Controllable:No
Description:Maximum number of iterations for state variable update
- min_line_search_step_size0.01Minimum line search step size
Default:0.01
C++ Type:double
Controllable:No
Description:Minimum line search step size
- print_state_variable_convergence_error_messagesFalseWhether or not to print warning messages from the crystal plasticity specific convergence checks on the stress measure and general constitutive model quantinties.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to print warning messages from the crystal plasticity specific convergence checks on the stress measure and general constitutive model quantinties.
- 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.
- rtol1e-06Constitutive stress residual relative tolerance
Default:1e-06
C++ Type:double
Controllable:No
Description:Constitutive stress residual relative tolerance
- tan_mod_typenoneType of tangent moduli for preconditioner: default elastic
Default:none
C++ Type:MooseEnum
Options:exact, none
Controllable:No
Description:Type of tangent moduli for preconditioner: default elastic
- 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
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_line_searchFalseUse line search in constitutive update
Default:False
C++ Type:bool
Controllable:No
Description:Use line search in constitutive update
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
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
Input Files
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/exception.i)
- (modules/solid_mechanics/test/tests/nodal_patch_recovery/patch_recovery.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_test.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/only_twinning_fcc.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_no_substructure.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_twinning/modified_kalidindi_for_hcp.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_111tension.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/thermal_eigenstrain_test.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_representative_slip_systems.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/patch_recovery.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/substep.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/non_coplanar_twin_hardening.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_011orientation.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_capyramidal_active.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_100compression.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_euler_angle.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/coplanar_twin_hardening.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_error.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_twinning/demonstration_combined_hcp_slip_twins.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/rotation_matrix_update_euler_angle_111_orientation.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/use_substep_dt.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/hcp_thermal_eigenstrain.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_convergence_issue_flag.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_basal_active.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/hcp_volumetric_eigenstrain.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_aprismatic_active.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_increase.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/hcp_volumetric_eigenstrain_decrease.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/linesearch.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/upper_twin_fraction_limit.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/bicrystal_test.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/orthotropic_rotation_Cijkl.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_aprismatic_capyramidal.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/twinning/check_direction_twin_propagation.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/multiple_eigenstrains_test.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_parabolic.i)
- (modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_no_negative_aprismatic.i)
References
- R J Asaro.
Crystal Plasticity.
Journal of Applied Mechanics, 50(4b):921–934, December 1983.[BibTeX]
@article{Asaro:1983kf, author = "Asaro, R J", title = "{Crystal Plasticity}", journal = "Journal of Applied Mechanics", year = "1983", volume = "50", number = "4b", pages = "921--934", month = "December", publisher = "American Society of Mechanical Engineers" }
- Augustin-Louis Cauchy.
Sur la condensation et la dilatation des corps solides.
Exercices de Mathématiques, 2(1827):60–69, 1827.
in French.[BibTeX]
@article{cauchy1827, author = "Cauchy, Augustin-Louis", title = "Sur la condensation et la dilatation des corps solides", journal = "Exercices de Math{\'e}matiques", volume = "2", number = "1827", pages = "60--69", year = "1827", note = "in French" }
- George Green.
On the propagation of light in crystallized media.
Transactions of the Cambridge Philosophical Society, 7:437–444, 1841.[BibTeX]
@article{green1841, author = "Green, George", title = "On the Propagation of Light in Crystallized Media", journal = "Transactions of the Cambridge Philosophical Society", volume = "7", pages = "437--444", year = "1841" }
- Jifeng Li, Ignacio Romero, and Javier Segurado.
Development of a thermo-mechanically coupled crystal plasticity modeling framework: application to polycrystalline homogenization.
International Journal of Plasticity, 119:313–330, 2019.[BibTeX]
@article{li2019development, author = "Li, Jifeng and Romero, Ignacio and Segurado, Javier", title = "Development of a thermo-mechanically coupled crystal plasticity modeling framework: application to polycrystalline homogenization", journal = "International Journal of Plasticity", volume = "119", pages = "313--330", year = "2019", publisher = "Elsevier" }
- Lawrence E Malvern.
Introduction to the Mechanics of a Continuous Medium.
Prentice-Hall, 1969.[BibTeX]
@book{malvern1969introduction, author = "Malvern, Lawrence E", title = "Introduction to the Mechanics of a Continuous Medium", year = "1969", publisher = "Prentice-Hall" }
- FT Meissonnier, EP Busso, and NP O'Dowd.
Finite element implementation of a generalised non-local rate-dependent crystallographic formulation for finite strains.
International Journal of Plasticity, 17(4):601–640, 2001.[BibTeX]
@article{meissonnier2001finite, author = "Meissonnier, FT and Busso, EP and O'Dowd, NP", title = "Finite element implementation of a generalised non-local rate-dependent crystallographic formulation for finite strains", journal = "International Journal of Plasticity", volume = "17", number = "4", pages = "601--640", year = "2001", publisher = "Elsevier" }
- Deniz Ozturk, Ahmad Shahba, and Somnath Ghosh.
Crystal plasticity FE study of the effect of thermo-mechanical loading on fatigue crack nucleation in titanium alloys.
Fatigue & Fracture of Engineering Materials & Structures, 39(6):752–769, 2016.[BibTeX]
@article{ozturk2016crystal, author = "Ozturk, Deniz and Shahba, Ahmad and Ghosh, Somnath", title = "Crystal plasticity {FE} study of the effect of thermo-mechanical loading on fatigue crack nucleation in titanium alloys", journal = "Fatigue \\& Fracture of Engineering Materials \\& Structures", volume = "39", number = "6", pages = "752--769", year = "2016", publisher = "Wiley Online Library" }
- Franz Roters, Philip Eisenlohr, Luc Hantcherli, Denny Dharmawan Tjahjanto, Thomas R Bieler, and Dierk Raabe.
Overview of constitutive laws, kinematics, homogenization and multiscale methods in crystal plasticity finite-element modeling: theory, experiments, applications.
Acta Materialia, 58(4):1152–1211, 2010.[BibTeX]
@article{Roters:2010, author = "Roters, Franz and Eisenlohr, Philip and Hantcherli, Luc and Tjahjanto, Denny Dharmawan and Bieler, Thomas R and Raabe, Dierk", title = "Overview of constitutive laws, kinematics, homogenization and multiscale methods in crystal plasticity finite-element modeling: Theory, experiments, applications", journal = "Acta Materialia", volume = "58", number = "4", pages = "1152--1211", year = "2010", publisher = "Elsevier" }
- William S Slaughter.
The Linearized Theory of Elasticity.
Springer Science & Business Media, 2012.[BibTeX]
@book{slaughter2012linearized, author = "Slaughter, William S", title = "The Linearized Theory of Elasticity", year = "2012", publisher = "Springer Science \\& Business Media" }
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[./pk2]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[./slip_increment]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[./pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[../]
[./slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_increment
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[../]
[./trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./pk2]
type = ElementAverageValue
variable = pk2
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[./slip_increment]
type = ElementAverageValue
variable = slip_increment
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 0.01
dtmax = 10.0
num_steps = 10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[./pk2]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[./slip_increment]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[./pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[../]
[./slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_increment
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[../]
[./trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./pk2]
type = ElementAverageValue
variable = pk2
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[./slip_increment]
type = ElementAverageValue
variable = slip_increment
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 0.01
dtmax = 10.0
num_steps = 10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[./pk2]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[./slip_increment]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[./pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[../]
[./slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_increment
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[../]
[./trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./pk2]
type = ElementAverageValue
variable = pk2
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[./slip_increment]
type = ElementAverageValue
variable = slip_increment
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 0.01
dtmax = 10.0
num_steps = 10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/exception.i)
[GlobalParams]
displacements = 'ux uy uz'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[./pk2]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./rotout]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[./slip_increment]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[../]
[./slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_increment
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = '0.1*t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 1
[../]
[./trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./pk2]
type = ElementAverageValue
variable = pk2
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[./slip_increment]
type = ElementAverageValue
variable = slip_increment
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.01
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/nodal_patch_recovery/patch_recovery.i)
[GlobalParams]
displacements = 'ux uy'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 4
ny = 4
[]
[UserObjects]
[stress_xx_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '0 0'
execute_on = 'TIMESTEP_END'
[]
[stress_yy_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '1 1'
execute_on = 'TIMESTEP_END'
[]
[]
[AuxVariables]
[stress_xx_recovered]
order = FIRST
family = LAGRANGE
[]
[stress_yy_recovered]
order = FIRST
family = LAGRANGE
[]
[]
[Functions]
[tdisp]
type = ParsedFunction
expression = 0.01*t
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[stress_xx_recovered]
type = NodalPatchRecoveryAux
variable = stress_xx_recovered
nodal_patch_recovery_uo = stress_xx_patch
execute_on = 'TIMESTEP_END'
[]
[stress_yy_recovered]
type = NodalPatchRecoveryAux
variable = stress_yy_recovered
nodal_patch_recovery_uo = stress_yy_patch
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = uy
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = ux
boundary = 'top bottom'
value = 0
[]
[disp_y]
type = FunctionDirichletBC
variable = uy
boundary = 'top'
function = tdisp
preset = false
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
automatic_scaling = true
dt = 0.05
num_steps = 2
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[./pk2]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[./slip_increment]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[./pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[../]
[./slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_increment
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[../]
[./trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./pk2]
type = ElementAverageValue
variable = pk2
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[./slip_increment]
type = ElementAverageValue
variable = slip_increment
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 0.01
dtmax = 10.0
num_steps = 10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/only_twinning_fcc.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 1
ny = 1
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_6]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_7]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_8]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_9]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_11]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_10]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = total_volume_fraction_twins
execute_on = timestep_end
[]
[twin_resistance_4]
type = MaterialStdVectorAux
variable = twin_resistance_4
property = slip_resistance
index = 4
execute_on = timestep_end
[]
[twin_resistance_10]
type = MaterialStdVectorAux
variable = twin_resistance_10
property = slip_resistance
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_5]
type = MaterialStdVectorAux
variable = twin_volume_fraction_5
property = twin_system_volume_fraction
index = 5
execute_on = timestep_end
[]
[twin_volume_fraction_6]
type = MaterialStdVectorAux
variable = twin_volume_fraction_6
property = twin_system_volume_fraction
index = 6
execute_on = timestep_end
[]
[twin_volume_fraction_7]
type = MaterialStdVectorAux
variable = twin_volume_fraction_7
property = twin_system_volume_fraction
index = 7
execute_on = timestep_end
[]
[twin_volume_fraction_8]
type = MaterialStdVectorAux
variable = twin_volume_fraction_8
property = twin_system_volume_fraction
index = 8
execute_on = timestep_end
[]
[twin_volume_fraction_9]
type = MaterialStdVectorAux
variable = twin_volume_fraction_9
property = twin_system_volume_fraction
index = 9
execute_on = timestep_end
[]
[twin_volume_fraction_10]
type = MaterialStdVectorAux
variable = twin_volume_fraction_10
property = twin_system_volume_fraction
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_11]
type = MaterialStdVectorAux
variable = twin_volume_fraction_11
property = twin_system_volume_fraction
index = 11
execute_on = timestep_end
[]
[twin_tau_4]
type = MaterialStdVectorAux
variable = twin_tau_4
property = applied_shear_stress
index = 4
execute_on = timestep_end
[]
[twin_tau_10]
type = MaterialStdVectorAux
variable = twin_tau_10
property = applied_shear_stress
index = 10
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '5.0e-4*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.08e5 6.034e4 6.034e4 1.08e5 6.03e4 1.08e5 2.86e4 2.86e4 2.86e4' #Tallon and Wolfenden. J. Phys. Chem. Solids (1979)
fill_method = symmetric9
euler_angle_1 = 54.74
euler_angle_2 = 45.0
euler_angle_3 = 270.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_only_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 2
[]
[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
[]
[]
[Postprocessors]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[twin_resistance_4]
type = ElementAverageValue
variable = twin_resistance_4
[]
[twin_resistance_10]
type = ElementAverageValue
variable = twin_resistance_10
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_5]
type = ElementAverageValue
variable = twin_volume_fraction_5
[]
[twin_volume_fraction_6]
type = ElementAverageValue
variable = twin_volume_fraction_6
[]
[twin_volume_fraction_7]
type = ElementAverageValue
variable = twin_volume_fraction_7
[]
[twin_volume_fraction_8]
type = ElementAverageValue
variable = twin_volume_fraction_8
[]
[twin_volume_fraction_9]
type = ElementAverageValue
variable = twin_volume_fraction_9
[]
[twin_volume_fraction_10]
type = ElementAverageValue
variable = twin_volume_fraction_10
[]
[twin_volume_fraction_11]
type = ElementAverageValue
variable = twin_volume_fraction_11
[]
[twin_tau_4]
type = ElementAverageValue
variable = twin_tau_4
[]
[twin_tau_10]
type = ElementAverageValue
variable = twin_tau_10
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.025
dtmin = 0.0125
num_steps = 8
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_no_substructure.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[substructure_density]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[slip_resistance_3]
type = MaterialStdVectorAux
variable = slip_resistance_3
property = slip_resistance
index = 3
execute_on = timestep_end
[]
[substructure_density]
type = MaterialRealAux
variable = substructure_density
property = total_substructure_density
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
preset = true
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7'
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0 #artifically low for specific test
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '100 200'
effective_shear_modulus_per_mode = '5e4 5e4'
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1e5 2e7'
normalized_slip_activiation_energy_per_mode = '4e-3 3e-2'
slip_energy_proportionality_factor_per_mode = '300 100'
substructure_rate_coefficient_per_mode = '-355 -0.4' #artifical, non-physical values for testing purposes
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '1 1'
grain_size = 20.0e-3 #20 microns
[]
[]
[Postprocessors]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[slip_resistance_3]
type = ElementAverageValue
variable = slip_resistance_3
[]
[substructure_density]
type = ElementAverageValue
variable = substructure_density
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.5
dtmin = 1.0e-2
dtmax = 10.0
end_time = 2.5
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_twinning/modified_kalidindi_for_hcp.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[single_xtal]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_increment_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_5]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_2]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_4]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_5]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = twin_total_volume_fraction_twins
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_5]
type = MaterialStdVectorAux
variable = twin_volume_fraction_5
property = twin_twin_system_volume_fraction
index = 5
execute_on = timestep_end
[]
[twin_resistance_0]
type = MaterialStdVectorAux
variable = twin_resistance_0
property = twin_slip_resistance
index = 0
execute_on = timestep_end
[]
[twin_resistance_1]
type = MaterialStdVectorAux
variable = twin_resistance_1
property = twin_slip_resistance
index = 1
execute_on = timestep_end
[]
[twin_resistance_2]
type = MaterialStdVectorAux
variable = twin_resistance_2
property = twin_slip_resistance
index = 2
execute_on = timestep_end
[]
[twin_resistance_3]
type = MaterialStdVectorAux
variable = twin_resistance_3
property = twin_slip_resistance
index = 3
execute_on = timestep_end
[]
[twin_resistance_4]
type = MaterialStdVectorAux
variable = twin_resistance_4
property = twin_slip_resistance
index = 4
execute_on = timestep_end
[]
[twin_resistance_5]
type = MaterialStdVectorAux
variable = twin_resistance_5
property = twin_slip_resistance
index = 5
execute_on = timestep_end
[]
[twin_increment_0]
type = MaterialStdVectorAux
variable = twin_increment_0
property = twin_slip_increment
index = 0
execute_on = timestep_end
[]
[twin_increment_1]
type = MaterialStdVectorAux
variable = twin_increment_1
property = twin_slip_increment
index = 1
execute_on = timestep_end
[]
[twin_increment_2]
type = MaterialStdVectorAux
variable = twin_increment_2
property = twin_slip_increment
index = 2
execute_on = timestep_end
[]
[twin_increment_3]
type = MaterialStdVectorAux
variable = twin_increment_3
property = twin_slip_increment
index = 3
execute_on = timestep_end
[]
[twin_increment_4]
type = MaterialStdVectorAux
variable = twin_increment_4
property = twin_slip_increment
index = 4
execute_on = timestep_end
[]
[twin_increment_5]
type = MaterialStdVectorAux
variable = twin_increment_5
property = twin_slip_increment
index = 5
execute_on = timestep_end
[]
[twin_tau_0]
type = MaterialStdVectorAux
variable = resolved_twin_stress_0
property = twin_applied_shear_stress
index = 0
execute_on = timestep_end
[]
[twin_tau_1]
type = MaterialStdVectorAux
variable = resolved_twin_stress_1
property = twin_applied_shear_stress
index = 1
execute_on = timestep_end
[]
[twin_tau_2]
type = MaterialStdVectorAux
variable = resolved_twin_stress_2
property = twin_applied_shear_stress
index = 2
execute_on = timestep_end
[]
[twin_tau_3]
type = MaterialStdVectorAux
variable = resolved_twin_stress_3
property = twin_applied_shear_stress
index = 3
execute_on = timestep_end
[]
[twin_tau_4]
type = MaterialStdVectorAux
variable = resolved_twin_stress_4
property = twin_applied_shear_stress
index = 4
execute_on = timestep_end
[]
[twin_tau_5]
type = MaterialStdVectorAux
variable = resolved_twin_stress_5
property = twin_applied_shear_stress
index = 5
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
preset = true
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_xtalpl'
tan_mod_type = exact
[]
[twin_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
base_name = twin
crystal_lattice_type = HCP
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
number_slip_systems = 6
slip_sys_file_name = 'hcp_tensile_twin_systems.txt'
initial_twin_lattice_friction = 1140
non_coplanar_coefficient_twin_hardening = 10000
coplanar_coefficient_twin_hardening = 1000
characteristic_twin_shear = 0.167
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_5]
type = ElementAverageValue
variable = twin_volume_fraction_5
[]
[twin_resistance_0]
type = ElementAverageValue
variable = twin_resistance_0
[]
[twin_resistance_1]
type = ElementAverageValue
variable = twin_resistance_1
[]
[twin_resistance_2]
type = ElementAverageValue
variable = twin_resistance_2
[]
[twin_resistance_3]
type = ElementAverageValue
variable = twin_resistance_3
[]
[twin_resistance_4]
type = ElementAverageValue
variable = twin_resistance_4
[]
[twin_resistance_5]
type = ElementAverageValue
variable = twin_resistance_5
[]
[twin_increment_0]
type = ElementAverageValue
variable = twin_increment_0
[]
[twin_increment_1]
type = ElementAverageValue
variable = twin_increment_1
[]
[twin_increment_2]
type = ElementAverageValue
variable = twin_increment_2
[]
[twin_increment_3]
type = ElementAverageValue
variable = twin_increment_3
[]
[twin_increment_4]
type = ElementAverageValue
variable = twin_increment_4
[]
[twin_increment_5]
type = ElementAverageValue
variable = twin_increment_5
[]
[twin_tau_0]
type = ElementAverageValue
variable = resolved_twin_stress_0
[]
[twin_tau_1]
type = ElementAverageValue
variable = resolved_twin_stress_1
[]
[twin_tau_2]
type = ElementAverageValue
variable = resolved_twin_stress_2
[]
[twin_tau_3]
type = ElementAverageValue
variable = resolved_twin_stress_3
[]
[twin_tau_4]
type = ElementAverageValue
variable = resolved_twin_stress_4
[]
[twin_tau_5]
type = ElementAverageValue
variable = resolved_twin_stress_5
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.5
dtmin = 1.0e-2
dtmax = 10.0
end_time = 2.5
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_111tension.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_4]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_5]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_6]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_7]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_8]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_9]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_10]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_11]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_6]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_7]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_8]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_9]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_11]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = twin_total_volume_fraction_twins
execute_on = timestep_end
[]
[slip_increment_0]
type = MaterialStdVectorAux
variable = slip_increment_0
property = slip_increment
index = 0
execute_on = timestep_end
[]
[slip_increment_1]
type = MaterialStdVectorAux
variable = slip_increment_1
property = slip_increment
index = 1
execute_on = timestep_end
[]
[slip_increment_2]
type = MaterialStdVectorAux
variable = slip_increment_2
property = slip_increment
index = 2
execute_on = timestep_end
[]
[slip_increment_3]
type = MaterialStdVectorAux
variable = slip_increment_3
property = slip_increment
index = 3
execute_on = timestep_end
[]
[slip_increment_4]
type = MaterialStdVectorAux
variable = slip_increment_4
property = slip_increment
index = 4
execute_on = timestep_end
[]
[slip_increment_5]
type = MaterialStdVectorAux
variable = slip_increment_5
property = slip_increment
index = 5
execute_on = timestep_end
[]
[slip_increment_6]
type = MaterialStdVectorAux
variable = slip_increment_6
property = slip_increment
index = 6
execute_on = timestep_end
[]
[slip_increment_7]
type = MaterialStdVectorAux
variable = slip_increment_7
property = slip_increment
index = 7
execute_on = timestep_end
[]
[slip_increment_8]
type = MaterialStdVectorAux
variable = slip_increment_8
property = slip_increment
index = 8
execute_on = timestep_end
[]
[slip_increment_9]
type = MaterialStdVectorAux
variable = slip_increment_9
property = slip_increment
index = 9
execute_on = timestep_end
[]
[slip_increment_10]
type = MaterialStdVectorAux
variable = slip_increment_10
property = slip_increment
index = 10
execute_on = timestep_end
[]
[slip_increment_11]
type = MaterialStdVectorAux
variable = slip_increment_11
property = slip_increment
index = 11
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_5]
type = MaterialStdVectorAux
variable = twin_volume_fraction_5
property = twin_twin_system_volume_fraction
index = 5
execute_on = timestep_end
[]
[twin_volume_fraction_6]
type = MaterialStdVectorAux
variable = twin_volume_fraction_6
property = twin_twin_system_volume_fraction
index = 6
execute_on = timestep_end
[]
[twin_volume_fraction_7]
type = MaterialStdVectorAux
variable = twin_volume_fraction_7
property = twin_twin_system_volume_fraction
index = 7
execute_on = timestep_end
[]
[twin_volume_fraction_8]
type = MaterialStdVectorAux
variable = twin_volume_fraction_8
property = twin_twin_system_volume_fraction
index = 8
execute_on = timestep_end
[]
[twin_volume_fraction_9]
type = MaterialStdVectorAux
variable = twin_volume_fraction_9
property = twin_twin_system_volume_fraction
index = 9
execute_on = timestep_end
[]
[twin_volume_fraction_10]
type = MaterialStdVectorAux
variable = twin_volume_fraction_10
property = twin_twin_system_volume_fraction
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_11]
type = MaterialStdVectorAux
variable = twin_volume_fraction_11
property = twin_twin_system_volume_fraction
index = 11
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.02*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5' # roughly copper
fill_method = symmetric9
euler_angle_1 = 54.74
euler_angle_2 = 45.0
euler_angle_3 = 270.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_xtalpl slip_xtalpl'
tan_mod_type = exact
[]
[twin_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
base_name = twin
number_slip_systems = 12
slip_sys_file_name = 'fcc_input_twinning_systems.txt'
initial_twin_lattice_friction = 60.0
[]
[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'
[]
[]
[Postprocessors]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[slip_increment_0]
type = ElementAverageValue
variable = slip_increment_0
[]
[slip_increment_1]
type = ElementAverageValue
variable = slip_increment_1
[]
[slip_increment_2]
type = ElementAverageValue
variable = slip_increment_2
[]
[slip_increment_3]
type = ElementAverageValue
variable = slip_increment_3
[]
[slip_increment_4]
type = ElementAverageValue
variable = slip_increment_4
[]
[slip_increment_5]
type = ElementAverageValue
variable = slip_increment_5
[]
[slip_increment_6]
type = ElementAverageValue
variable = slip_increment_6
[]
[slip_increment_7]
type = ElementAverageValue
variable = slip_increment_7
[]
[slip_increment_8]
type = ElementAverageValue
variable = slip_increment_8
[]
[slip_increment_9]
type = ElementAverageValue
variable = slip_increment_9
[]
[slip_increment_10]
type = ElementAverageValue
variable = slip_increment_10
[]
[slip_increment_11]
type = ElementAverageValue
variable = slip_increment_11
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_5]
type = ElementAverageValue
variable = twin_volume_fraction_5
[]
[twin_volume_fraction_6]
type = ElementAverageValue
variable = twin_volume_fraction_6
[]
[twin_volume_fraction_7]
type = ElementAverageValue
variable = twin_volume_fraction_7
[]
[twin_volume_fraction_8]
type = ElementAverageValue
variable = twin_volume_fraction_8
[]
[twin_volume_fraction_9]
type = ElementAverageValue
variable = twin_volume_fraction_9
[]
[twin_volume_fraction_10]
type = ElementAverageValue
variable = twin_volume_fraction_10
[]
[twin_volume_fraction_11]
type = ElementAverageValue
variable = twin_volume_fraction_11
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.005
dtmin = 0.01
num_steps = 6
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/thermal_eigenstrain_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[eth_xx]
order = CONSTANT
family = MONOMIAL
[]
[eth_yy]
order = CONSTANT
family = MONOMIAL
[]
[eth_zz]
order = CONSTANT
family = MONOMIAL
[]
[fth_xx]
order = CONSTANT
family = MONOMIAL
[]
[fth_yy]
order = CONSTANT
family = MONOMIAL
[]
[fth_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = '300+400*t' # temperature increases at a constant rate
execute_on = timestep_begin
[]
[eth_xx]
type = RankTwoAux
variable = eth_xx
rank_two_tensor = thermal_eigenstrain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[eth_yy]
type = RankTwoAux
variable = eth_yy
rank_two_tensor = thermal_eigenstrain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[eth_zz]
type = RankTwoAux
variable = eth_zz
rank_two_tensor = thermal_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fth_xx]
type = RankTwoAux
variable = fth_xx
rank_two_tensor = thermal_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fth_yy]
type = RankTwoAux
variable = fth_yy
rank_two_tensor = thermal_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fth_zz]
type = RankTwoAux
variable = fth_zz
rank_two_tensor = thermal_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = thermal_eigenstrain
tan_mod_type = exact
maximum_substep_iteration = 5
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[thermal_eigenstrain]
type = ComputeCrystalPlasticityThermalEigenstrain
eigenstrain_name = thermal_eigenstrain
deformation_gradient_name = thermal_deformation_gradient
temperature = temperature
thermal_expansion_coefficients = '1e-05 2e-05 4e-05' # thermal expansion coefficients along three directions
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[eth_xx]
type = ElementAverageValue
variable = eth_xx
[]
[eth_yy]
type = ElementAverageValue
variable = eth_yy
[]
[eth_zz]
type = ElementAverageValue
variable = eth_zz
[]
[fth_xx]
type = ElementAverageValue
variable = fth_xx
[]
[fth_yy]
type = ElementAverageValue
variable = fth_yy
[]
[fth_zz]
type = ElementAverageValue
variable = fth_zz
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.1
dtmin = 1e-4
end_time = 10
[]
[Outputs]
csv = true
[console]
type = Console
max_rows = 5
[]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_representative_slip_systems.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_2]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_4]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = resolved_shear_stress_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_1]
type = MaterialStdVectorAux
variable = resolved_shear_stress_1
property = applied_shear_stress
index = 1
execute_on = timestep_end
[]
[tau_2]
type = MaterialStdVectorAux
variable = resolved_shear_stress_2
property = applied_shear_stress
index = 2
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[tau_4]
type = MaterialStdVectorAux
variable = resolved_shear_stress_4
property = applied_shear_stress
index = 4
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.1*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
euler_angle_1 = 45
euler_angle_2 = 60
euler_angle_3 = 30
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 5
slip_sys_file_name = select_input_slip_sys_hcp.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0e3
slip_system_modes = 4
number_slip_systems_per_mode = '1 1 2 1'
lattice_friction_per_mode = '10 10 15 30'
effective_shear_modulus_per_mode = '47e3 47e3 47e3 47e3'
burgers_vector_per_mode = '2.934e-7 2.934e-7 2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '2e7 1e5 2e7 2e7'
normalized_slip_activiation_energy_per_mode = '3e-2 4e-3 3e-2 3e-2'
slip_energy_proportionality_factor_per_mode = '100 330 100 100'
substructure_rate_coefficient_per_mode = '100 400 1 1'
applied_strain_rate = 0.001
gamma_o = 1.0e-3
strain_rate_sensitivity_exponent = 0.05
Hall_Petch_like_constant_per_mode = '10 10 10 10'
grain_size = 20.0e-3 #20 microns,
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[tau_0]
type = ElementAverageValue
variable = resolved_shear_stress_0
[]
[tau_1]
type = ElementAverageValue
variable = resolved_shear_stress_1
[]
[tau_2]
type = ElementAverageValue
variable = resolved_shear_stress_2
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[tau_4]
type = ElementAverageValue
variable = resolved_shear_stress_4
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 0.01
dtmax = 0.1
end_time = 0.4
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/patch_recovery.i)
[GlobalParams]
displacements = 'ux uy'
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 2
ny = 2
[]
[AuxVariables]
[stress_xx_recovered]
order = FIRST
family = LAGRANGE
[]
[stress_yy_recovered]
order = FIRST
family = LAGRANGE
[]
[]
[Functions]
[tdisp]
type = ParsedFunction
expression = 0.01*t
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[stress_xx_recovered]
type = NodalPatchRecoveryAux
variable = stress_xx_recovered
nodal_patch_recovery_uo = stress_xx_patch
execute_on = 'TIMESTEP_END'
[]
[stress_yy_recovered]
type = NodalPatchRecoveryAux
variable = stress_yy_recovered
nodal_patch_recovery_uo = stress_yy_patch
execute_on = 'TIMESTEP_END'
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = uy
boundary = top
function = tdisp
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[]
[UserObjects]
[stress_xx_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '0 0'
execute_on = 'TIMESTEP_END'
[]
[stress_yy_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '1 1'
execute_on = 'TIMESTEP_END'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.05
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/substep.i)
[GlobalParams]
displacements = 'ux uy uz'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = 0.01*t
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 10
[../]
[./trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
resistance_tol = 1.0e-2
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 2.0
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
dtmin = 0.5
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
csv = true
gnuplot = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/non_coplanar_twin_hardening.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = total_volume_fraction_twins
execute_on = timestep_end
[]
[twin_resistance_0]
type = MaterialStdVectorAux
variable = twin_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[twin_resistance_1]
type = MaterialStdVectorAux
variable = twin_resistance_1
property = slip_resistance
index = 1
execute_on = timestep_end
[]
[twin_resistance_2]
type = MaterialStdVectorAux
variable = twin_resistance_2
property = slip_resistance
index = 2
execute_on = timestep_end
[]
[twin_resistance_3]
type = MaterialStdVectorAux
variable = twin_resistance_3
property = slip_resistance
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_tau_0]
type = MaterialStdVectorAux
variable = twin_tau_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[twin_tau_1]
type = MaterialStdVectorAux
variable = twin_tau_1
property = applied_shear_stress
index = 1
execute_on = timestep_end
[]
[twin_tau_2]
type = MaterialStdVectorAux
variable = twin_tau_2
property = applied_shear_stress
index = 2
execute_on = timestep_end
[]
[twin_tau_3]
type = MaterialStdVectorAux
variable = twin_tau_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '-1.0e-3*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.08e5 6.034e4 6.034e4 1.08e5 6.03e4 1.08e5 2.86e4 2.86e4 2.86e4' #Tallon and Wolfenden. J. Phys. Chem. Solids (1979)
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_only_xtalpl'
tan_mod_type = exact
[]
[twin_only_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
number_slip_systems = 4
slip_sys_file_name = 'select_twin_systems_verify_hardening.txt'
initial_twin_lattice_friction = 6.0
non_coplanar_coefficient_twin_hardening = 8e4
non_coplanar_twin_hardening_exponent = 0.1
coplanar_coefficient_twin_hardening = 0
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[twin_resistance_0]
type = ElementAverageValue
variable = twin_resistance_0
[]
[twin_resistance_1]
type = ElementAverageValue
variable = twin_resistance_1
[]
[twin_resistance_2]
type = ElementAverageValue
variable = twin_resistance_2
[]
[twin_resistance_3]
type = ElementAverageValue
variable = twin_resistance_3
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 1e-6
dtmax = 10.0
num_steps = 4
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_method_011orientation.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[./pk2]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./lagrangian_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./lagrangian_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[./slip_increment]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[./pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./lagrangian_strain_zz]
type = RankTwoAux
variable = lagrangian_strain_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./lagrangian_strain_yy]
type = RankTwoAux
rank_two_tensor = total_lagrangian_strain
variable = lagrangian_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[../]
[./slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_increment
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
euler_angle_1 = 120.0
euler_angle_2 = 125.264
euler_angle_3 = 45.0
[../]
[./stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[../]
[./trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./pk2]
type = ElementAverageValue
variable = pk2
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./lagrangian_strain_yy]
type = ElementAverageValue
variable = lagrangian_strain_yy
[../]
[./lagrangian_strain_zz]
type = ElementAverageValue
variable = lagrangian_strain_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[./slip_increment]
type = ElementAverageValue
variable = slip_increment
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 0.01
dtmax = 10.0
num_steps = 10
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_capyramidal_active.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[center_node]
type = BoundingBoxNodeSetGenerator
input = cube
new_boundary = 'center_point'
top_right = '0.51 0.51 0'
bottom_left = '0.49 0.49 0'
[]
[back_edge_y]
type = BoundingBoxNodeSetGenerator
input = center_node
new_boundary = 'back_edge_y'
bottom_left = '0.9 0.5 0'
top_right = '1.1 0.5 0'
[]
[back_edge_x]
type = BoundingBoxNodeSetGenerator
input = back_edge_y
new_boundary = back_edge_x
bottom_left = '0.5 0.9 0'
top_right = '0.5 1.0 0'
[]
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_4]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_8]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_9]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_13]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_14]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_0]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_3]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_4]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_8]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_9]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_13]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_14]
order = CONSTANT
family = MONOMIAL
[]
[substructure_density]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = resolved_shear_stress_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[tau_4]
type = MaterialStdVectorAux
variable = resolved_shear_stress_4
property = applied_shear_stress
index = 4
execute_on = timestep_end
[]
[tau_8]
type = MaterialStdVectorAux
variable = resolved_shear_stress_8
property = applied_shear_stress
index = 8
execute_on = timestep_end
[]
[tau_9]
type = MaterialStdVectorAux
variable = resolved_shear_stress_9
property = applied_shear_stress
index = 9
execute_on = timestep_end
[]
[tau_13]
type = MaterialStdVectorAux
variable = resolved_shear_stress_13
property = applied_shear_stress
index = 13
execute_on = timestep_end
[]
[tau_14]
type = MaterialStdVectorAux
variable = resolved_shear_stress_14
property = applied_shear_stress
index = 14
execute_on = timestep_end
[]
[forest_dislocations_0]
type = MaterialStdVectorAux
variable = forest_dislocations_0
property = forest_dislocation_density
index = 0
execute_on = timestep_end
[]
[forest_dislocations_3]
type = MaterialStdVectorAux
variable = forest_dislocations_3
property = forest_dislocation_density
index = 3
execute_on = timestep_end
[]
[forest_dislocations_4]
type = MaterialStdVectorAux
variable = forest_dislocations_4
property = forest_dislocation_density
index = 4
execute_on = timestep_end
[]
[forest_dislocations_8]
type = MaterialStdVectorAux
variable = forest_dislocations_8
property = forest_dislocation_density
index = 8
execute_on = timestep_end
[]
[forest_dislocations_9]
type = MaterialStdVectorAux
variable = forest_dislocations_9
property = forest_dislocation_density
index = 9
execute_on = timestep_end
[]
[forest_dislocations_13]
type = MaterialStdVectorAux
variable = forest_dislocations_13
property = forest_dislocation_density
index = 13
execute_on = timestep_end
[]
[forest_dislocations_14]
type = MaterialStdVectorAux
variable = forest_dislocations_14
property = forest_dislocation_density
index = 14
execute_on = timestep_end
[]
[substructure_density]
type = MaterialRealAux
variable = substructure_density
property = total_substructure_density
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_3]
type = MaterialStdVectorAux
variable = slip_resistance_3
property = slip_resistance
index = 3
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'center_point back_edge_y'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'center_point back_edge_x'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
euler_angle_1 = 68
euler_angle_2 = 14
euler_angle_3 = -53
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e4
initial_substructure_density = 5.0e2
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '1 1.5'
effective_shear_modulus_per_mode = '4.7e4 4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1e5 2e7'
normalized_slip_activiation_energy_per_mode = '4e-3 3e-2'
slip_energy_proportionality_factor_per_mode = '330 100'
substructure_rate_coefficient_per_mode = '400 100'
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0 0' #minimize impact
grain_size = 20.0e-3 #20 microns
[]
[]
[Postprocessors]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[tau_0]
type = ElementAverageValue
variable = resolved_shear_stress_0
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[tau_4]
type = ElementAverageValue
variable = resolved_shear_stress_4
[]
[tau_8]
type = ElementAverageValue
variable = resolved_shear_stress_8
[]
[tau_9]
type = ElementAverageValue
variable = resolved_shear_stress_9
[]
[tau_13]
type = ElementAverageValue
variable = resolved_shear_stress_13
[]
[tau_14]
type = ElementAverageValue
variable = resolved_shear_stress_14
[]
[forest_dislocation_0]
type = ElementAverageValue
variable = forest_dislocations_0
[]
[forest_dislocation_3]
type = ElementAverageValue
variable = forest_dislocations_3
[]
[forest_dislocation_4]
type = ElementAverageValue
variable = forest_dislocations_4
[]
[forest_dislocation_8]
type = ElementAverageValue
variable = forest_dislocations_8
[]
[forest_dislocation_9]
type = ElementAverageValue
variable = forest_dislocations_9
[]
[forest_dislocation_13]
type = ElementAverageValue
variable = forest_dislocations_13
[]
[forest_dislocation_14]
type = ElementAverageValue
variable = forest_dislocations_14
[]
[substructure_density]
type = ElementAverageValue
variable = substructure_density
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_3]
type = ElementAverageValue
variable = slip_resistance_3
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.015
dtmin = 1.0e-4
dtmax = 0.1
end_time = 0.15
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_100compression.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_4]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_5]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_6]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_7]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_8]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_9]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_10]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_11]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_6]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_7]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_8]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_9]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_11]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = twin_total_volume_fraction_twins
execute_on = timestep_end
[]
[slip_increment_0]
type = MaterialStdVectorAux
variable = slip_increment_0
property = slip_increment
index = 0
execute_on = timestep_end
[]
[slip_increment_1]
type = MaterialStdVectorAux
variable = slip_increment_1
property = slip_increment
index = 1
execute_on = timestep_end
[]
[slip_increment_2]
type = MaterialStdVectorAux
variable = slip_increment_2
property = slip_increment
index = 2
execute_on = timestep_end
[]
[slip_increment_3]
type = MaterialStdVectorAux
variable = slip_increment_3
property = slip_increment
index = 3
execute_on = timestep_end
[]
[slip_increment_4]
type = MaterialStdVectorAux
variable = slip_increment_4
property = slip_increment
index = 4
execute_on = timestep_end
[]
[slip_increment_5]
type = MaterialStdVectorAux
variable = slip_increment_5
property = slip_increment
index = 5
execute_on = timestep_end
[]
[slip_increment_6]
type = MaterialStdVectorAux
variable = slip_increment_6
property = slip_increment
index = 6
execute_on = timestep_end
[]
[slip_increment_7]
type = MaterialStdVectorAux
variable = slip_increment_7
property = slip_increment
index = 7
execute_on = timestep_end
[]
[slip_increment_8]
type = MaterialStdVectorAux
variable = slip_increment_8
property = slip_increment
index = 8
execute_on = timestep_end
[]
[slip_increment_9]
type = MaterialStdVectorAux
variable = slip_increment_9
property = slip_increment
index = 9
execute_on = timestep_end
[]
[slip_increment_10]
type = MaterialStdVectorAux
variable = slip_increment_10
property = slip_increment
index = 10
execute_on = timestep_end
[]
[slip_increment_11]
type = MaterialStdVectorAux
variable = slip_increment_11
property = slip_increment
index = 11
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_5]
type = MaterialStdVectorAux
variable = twin_volume_fraction_5
property = twin_twin_system_volume_fraction
index = 5
execute_on = timestep_end
[]
[twin_volume_fraction_6]
type = MaterialStdVectorAux
variable = twin_volume_fraction_6
property = twin_twin_system_volume_fraction
index = 6
execute_on = timestep_end
[]
[twin_volume_fraction_7]
type = MaterialStdVectorAux
variable = twin_volume_fraction_7
property = twin_twin_system_volume_fraction
index = 7
execute_on = timestep_end
[]
[twin_volume_fraction_8]
type = MaterialStdVectorAux
variable = twin_volume_fraction_8
property = twin_twin_system_volume_fraction
index = 8
execute_on = timestep_end
[]
[twin_volume_fraction_9]
type = MaterialStdVectorAux
variable = twin_volume_fraction_9
property = twin_twin_system_volume_fraction
index = 9
execute_on = timestep_end
[]
[twin_volume_fraction_10]
type = MaterialStdVectorAux
variable = twin_volume_fraction_10
property = twin_twin_system_volume_fraction
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_11]
type = MaterialStdVectorAux
variable = twin_volume_fraction_11
property = twin_twin_system_volume_fraction
index = 11
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '-0.025*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5' # roughly copper
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_xtalpl slip_xtalpl'
tan_mod_type = exact
[]
[twin_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
base_name = twin
number_slip_systems = 12
slip_sys_file_name = 'fcc_input_twinning_systems.txt'
initial_twin_lattice_friction = 60.0
[]
[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'
[]
[]
[Postprocessors]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[slip_increment_0]
type = ElementAverageValue
variable = slip_increment_0
[]
[slip_increment_1]
type = ElementAverageValue
variable = slip_increment_1
[]
[slip_increment_2]
type = ElementAverageValue
variable = slip_increment_2
[]
[slip_increment_3]
type = ElementAverageValue
variable = slip_increment_3
[]
[slip_increment_4]
type = ElementAverageValue
variable = slip_increment_4
[]
[slip_increment_5]
type = ElementAverageValue
variable = slip_increment_5
[]
[slip_increment_6]
type = ElementAverageValue
variable = slip_increment_6
[]
[slip_increment_7]
type = ElementAverageValue
variable = slip_increment_7
[]
[slip_increment_8]
type = ElementAverageValue
variable = slip_increment_8
[]
[slip_increment_9]
type = ElementAverageValue
variable = slip_increment_9
[]
[slip_increment_10]
type = ElementAverageValue
variable = slip_increment_10
[]
[slip_increment_11]
type = ElementAverageValue
variable = slip_increment_11
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_5]
type = ElementAverageValue
variable = twin_volume_fraction_5
[]
[twin_volume_fraction_6]
type = ElementAverageValue
variable = twin_volume_fraction_6
[]
[twin_volume_fraction_7]
type = ElementAverageValue
variable = twin_volume_fraction_7
[]
[twin_volume_fraction_8]
type = ElementAverageValue
variable = twin_volume_fraction_8
[]
[twin_volume_fraction_9]
type = ElementAverageValue
variable = twin_volume_fraction_9
[]
[twin_volume_fraction_10]
type = ElementAverageValue
variable = twin_volume_fraction_10
[]
[twin_volume_fraction_11]
type = ElementAverageValue
variable = twin_volume_fraction_11
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.005
dtmin = 0.01
num_steps = 10
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/update_euler_angle.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[euler_angle_1]
order = CONSTANT
family = MONOMIAL
[]
[euler_angle_2]
order = CONSTANT
family = MONOMIAL
[]
[euler_angle_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[euler_angle_1]
type = MaterialRealVectorValueAux
variable = euler_angle_1
property = updated_Euler_angle
component = 0
execute_on = timestep_end
[]
[euler_angle_2]
type = MaterialRealVectorValueAux
variable = euler_angle_2
property = updated_Euler_angle
component = 1
execute_on = timestep_end
[]
[euler_angle_3]
type = MaterialRealVectorValueAux
variable = euler_angle_3
property = updated_Euler_angle
component = 2
execute_on = timestep_end
[]
[]
[BCs]
[Periodic]
[all]
variable = 'disp_x'
auto_direction = 'z'
[]
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front'
function = '0.01*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[updated_euler_angle]
type = ComputeUpdatedEulerAngle
radian_to_degree = true
[]
[]
[Postprocessors]
[euler_angle_1]
type = ElementAverageValue
variable = euler_angle_1
[]
[euler_angle_2]
type = ElementAverageValue
variable = euler_angle_2
[]
[euler_angle_3]
type = ElementAverageValue
variable = euler_angle_3
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu '
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.1
dtmin = 0.01
end_time = 5
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/coplanar_twin_hardening.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = total_volume_fraction_twins
execute_on = timestep_end
[]
[twin_resistance_0]
type = MaterialStdVectorAux
variable = twin_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[twin_resistance_1]
type = MaterialStdVectorAux
variable = twin_resistance_1
property = slip_resistance
index = 1
execute_on = timestep_end
[]
[twin_resistance_2]
type = MaterialStdVectorAux
variable = twin_resistance_2
property = slip_resistance
index = 2
execute_on = timestep_end
[]
[twin_resistance_3]
type = MaterialStdVectorAux
variable = twin_resistance_3
property = slip_resistance
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_tau_0]
type = MaterialStdVectorAux
variable = twin_tau_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[twin_tau_1]
type = MaterialStdVectorAux
variable = twin_tau_1
property = applied_shear_stress
index = 1
execute_on = timestep_end
[]
[twin_tau_2]
type = MaterialStdVectorAux
variable = twin_tau_2
property = applied_shear_stress
index = 2
execute_on = timestep_end
[]
[twin_tau_3]
type = MaterialStdVectorAux
variable = twin_tau_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '-1.0e-3*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.08e5 6.034e4 6.034e4 1.08e5 6.03e4 1.08e5 2.86e4 2.86e4 2.86e4' #Tallon and Wolfenden. J. Phys. Chem. Solids (1979)
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_only_xtalpl'
tan_mod_type = exact
[]
[twin_only_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
number_slip_systems = 4
slip_sys_file_name = 'select_twin_systems_verify_hardening.txt'
initial_twin_lattice_friction = 6.0
non_coplanar_coefficient_twin_hardening = 0
non_coplanar_twin_hardening_exponent = 0
coplanar_coefficient_twin_hardening = 8e8
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[twin_resistance_0]
type = ElementAverageValue
variable = twin_resistance_0
[]
[twin_resistance_1]
type = ElementAverageValue
variable = twin_resistance_1
[]
[twin_resistance_2]
type = ElementAverageValue
variable = twin_resistance_2
[]
[twin_resistance_3]
type = ElementAverageValue
variable = twin_resistance_3
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 1e-6
dtmax = 10.0
num_steps = 4
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/combined_twinning_slip_error.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_4]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_5]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_6]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_7]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_8]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_9]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_10]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_11]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_6]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_7]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_8]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_9]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_11]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = twin_total_volume_fraction_twins
execute_on = timestep_end
[]
[slip_increment_0]
type = MaterialStdVectorAux
variable = slip_increment_0
property = slip_increment
index = 0
execute_on = timestep_end
[]
[slip_increment_1]
type = MaterialStdVectorAux
variable = slip_increment_1
property = slip_increment
index = 1
execute_on = timestep_end
[]
[slip_increment_2]
type = MaterialStdVectorAux
variable = slip_increment_2
property = slip_increment
index = 2
execute_on = timestep_end
[]
[slip_increment_3]
type = MaterialStdVectorAux
variable = slip_increment_3
property = slip_increment
index = 3
execute_on = timestep_end
[]
[slip_increment_4]
type = MaterialStdVectorAux
variable = slip_increment_4
property = slip_increment
index = 4
execute_on = timestep_end
[]
[slip_increment_5]
type = MaterialStdVectorAux
variable = slip_increment_5
property = slip_increment
index = 5
execute_on = timestep_end
[]
[slip_increment_6]
type = MaterialStdVectorAux
variable = slip_increment_6
property = slip_increment
index = 6
execute_on = timestep_end
[]
[slip_increment_7]
type = MaterialStdVectorAux
variable = slip_increment_7
property = slip_increment
index = 7
execute_on = timestep_end
[]
[slip_increment_8]
type = MaterialStdVectorAux
variable = slip_increment_8
property = slip_increment
index = 8
execute_on = timestep_end
[]
[slip_increment_9]
type = MaterialStdVectorAux
variable = slip_increment_9
property = slip_increment
index = 9
execute_on = timestep_end
[]
[slip_increment_10]
type = MaterialStdVectorAux
variable = slip_increment_10
property = slip_increment
index = 10
execute_on = timestep_end
[]
[slip_increment_11]
type = MaterialStdVectorAux
variable = slip_increment_11
property = slip_increment
index = 11
execute_on = timestep_end
[]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_5]
type = MaterialStdVectorAux
variable = twin_volume_fraction_5
property = twin_twin_system_volume_fraction
index = 5
execute_on = timestep_end
[]
[twin_volume_fraction_6]
type = MaterialStdVectorAux
variable = twin_volume_fraction_6
property = twin_twin_system_volume_fraction
index = 6
execute_on = timestep_end
[]
[twin_volume_fraction_7]
type = MaterialStdVectorAux
variable = twin_volume_fraction_7
property = twin_twin_system_volume_fraction
index = 7
execute_on = timestep_end
[]
[twin_volume_fraction_8]
type = MaterialStdVectorAux
variable = twin_volume_fraction_8
property = twin_twin_system_volume_fraction
index = 8
execute_on = timestep_end
[]
[twin_volume_fraction_9]
type = MaterialStdVectorAux
variable = twin_volume_fraction_9
property = twin_twin_system_volume_fraction
index = 9
execute_on = timestep_end
[]
[twin_volume_fraction_10]
type = MaterialStdVectorAux
variable = twin_volume_fraction_10
property = twin_twin_system_volume_fraction
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_11]
type = MaterialStdVectorAux
variable = twin_volume_fraction_11
property = twin_twin_system_volume_fraction
index = 11
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.02*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5' # roughly copper
fill_method = symmetric9
euler_angle_1 = 54.74
euler_angle_2 = 45.0
euler_angle_3 = 270.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_xtalpl slip_xtalpl'
tan_mod_type = exact
[]
[twin_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
base_name = twin
number_slip_systems = 12
slip_sys_file_name = 'fcc_input_twinning_systems.txt'
initial_twin_lattice_friction = 60.0
[]
[slip_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
total_twin_volume_fraction = 'total_volume_fraction_twins'
[]
[]
[Postprocessors]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[slip_increment_0]
type = ElementAverageValue
variable = slip_increment_0
[]
[slip_increment_1]
type = ElementAverageValue
variable = slip_increment_1
[]
[slip_increment_2]
type = ElementAverageValue
variable = slip_increment_2
[]
[slip_increment_3]
type = ElementAverageValue
variable = slip_increment_3
[]
[slip_increment_4]
type = ElementAverageValue
variable = slip_increment_4
[]
[slip_increment_5]
type = ElementAverageValue
variable = slip_increment_5
[]
[slip_increment_6]
type = ElementAverageValue
variable = slip_increment_6
[]
[slip_increment_7]
type = ElementAverageValue
variable = slip_increment_7
[]
[slip_increment_8]
type = ElementAverageValue
variable = slip_increment_8
[]
[slip_increment_9]
type = ElementAverageValue
variable = slip_increment_9
[]
[slip_increment_10]
type = ElementAverageValue
variable = slip_increment_10
[]
[slip_increment_11]
type = ElementAverageValue
variable = slip_increment_11
[]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_5]
type = ElementAverageValue
variable = twin_volume_fraction_5
[]
[twin_volume_fraction_6]
type = ElementAverageValue
variable = twin_volume_fraction_6
[]
[twin_volume_fraction_7]
type = ElementAverageValue
variable = twin_volume_fraction_7
[]
[twin_volume_fraction_8]
type = ElementAverageValue
variable = twin_volume_fraction_8
[]
[twin_volume_fraction_9]
type = ElementAverageValue
variable = twin_volume_fraction_9
[]
[twin_volume_fraction_10]
type = ElementAverageValue
variable = twin_volume_fraction_10
[]
[twin_volume_fraction_11]
type = ElementAverageValue
variable = twin_volume_fraction_11
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.005
dtmin = 0.01
num_steps = 6
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_twinning/demonstration_combined_hcp_slip_twins.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[single_xtal]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_9]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_9]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_9]
order = CONSTANT
family = MONOMIAL
[]
[resolved_twin_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = twin_total_volume_fraction_twins
execute_on = timestep_end
[]
[slip_increment_0]
type = MaterialStdVectorAux
variable = slip_increment_0
property = slip_increment
index = 0
execute_on = timestep_end
[]
[slip_increment_3]
type = MaterialStdVectorAux
variable = slip_increment_3
property = slip_increment
index = 3
execute_on = timestep_end
[]
[slip_increment_9]
type = MaterialStdVectorAux
variable = slip_increment_9
property = slip_increment
index = 9
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[tau_9]
type = MaterialStdVectorAux
variable = resolved_shear_stress_9
property = applied_shear_stress
index = 9
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_3]
type = MaterialStdVectorAux
variable = slip_resistance_3
property = slip_resistance
index = 3
execute_on = timestep_end
[]
[slip_resistance_9]
type = MaterialStdVectorAux
variable = slip_resistance_9
property = slip_resistance
index = 9
execute_on = timestep_end
[]
[twin_tau_0]
type = MaterialStdVectorAux
variable = resolved_twin_stress_0
property = twin_applied_shear_stress
index = 0
execute_on = timestep_end
[]
[twin_resistance_0]
type = MaterialStdVectorAux
variable = twin_resistance_0
property = twin_slip_resistance
index = 0
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
preset = true
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.005*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'slip_xtalpl twin_xtalpl'
tan_mod_type = exact
[]
[slip_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = 'hcp_aprismatic_capyramidal_slip_sys.txt'
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
zero_tol = 5e-10
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '98 224' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e4 4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1.25e5 2.25e7' #from Beyerlein and Tome 2008 IJP
normalized_slip_activiation_energy_per_mode = '3.73e-3 3.2e-2' #from Beyerlein and Tome 2008 IJP
slip_energy_proportionality_factor_per_mode = '330 100' #from Beyerlein and Tome 2008 IJP
substructure_rate_coefficient_per_mode = '355 0.4' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2 0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
total_twin_volume_fraction = twin_total_volume_fraction_twins
[]
[twin_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
base_name = twin
crystal_lattice_type = HCP
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
number_slip_systems = 6
slip_sys_file_name = 'hcp_tensile_twin_systems.txt'
initial_twin_lattice_friction = 1140.0
non_coplanar_coefficient_twin_hardening = 10000
coplanar_coefficient_twin_hardening = 1000
characteristic_twin_shear = 0.167
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[slip_increment_0]
type = ElementAverageValue
variable = slip_increment_0
[]
[slip_increment_3]
type = ElementAverageValue
variable = slip_increment_3
[]
[slip_increment_9]
type = ElementAverageValue
variable = slip_increment_9
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[tau_9]
type = ElementAverageValue
variable = resolved_shear_stress_9
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_3]
type = ElementAverageValue
variable = slip_resistance_3
[]
[slip_resistance_9]
type = ElementAverageValue
variable = slip_resistance_9
[]
[twin_tau_0]
type = ElementAverageValue
variable = resolved_twin_stress_0
[]
[twin_resistance_0]
type = ElementAverageValue
variable = twin_resistance_0
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_rel_tol = 1e-12
nl_abs_step_tol = 1e-10
dt = 0.5
dtmin = 1.0e-2
dtmax = 10.0
end_time = 2.25
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/rotation_matrix_update_euler_angle_111_orientation.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[euler_angle_1]
order = CONSTANT
family = MONOMIAL
[]
[euler_angle_2]
order = CONSTANT
family = MONOMIAL
[]
[euler_angle_3]
order = CONSTANT
family = MONOMIAL
[]
[pk2_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[AuxKernels]
[euler_angle_1]
type = MaterialRealVectorValueAux
variable = euler_angle_1
property = updated_Euler_angle
component = 0
execute_on = timestep_end
[]
[euler_angle_2]
type = MaterialRealVectorValueAux
variable = euler_angle_2
property = updated_Euler_angle
component = 1
execute_on = timestep_end
[]
[euler_angle_3]
type = MaterialRealVectorValueAux
variable = euler_angle_3
property = updated_Euler_angle
component = 2
execute_on = timestep_end
[]
[pk2_zz]
type = RankTwoAux
variable = pk2_zz
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[Periodic]
[all]
variable = 'disp_x'
auto_direction = 'z'
[]
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = 'front'
function = '0.005*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
rotation_matrix = '0.707106781 0.40824829 0.57735027
-0.707106781 0.40824829 0.57735027
0. -0.81649658 0.57735027'
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 4
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[updated_euler_angle]
type = ComputeUpdatedEulerAngle
radian_to_degree = true
[]
[]
[Postprocessors]
[euler_angle_1]
type = ElementAverageValue
variable = euler_angle_1
[]
[euler_angle_2]
type = ElementAverageValue
variable = euler_angle_2
[]
[euler_angle_3]
type = ElementAverageValue
variable = euler_angle_3
[]
[pk2_zz]
type = ElementAverageValue
variable = pk2_zz
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = ' lu '
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.1
dtmin = 0.01
end_time = 5
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/use_substep_dt.i)
[GlobalParams]
displacements = 'ux uy uz'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 4
ny = 4
nz = 4
elem_type = HEX8
displacements = 'ux uy uz'
[]
[AuxVariables]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[rotout]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[gss]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[stress_zz]
type = RankTwoAux
variable = stress_zz
rank_two_tensor = stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[gss]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_inc]
type = MaterialStdVectorAux
variable = slip_increment
property = slip_increment
index = 0
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[]
[pushy]
type = FunctionDirichletBC
variable = uy
boundary = top
function = '-0.1*t'
[]
[pullz]
type = FunctionDirichletBC
variable = uz
boundary = front
function = '0.1*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 1
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[gss]
type = ElementAverageValue
variable = gss
[]
[slip_increment]
type = ElementAverageValue
variable = slip_increment
[]
[uy_avg_top]
type = SideAverageValue
variable = uy
boundary = top
[]
[uz_avg_front]
type = SideAverageValue
variable = uz
boundary = front
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'NEWTON'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
line_search = 'none'
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1.0
num_steps = 5
dtmin = 0.001
nl_abs_step_tol = 1e-10
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/hcp_thermal_eigenstrain.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[e_xtalpl_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_xtalpl_yy]
order = CONSTANT
family = MONOMIAL
[]
[eth_zz]
order = CONSTANT
family = MONOMIAL
[]
[fth_xx]
order = CONSTANT
family = MONOMIAL
[]
[fth_yy]
order = CONSTANT
family = MONOMIAL
[]
[fth_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_yy]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_xx]
order = CONSTANT
family = MONOMIAL
[]
[f_yy]
order = CONSTANT
family = MONOMIAL
[]
[f_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = '300+400*t' # temperature increases at a constant rate
execute_on = timestep_begin
[]
[e_xtalpl_xx]
type = RankTwoAux
variable = e_xtalpl_xx
rank_two_tensor = total_lagrangian_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_xtalpl_yy]
type = RankTwoAux
variable = e_xtalpl_yy
rank_two_tensor = total_lagrangian_strain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[eth_zz]
type = RankTwoAux
variable = eth_zz
rank_two_tensor = thermal_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fth_xx]
type = RankTwoAux
variable = fth_xx
rank_two_tensor = thermal_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fth_yy]
type = RankTwoAux
variable = fth_yy
rank_two_tensor = thermal_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fth_zz]
type = RankTwoAux
variable = fth_zz
rank_two_tensor = thermal_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = plastic_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f_xx]
type = RankTwoAux
variable = f_xx
rank_two_tensor = deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[f_yy]
type = RankTwoAux
variable = f_yy
rank_two_tensor = deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[f_zz]
type = RankTwoAux
variable = f_zz
rank_two_tensor = deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = thermal_eigenstrain
tan_mod_type = exact
maximum_substep_iteration = 10
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e3
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '9 22' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e2 4.7e2' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1.25e5 2.25e7' #from Beyerlein and Tome 2008 IJP
normalized_slip_activiation_energy_per_mode = '3.73e-3 3.2e-2' #from Beyerlein and Tome 2008 IJP
slip_energy_proportionality_factor_per_mode = '330 100' #from Beyerlein and Tome 2008 IJP
substructure_rate_coefficient_per_mode = '355 0.4' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2 0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
[]
[thermal_eigenstrain]
type = ComputeCrystalPlasticityThermalEigenstrain
eigenstrain_name = thermal_eigenstrain
deformation_gradient_name = thermal_deformation_gradient
temperature = temperature
thermal_expansion_coefficients = '1e-05 1e-05 1e-05' # thermal expansion coefficients along three directions
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[e_xtalpl_xx]
type = ElementAverageValue
variable = e_xtalpl_xx
[]
[e_xtalpl_yy]
type = ElementAverageValue
variable = e_xtalpl_yy
[]
[eth_zz]
type = ElementAverageValue
variable = eth_zz
[]
[fth_xx]
type = ElementAverageValue
variable = fth_xx
[]
[fth_yy]
type = ElementAverageValue
variable = fth_yy
[]
[fth_zz]
type = ElementAverageValue
variable = fth_zz
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_yy]
type = ElementAverageValue
variable = fp_yy
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[f_xx]
type = ElementAverageValue
variable = f_xx
[]
[f_yy]
type = ElementAverageValue
variable = f_yy
[]
[f_zz]
type = ElementAverageValue
variable = f_zz
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-6
nl_abs_step_tol = 1e-10
dt = 0.1
dtmin = 1e-4
num_steps = 10
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_convergence_issue_flag.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[center_node]
type = BoundingBoxNodeSetGenerator
input = cube
new_boundary = 'center_point'
top_right = '0.51 0.51 0'
bottom_left = '0.49 0.49 0'
[]
[back_edge_y]
type = BoundingBoxNodeSetGenerator
input = center_node
new_boundary = 'back_edge_y'
bottom_left = '0.9 0.5 0'
top_right = '1.1 0.5 0'
[]
[back_edge_x]
type = BoundingBoxNodeSetGenerator
input = back_edge_y
new_boundary = back_edge_x
bottom_left = '0.5 0.9 0'
top_right = '0.5 1.0 0'
[]
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'center_point back_edge_y'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'center_point back_edge_x'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
euler_angle_1 = 164.5
euler_angle_2 = 90.0
euler_angle_3 = 15.3
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
print_state_variable_convergence_error_messages = true
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '0.5 5'
effective_shear_modulus_per_mode = '4.7e4 4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1e5 2e7'
normalized_slip_activiation_energy_per_mode = '4e-3 3e-2'
slip_energy_proportionality_factor_per_mode = '330 100'
substructure_rate_coefficient_per_mode = '400 100'
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '2e-3 2e-3' #minimize impact
grain_size = 20.0e-3 #20 microns
print_state_variable_convergence_error_messages = true
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
nl_max_its = 20
l_max_its = 50
dt = 0.3
dtmin = 1.0e-4
dtmax = 0.1
num_steps = 1
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_basal_active.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_yy]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_yy]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_2]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[pk2_zz]
type = RankTwoAux
variable = pk2_zz
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = plastic_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_xx]
type = RankTwoAux
variable = e_xx
rank_two_tensor = total_lagrangian_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_yy]
type = RankTwoAux
variable = e_yy
rank_two_tensor = total_lagrangian_strain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[slip_increment_0]
type = MaterialStdVectorAux
variable = slip_increment_0
property = slip_increment
index = 0
execute_on = timestep_end
[]
[slip_increment_1]
type = MaterialStdVectorAux
variable = slip_increment_1
property = slip_increment
index = 1
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = resolved_shear_stress_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_1]
type = MaterialStdVectorAux
variable = resolved_shear_stress_1
property = applied_shear_stress
index = 1
execute_on = timestep_end
[]
[tau_2]
type = MaterialStdVectorAux
variable = resolved_shear_stress_2
property = applied_shear_stress
index = 2
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_1]
type = MaterialStdVectorAux
variable = slip_resistance_1
property = slip_resistance
index = 1
execute_on = timestep_end
[]
[slip_resistance_2]
type = MaterialStdVectorAux
variable = slip_resistance_2
property = slip_resistance
index = 2
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
# orient in approximately [011] to activate the basal slip planes
euler_angle_1 = 120.0
euler_angle_2 = 125.264
euler_angle_3 = 45.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 3
slip_sys_file_name = hcp_basal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0e3
slip_system_modes = 1
number_slip_systems_per_mode = '3'
lattice_friction_per_mode = '98' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '5.7e6' #from Knezevic et al. 2015 AM
normalized_slip_activiation_energy_per_mode = '0.002' #from Knezevic et al. 2015 AM
slip_energy_proportionality_factor_per_mode = '700' ##from Knezevic et al. 2015 AM
substructure_rate_coefficient_per_mode = '355' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2_zz]
type = ElementAverageValue
variable = pk2_zz
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_yy]
type = ElementAverageValue
variable = fp_yy
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_xx]
type = ElementAverageValue
variable = e_xx
[]
[e_yy]
type = ElementAverageValue
variable = e_yy
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[slip_increment_0]
type = ElementAverageValue
variable = slip_increment_0
[]
[slip_increment_1]
type = ElementAverageValue
variable = slip_increment_1
[]
[tau_0]
type = ElementAverageValue
variable = resolved_shear_stress_0
[]
[tau_1]
type = ElementAverageValue
variable = resolved_shear_stress_1
[]
[tau_2]
type = ElementAverageValue
variable = resolved_shear_stress_2
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_1]
type = ElementAverageValue
variable = slip_resistance_1
[]
[slip_resistance_2]
type = ElementAverageValue
variable = slip_resistance_2
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.5
dtmin = 1.0e-2
dtmax = 10.0
end_time = 2.5
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/hcp_volumetric_eigenstrain.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[e_xtalpl_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_xtalpl_yy]
order = CONSTANT
family = MONOMIAL
[]
[ev_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_xtalpl_zz]
order = CONSTANT
family = MONOMIAL
[]
[fv_xx]
order = CONSTANT
family = MONOMIAL
[]
[fv_yy]
order = CONSTANT
family = MONOMIAL
[]
[fv_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_yy]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_xx]
order = CONSTANT
family = MONOMIAL
[]
[f_yy]
order = CONSTANT
family = MONOMIAL
[]
[f_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
additional_generate_output = 'stress_zz stress_xx stress_yy vonmises_stress l2norm_strain'
additional_material_output_order = FIRST
[]
[Functions]
[temperature_ramp]
type = ParsedFunction
expression = 'if(t<=1500.0, 600.0 + t/6.0, 850.0)'
[]
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = 'temperature_ramp'
execute_on = timestep_begin
[]
[e_xtalpl_xx]
type = RankTwoAux
variable = e_xtalpl_xx
rank_two_tensor = total_lagrangian_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_xtalpl_yy]
type = RankTwoAux
variable = e_xtalpl_yy
rank_two_tensor = total_lagrangian_strain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[ev_zz]
type = RankTwoAux
variable = ev_zz
rank_two_tensor = void_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_xtalpl_zz]
type = RankTwoAux
variable = e_xtalpl_zz
rank_two_tensor = total_lagrangian_strain
index_i = 2
index_j = 2
execute_on = timestep_end
[]
[fv_xx]
type = RankTwoAux
variable = fv_xx
rank_two_tensor = volumetric_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fv_yy]
type = RankTwoAux
variable = fv_yy
rank_two_tensor = volumetric_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fv_zz]
type = RankTwoAux
variable = fv_zz
rank_two_tensor = volumetric_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = plastic_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f_xx]
type = RankTwoAux
variable = f_xx
rank_two_tensor = deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[f_yy]
type = RankTwoAux
variable = f_yy
rank_two_tensor = deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[f_zz]
type = RankTwoAux
variable = f_zz
rank_two_tensor = deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = void_eigenstrain
tan_mod_type = exact
line_search_method = CUT_HALF
use_line_search = true
maximum_substep_iteration = 10
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e3
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '9 22' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e2 4.7e2' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1.25e5 2.25e7' #from Beyerlein and Tome 2008 IJP
normalized_slip_activiation_energy_per_mode = '3.73e-3 3.2e-2' #from Beyerlein and Tome 2008 IJP
slip_energy_proportionality_factor_per_mode = '330 100' #from Beyerlein and Tome 2008 IJP
substructure_rate_coefficient_per_mode = '355 0.4' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2 0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
[]
[void_eigenstrain]
type = ComputeCrystalPlasticityVolumetricEigenstrain
eigenstrain_name = void_eigenstrain
deformation_gradient_name = volumetric_deformation_gradient
mean_spherical_void_radius = void_radius
spherical_void_number_density = void_density
[]
[void_density]
type = ParsedMaterial
property_name = void_density
coupled_variables = temperature
expression = 'if(temperature<611.0, 0.0,
if(temperature<=835.0, 2.387e13 *(temperature - 611.0) / 1344.0, 0.0))' #1/mm^3, gives an eigenstrain of 1.0e-5 with radius=1.0e-6mm
# outputs = exodus
[]
[void_radius]
type = GenericConstantMaterial
prop_names = void_radius
prop_values = '1.0e-6' ##1 nm avg particle radius
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[e_xtalpl_xx]
type = ElementAverageValue
variable = e_xtalpl_xx
[]
[e_xtalpl_yy]
type = ElementAverageValue
variable = e_xtalpl_yy
[]
[ev_zz]
type = ElementAverageValue
variable = ev_zz
[]
[e_xtalpl_zz]
type = ElementAverageValue
variable = e_xtalpl_zz
[]
[fv_xx]
type = ElementAverageValue
variable = fv_xx
[]
[fv_yy]
type = ElementAverageValue
variable = fv_yy
[]
[fv_zz]
type = ElementAverageValue
variable = fv_zz
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_yy]
type = ElementAverageValue
variable = fp_yy
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[f_xx]
type = ElementAverageValue
variable = f_xx
[]
[f_yy]
type = ElementAverageValue
variable = f_yy
[]
[f_zz]
type = ElementAverageValue
variable = f_zz
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 10.0
dtmin = 1e-4
# end_time = 10
num_steps = 10
[]
[Outputs]
csv = true
[console]
type = Console
# max_rows = 5
[]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_aprismatic_active.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[center_node]
type = BoundingBoxNodeSetGenerator
input = cube
new_boundary = 'center_point'
top_right = '0.51 0.51 0'
bottom_left = '0.49 0.49 0'
[]
[back_edge_y]
type = BoundingBoxNodeSetGenerator
input = center_node
new_boundary = 'back_edge_y'
bottom_left = '0.9 0.5 0'
top_right = '1.1 0.5 0'
[]
[back_edge_x]
type = BoundingBoxNodeSetGenerator
input = back_edge_y
new_boundary = back_edge_x
bottom_left = '0.5 0.9 0'
top_right = '0.5 1.0 0'
[]
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_2]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_12]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_13]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_0]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_1]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_2]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_12]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_13]
order = CONSTANT
family = MONOMIAL
[]
[substructure_density]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_12]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_13]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = resolved_shear_stress_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_1]
type = MaterialStdVectorAux
variable = resolved_shear_stress_1
property = applied_shear_stress
index = 1
execute_on = timestep_end
[]
[tau_2]
type = MaterialStdVectorAux
variable = resolved_shear_stress_2
property = applied_shear_stress
index = 2
execute_on = timestep_end
[]
[tau_12]
type = MaterialStdVectorAux
variable = resolved_shear_stress_12
property = applied_shear_stress
index = 12
execute_on = timestep_end
[]
[tau_13]
type = MaterialStdVectorAux
variable = resolved_shear_stress_13
property = applied_shear_stress
index = 13
execute_on = timestep_end
[]
[forest_dislocations_0]
type = MaterialStdVectorAux
variable = forest_dislocations_0
property = forest_dislocation_density
index = 0
execute_on = timestep_end
[]
[forest_dislocations_1]
type = MaterialStdVectorAux
variable = forest_dislocations_1
property = forest_dislocation_density
index = 1
execute_on = timestep_end
[]
[forest_dislocations_2]
type = MaterialStdVectorAux
variable = forest_dislocations_2
property = forest_dislocation_density
index = 2
execute_on = timestep_end
[]
[forest_dislocations_12]
type = MaterialStdVectorAux
variable = forest_dislocations_12
property = forest_dislocation_density
index = 12
execute_on = timestep_end
[]
[forest_dislocations_13]
type = MaterialStdVectorAux
variable = forest_dislocations_13
property = forest_dislocation_density
index = 13
execute_on = timestep_end
[]
[substructure_density]
type = MaterialRealAux
variable = substructure_density
property = total_substructure_density
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_1]
type = MaterialStdVectorAux
variable = slip_resistance_1
property = slip_resistance
index = 1
execute_on = timestep_end
[]
[slip_resistance_2]
type = MaterialStdVectorAux
variable = slip_resistance_2
property = slip_resistance
index = 2
execute_on = timestep_end
[]
[slip_resistance_12]
type = MaterialStdVectorAux
variable = slip_resistance_12
property = slip_resistance
index = 12
execute_on = timestep_end
[]
[slip_resistance_13]
type = MaterialStdVectorAux
variable = slip_resistance_13
property = slip_resistance
index = 13
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'center_point back_edge_y'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'center_point back_edge_x'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
euler_angle_1 = 164.5
euler_angle_2 = 90.0
euler_angle_3 = 15.3
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '0.5 5'
effective_shear_modulus_per_mode = '4.7e4 4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1e5 2e7'
normalized_slip_activiation_energy_per_mode = '4e-3 3e-2'
slip_energy_proportionality_factor_per_mode = '330 100'
substructure_rate_coefficient_per_mode = '400 100'
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '2e-3 2e-3' #minimize impact
grain_size = 20.0e-3 #20 microns
[]
[]
[Postprocessors]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[tau_0]
type = ElementAverageValue
variable = resolved_shear_stress_0
[]
[tau_1]
type = ElementAverageValue
variable = resolved_shear_stress_1
[]
[tau_2]
type = ElementAverageValue
variable = resolved_shear_stress_2
[]
[tau_12]
type = ElementAverageValue
variable = resolved_shear_stress_12
[]
[tau_13]
type = ElementAverageValue
variable = resolved_shear_stress_13
[]
[forest_dislocation_0]
type = ElementAverageValue
variable = forest_dislocations_0
[]
[forest_dislocation_1]
type = ElementAverageValue
variable = forest_dislocations_1
[]
[forest_dislocation_2]
type = ElementAverageValue
variable = forest_dislocations_2
[]
[forest_dislocation_12]
type = ElementAverageValue
variable = forest_dislocations_12
[]
[forest_dislocation_13]
type = ElementAverageValue
variable = forest_dislocations_13
[]
[substructure_density]
type = ElementAverageValue
variable = substructure_density
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_1]
type = ElementAverageValue
variable = slip_resistance_1
[]
[slip_resistance_2]
type = ElementAverageValue
variable = slip_resistance_2
[]
[slip_resistance_12]
type = ElementAverageValue
variable = slip_resistance_12
[]
[slip_resistance_13]
type = ElementAverageValue
variable = slip_resistance_13
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
nl_max_its = 20
l_max_its = 50
dt = 0.005
dtmin = 1.0e-4
dtmax = 0.1
end_time = 0.09
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_increase.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX27
[]
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[linear_void_strain]
order = CONSTANT
family = MONOMIAL
[]
[e_void_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_void_yy]
order = CONSTANT
family = MONOMIAL
[]
[e_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[pk2_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[tau_0]
order = FIRST
family = MONOMIAL
[]
[tau_10]
order = FIRST
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[Functions]
[temperature_ramp]
type = ParsedFunction
expression = '600.0 + t'
[]
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = 'temperature_ramp'
execute_on = timestep_begin
[]
[linear_void_strain]
type = MaterialRealAux
variable = linear_void_strain
property = equivalent_linear_change
execute_on = timestep_end
[]
[e_void_xx]
type = RankTwoAux
variable = e_void_xx
rank_two_tensor = void_eigenstrain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_void_yy]
type = RankTwoAux
variable = e_void_yy
rank_two_tensor = void_eigenstrain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[e_void_zz]
type = RankTwoAux
variable = e_void_zz
rank_two_tensor = void_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f_void_zz]
type = RankTwoAux
variable = f_void_zz
rank_two_tensor = volumetric_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[pk2_zz]
type = RankTwoAux
variable = pk2_zz
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = tau_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_10]
type = MaterialStdVectorAux
variable = tau_10
property = applied_shear_stress
index = 10
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[hold_front]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.98e5 1.25e5 1.25e5 1.98e5 1.25e5 1.98e5 1.22e5 1.22e5 1.22e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = void_eigenstrain
tan_mod_type = exact
line_search_method = CUT_HALF
use_line_search = true
maximum_substep_iteration = 5
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[void_eigenstrain]
type = ComputeCrystalPlasticityVolumetricEigenstrain
eigenstrain_name = void_eigenstrain
deformation_gradient_name = volumetric_deformation_gradient
mean_spherical_void_radius = void_radius
spherical_void_number_density = void_density
[]
[void_density]
type = ParsedMaterial
property_name = void_density
coupled_variables = temperature
expression = '1.0e8 * (temperature - 600.0)'
[]
[void_radius]
type = GenericConstantMaterial
prop_names = void_radius
prop_values = '1.0e-6' ##1 nm avg particle radius
[]
[]
[Postprocessors]
[linear_void_strain]
type = ElementAverageValue
variable = linear_void_strain
[]
[e_void_xx]
type = ElementAverageValue
variable = e_void_xx
[]
[e_void_yy]
type = ElementAverageValue
variable = e_void_yy
[]
[e_void_zz]
type = ElementAverageValue
variable = e_void_zz
[]
[f_void_zz]
type = ElementAverageValue
variable = f_void_zz
[]
[density]
type = ElementAverageMaterialProperty
mat_prop = void_density
execute_on = TIMESTEP_END
[]
[radius]
type = ElementAverageMaterialProperty
mat_prop = void_radius
execute_on = TIMESTEP_END
[]
[pk2_zz]
type = ElementAverageValue
variable = pk2_zz
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[tau_0]
type = ElementAverageValue
variable = tau_0
[]
[tau_10]
type = ElementAverageValue
variable = tau_10
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
line_search = 'none'
nl_abs_tol = 1e-12
nl_rel_tol = 1e-8
nl_forced_its = 1
dt = 1.0
dtmin = 0.1
end_time = 5.0
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/hcp_volumetric_eigenstrain_decrease.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[e_void_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_void_yy]
order = CONSTANT
family = MONOMIAL
[]
[e_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_4]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_9]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_14]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = '300+400*t' # temperature increases at a constant rate
execute_on = timestep_begin
[]
[e_void_xx]
type = RankTwoAux
variable = e_void_xx
rank_two_tensor = void_eigenstrain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_void_yy]
type = RankTwoAux
variable = e_void_yy
rank_two_tensor = void_eigenstrain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[e_void_zz]
type = RankTwoAux
variable = e_void_zz
rank_two_tensor = void_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f_void_zz]
type = RankTwoAux
variable = f_void_zz
rank_two_tensor = volumetric_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[tau_4]
type = MaterialStdVectorAux
variable = resolved_shear_stress_4
property = applied_shear_stress
index = 4
execute_on = timestep_end
[]
[tau_9]
type = MaterialStdVectorAux
variable = resolved_shear_stress_9
property = applied_shear_stress
index = 9
execute_on = timestep_end
[]
[tau_14]
type = MaterialStdVectorAux
variable = resolved_shear_stress_14
property = applied_shear_stress
index = 14
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = void_eigenstrain
tan_mod_type = exact
maximum_substep_iteration = 5
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e3
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '9 22' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e2 4.7e2' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1.25e5 2.25e7' #from Beyerlein and Tome 2008 IJP
normalized_slip_activiation_energy_per_mode = '3.73e-3 3.2e-2' #from Beyerlein and Tome 2008 IJP
slip_energy_proportionality_factor_per_mode = '330 100' #from Beyerlein and Tome 2008 IJP
substructure_rate_coefficient_per_mode = '355 0.4' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2 0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
[]
[void_eigenstrain]
type = ComputeCrystalPlasticityVolumetricEigenstrain
eigenstrain_name = void_eigenstrain
deformation_gradient_name = volumetric_deformation_gradient
mean_spherical_void_radius = void_radius
spherical_void_number_density = void_density
[]
[void_radius]
type = ParsedMaterial
property_name = void_radius
coupled_variables = temperature
expression = 'if(temperature<321.0, 1.0e-5, (1.0e-5 - 5.0e-8 * (temperature - 320)))' #mm
[]
[void_density]
type = GenericConstantMaterial
prop_names = void_density
prop_values = '1.0e8' ###1/mm^3
[]
[]
[Postprocessors]
[e_void_xx]
type = ElementAverageValue
variable = e_void_xx
[]
[e_void_yy]
type = ElementAverageValue
variable = e_void_yy
[]
[e_void_zz]
type = ElementAverageValue
variable = e_void_zz
[]
[f_void_zz]
type = ElementAverageValue
variable = f_void_zz
[]
[void_density]
type = ElementAverageMaterialProperty
mat_prop = void_density
execute_on = TIMESTEP_END
[]
[void_radius]
type = ElementAverageMaterialProperty
mat_prop = void_radius
execute_on = TIMESTEP_END
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[tau_4]
type = ElementAverageValue
variable = resolved_shear_stress_4
[]
[tau_9]
type = ElementAverageValue
variable = resolved_shear_stress_9
[]
[tau_14]
type = ElementAverageValue
variable = resolved_shear_stress_14
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Debug]
show_var_residual_norms = true
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-8
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 1e-4
num_steps = 10
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/linesearch.i)
[GlobalParams]
displacements = 'ux uy uz'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[./fp_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./e_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./gss]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[./fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[../]
[./gss1]
type = MaterialStdVectorAux
variable = gss
property = slip_resistance
index = 0
execute_on = timestep_end
[../]
[]
[BCs]
[./symmy]
type = DirichletBC
variable = uy
boundary = bottom
value = 0
[../]
[./symmx]
type = DirichletBC
variable = ux
boundary = left
value = 0
[../]
[./symmz]
type = DirichletBC
variable = uz
boundary = back
value = 0
[../]
[./tdisp]
type = FunctionDirichletBC
variable = uz
boundary = front
function = tdisp
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[../]
[./stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
maximum_substep_iteration = 200
use_line_search = true
min_line_search_step_size = 0.01
[../]
[./trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
resistance_tol = 0.01
[../]
[]
[Postprocessors]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./fp_zz]
type = ElementAverageValue
variable = fp_zz
[../]
[./e_zz]
type = ElementAverageValue
variable = e_zz
[../]
[./gss]
type = ElementAverageValue
variable = gss
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
dt = 0.05
solve_type = 'PJFNK'
petsc_options_iname = -pc_hypre_type
petsc_options_value = boomerang
nl_abs_tol = 1e-10
nl_rel_step_tol = 1e-10
dtmax = 10.0
nl_rel_tol = 1e-10
end_time = 1
dtmin = 0.02
num_steps = 10
nl_abs_step_tol = 1e-10
[]
[Outputs]
exodus = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/upper_twin_fraction_limit.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
elem_type = HEX8
[]
[]
[AuxVariables]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[total_twin_volume_fraction]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_4]
order = CONSTANT
family = MONOMIAL
[]
[slip_increment_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_10]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[total_twin_volume_fraction]
type = MaterialRealAux
variable = total_twin_volume_fraction
property = total_volume_fraction_twins
execute_on = timestep_end
[]
[slip_increment_4]
type = MaterialStdVectorAux
variable = slip_increment_4
property = slip_increment
index = 4
execute_on = timestep_end
[]
[slip_increment_10]
type = MaterialStdVectorAux
variable = slip_increment_10
property = slip_increment
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_10]
type = MaterialStdVectorAux
variable = twin_volume_fraction_10
property = twin_system_volume_fraction
index = 10
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '5.0e-4*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.08e5 6.034e4 6.034e4 1.08e5 6.03e4 1.08e5 2.86e4 2.86e4 2.86e4' #Tallon and Wolfenden. J. Phys. Chem. Solids (1979)
fill_method = symmetric9
euler_angle_1 = 54.74
euler_angle_2 = 45.0
euler_angle_3 = 270.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_only_xtalpl'
tan_mod_type = exact
[]
[twin_only_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = 'fcc_input_twinning_systems.txt'
initial_twin_lattice_friction = 1.5
upper_limit_twin_volume_fraction = 1e-7
stol = 0.01
print_state_variable_convergence_error_messages = true
[]
[]
[Postprocessors]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[total_twin_volume_fraction]
type = ElementAverageValue
variable = total_twin_volume_fraction
[]
[slip_increment_4]
type = ElementAverageValue
variable = slip_increment_4
[]
[slip_increment_10]
type = ElementAverageValue
variable = slip_increment_10
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_10]
type = ElementAverageValue
variable = twin_volume_fraction_10
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 1e-5
end_time = 0.18
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/bicrystal_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[copper]
type = GeneratedMeshGenerator
dim = 3
elem_type = HEX8
[]
[copper_id]
type = SubdomainIDGenerator
input = copper
subdomain_id = 0
[]
[brass]
type = GeneratedMeshGenerator
dim = 3
zmax = 2
zmin = 1
elem_type = HEX8
[]
[brass_id]
type = SubdomainIDGenerator
input = brass
subdomain_id = 1
[]
[sticher]
type = StitchedMeshGenerator
inputs = 'copper_id brass_id'
stitch_boundaries_pairs = 'front back'
prevent_boundary_ids_overlap = false
[]
[]
[AuxVariables]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[copper_gss]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[copper_slip_increment]
order = CONSTANT
family = MONOMIAL
block = 0
[]
[brass_gss]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[brass_slip_increment]
order = CONSTANT
family = MONOMIAL
block = 1
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[copper]
strain = FINITE
incremental = true
add_variables = true
generate_output = stress_zz
block = 0
base_name = copper
[]
[brass]
strain = FINITE
incremental = true
add_variables = true
generate_output = stress_zz
block = 1
base_name = brass
[]
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[gss_copper]
type = MaterialStdVectorAux
variable = copper_gss
property = copper_slip_resistance
index = 0
block = 0
execute_on = timestep_end
[]
[slip_inc_copper]
type = MaterialStdVectorAux
variable = copper_slip_increment
property = copper_slip_increment
index = 0
block = 0
execute_on = timestep_end
[]
[gss_brass]
type = MaterialStdVectorAux
variable = brass_gss
property = brass_slip_resistance
index = 0
block = 1
execute_on = timestep_end
[]
[slip_inc_brass]
type = MaterialStdVectorAux
variable = brass_slip_increment
property = brass_slip_increment
index = 0
block = 1
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.01*t'
[]
[]
[Materials]
[elasticity_tensor_copper]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
base_name = copper
block = 0
[]
[stress_copper]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl_copper'
tan_mod_type = exact
base_name = copper
block = 0
[]
[trial_xtalpl_copper]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
base_name = copper
block = 0
[]
[elasticity_tensor_brass]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
euler_angle_1 = 0.0
euler_angle_2 = 45.0
euler_angle_3 = 0.9
base_name = brass
block = 1
[]
[stress_brass]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl_brass'
tan_mod_type = exact
base_name = brass
block = 1
[]
[trial_xtalpl_brass]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
base_name = brass
block = 1
[]
[]
[Postprocessors]
[copper_stress_zz]
type = ElementAverageValue
variable = copper_stress_zz
block = 0
[]
[brass_stress_zz]
type = ElementAverageValue
variable = brass_stress_zz
block = 1
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[copper_gss]
type = ElementAverageValue
variable = copper_gss
block = 0
[]
[copper_slip_increment]
type = ElementAverageValue
variable = copper_slip_increment
block = 0
[]
[brass_gss]
type = ElementAverageValue
variable = brass_gss
block = 1
[]
[brass_slip_increment]
type = ElementAverageValue
variable = brass_slip_increment
block = 1
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.05
dtmin = 0.01
dtmax = 10.0
num_steps = 10
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/stress_update_material_based/orthotropic_rotation_Cijkl.i)
# This test is designed to test the correct application of the Euler angle
# rotations to the elasticity tensor. The test uses values for the nine C_ijkl
# entries that correspond to the engineering notation placement:
# e.g. C11 = 11e3, c12 = 12e3, c13 = 13e3, c22 = 22e3 ..... c66 = 66e3
#
# A rotation of (0, 90, 0) is applied to the 1x1x1 cube, such that the values of
# c12 and c13 switch, c22 and c33 switch, and c55 and c66 switch. Postprocessors
# are used to verify this switch (made simple with the value convention above)
# and to verify that the unrotated components along the x-axis remain constant.
[Mesh]
type = GeneratedMesh
dim = 3
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[AuxVariables]
[./lage_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./lage_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./pk2_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./lage_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./fp_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./c11]
order = CONSTANT
family = MONOMIAL
[../]
[./c12]
order = CONSTANT
family = MONOMIAL
[../]
[./c13]
order = CONSTANT
family = MONOMIAL
[../]
[./c22]
order = CONSTANT
family = MONOMIAL
[../]
[./c23]
order = CONSTANT
family = MONOMIAL
[../]
[./c33]
order = CONSTANT
family = MONOMIAL
[../]
[./c44]
order = CONSTANT
family = MONOMIAL
[../]
[./c55]
order = CONSTANT
family = MONOMIAL
[../]
[./c66]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./tdisp]
type = ParsedFunction
expression = 0.01*t
[../]
[]
[Physics/SolidMechanics/QuasiStatic]
[./all]
strain = FINITE
add_variables = true
[../]
[]
[AuxKernels]
[./lage_xx]
type = RankTwoAux
rank_two_tensor = total_lagrangian_strain
variable = lage_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./lage_yy]
type = RankTwoAux
rank_two_tensor = total_lagrangian_strain
variable = lage_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./pk2_yy]
type = RankTwoAux
variable = pk2_yy
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 1
index_i = 1
execute_on = timestep_end
[../]
[./lage_zz]
type = RankTwoAux
rank_two_tensor = total_lagrangian_strain
variable = lage_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./fp_yy]
type = RankTwoAux
variable = fp_yy
rank_two_tensor = plastic_deformation_gradient
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./c11]
type = RankFourAux
variable = c11
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 0
index_l = 0
execute_on = timestep_end
[../]
[./c12]
type = RankFourAux
variable = c12
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 1
index_l = 1
execute_on = timestep_end
[../]
[./c13]
type = RankFourAux
variable = c13
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 0
index_k = 2
index_l = 2
execute_on = timestep_end
[../]
[./c22]
type = RankFourAux
variable = c22
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 1
index_l = 1
execute_on = timestep_end
[../]
[./c23]
type = RankFourAux
variable = c23
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 1
index_k = 2
index_l = 2
execute_on = timestep_end
[../]
[./c33]
type = RankFourAux
variable = c33
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 2
index_k = 2
index_l = 2
execute_on = timestep_end
[../]
[./c44]
type = RankFourAux
variable = c44
rank_four_tensor = elasticity_tensor
index_i = 1
index_j = 2
index_k = 1
index_l = 2
execute_on = timestep_end
[../]
[./c55]
type = RankFourAux
variable = c55
rank_four_tensor = elasticity_tensor
index_i = 2
index_j = 0
index_k = 2
index_l = 0
execute_on = timestep_end
[../]
[./c66]
type = RankFourAux
variable = c66
rank_four_tensor = elasticity_tensor
index_i = 0
index_j = 1
index_k = 0
index_l = 1
execute_on = timestep_end
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[../]
[./left]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[../]
[./back]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[../]
[./top]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = tdisp
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '11e3 12e3 13e3 22e3 23e3 33e3 44e3 55e3 66e3'
fill_method = symmetric9
euler_angle_1 = 0.0
euler_angle_2 = 45.0
euler_angle_3 = 45.0
[../]
[./stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[../]
[./trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[../]
[]
[Postprocessors]
[./lage_xx]
type = ElementAverageValue
variable = lage_xx
[../]
[./pk2_yy]
type = ElementAverageValue
variable = pk2_yy
[../]
[./lage_yy]
type = ElementAverageValue
variable = lage_yy
[../]
[./lage_zz]
type = ElementAverageValue
variable = lage_zz
[../]
[./fp_yy]
type = ElementAverageValue
variable = fp_yy
[../]
[./c11]
type = ElementAverageValue
variable = c11
[../]
[./c12]
type = ElementAverageValue
variable = c12
[../]
[./c13]
type = ElementAverageValue
variable = c13
[../]
[./c22]
type = ElementAverageValue
variable = c22
[../]
[./c23]
type = ElementAverageValue
variable = c23
[../]
[./c33]
type = ElementAverageValue
variable = c33
[../]
[./c44]
type = ElementAverageValue
variable = c44
[../]
[./c55]
type = ElementAverageValue
variable = c55
[../]
[./c66]
type = ElementAverageValue
variable = c66
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
l_tol = 1e-3
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 1 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
dtmax = 0.1
dtmin = 1.0e-3
dt = 0.05
end_time = 0.5
[]
[Outputs]
exodus = false
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_aprismatic_capyramidal.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_xx]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[e_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_3]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_4]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_5]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_6]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_3]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_xx]
type = RankTwoAux
variable = fp_xx
rank_two_tensor = plastic_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[e_zz]
type = RankTwoAux
variable = e_zz
rank_two_tensor = total_lagrangian_strain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_3]
type = MaterialStdVectorAux
variable = resolved_shear_stress_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[tau_4]
type = MaterialStdVectorAux
variable = resolved_shear_stress_4
property = applied_shear_stress
index = 4
execute_on = timestep_end
[]
[tau_5]
type = MaterialStdVectorAux
variable = resolved_shear_stress_5
property = applied_shear_stress
index = 5
execute_on = timestep_end
[]
[tau_6]
type = MaterialStdVectorAux
variable = resolved_shear_stress_6
property = applied_shear_stress
index = 6
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_3]
type = MaterialStdVectorAux
variable = slip_resistance_3
property = slip_resistance
index = 3
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
preset = true
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0e5
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '98 224' #Knezevic et al MSEA 654 (2013)
effective_shear_modulus_per_mode = '4.7e4 4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '1.25e5 2.25e7' #from Beyerlein and Tome 2008 IJP
normalized_slip_activiation_energy_per_mode = '3.73e-3 3.2e-2' #from Beyerlein and Tome 2008 IJP
slip_energy_proportionality_factor_per_mode = '330 100' #from Beyerlein and Tome 2008 IJP
substructure_rate_coefficient_per_mode = '355 0.4' #from Capolungo et al MSEA (2009)
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '0.2 0.2' #Estimated to match graph in Capolungo et al MSEA (2009), Figure 2
grain_size = 20.0e-3 #20 microns, Beyerlein and Tome IJP (2008)
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_xx]
type = ElementAverageValue
variable = fp_xx
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_zz]
type = ElementAverageValue
variable = e_zz
[]
[tau_3]
type = ElementAverageValue
variable = resolved_shear_stress_3
[]
[tau_4]
type = ElementAverageValue
variable = resolved_shear_stress_4
[]
[tau_5]
type = ElementAverageValue
variable = resolved_shear_stress_5
[]
[tau_6]
type = ElementAverageValue
variable = resolved_shear_stress_6
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_3]
type = ElementAverageValue
variable = slip_resistance_3
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.5
dtmin = 1.0e-2
dtmax = 10.0
end_time = 5
[]
[Outputs]
csv = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/twinning/check_direction_twin_propagation.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 3
ny = 3
nz = 3
elem_type = HEX8
[]
[]
[AuxVariables]
[twin_volume_fraction_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_6]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_7]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_8]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_9]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_volume_fraction_11]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_0]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_1]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_2]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_3]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_4]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_5]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_6]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_7]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_8]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_9]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_10]
order = CONSTANT
family = MONOMIAL
[]
[twin_tau_11]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[twin_volume_fraction_0]
type = MaterialStdVectorAux
variable = twin_volume_fraction_0
property = twin_system_volume_fraction
index = 0
execute_on = timestep_end
[]
[twin_volume_fraction_1]
type = MaterialStdVectorAux
variable = twin_volume_fraction_1
property = twin_system_volume_fraction
index = 1
execute_on = timestep_end
[]
[twin_volume_fraction_2]
type = MaterialStdVectorAux
variable = twin_volume_fraction_2
property = twin_system_volume_fraction
index = 2
execute_on = timestep_end
[]
[twin_volume_fraction_3]
type = MaterialStdVectorAux
variable = twin_volume_fraction_3
property = twin_system_volume_fraction
index = 3
execute_on = timestep_end
[]
[twin_volume_fraction_4]
type = MaterialStdVectorAux
variable = twin_volume_fraction_4
property = twin_system_volume_fraction
index = 4
execute_on = timestep_end
[]
[twin_volume_fraction_5]
type = MaterialStdVectorAux
variable = twin_volume_fraction_5
property = twin_system_volume_fraction
index = 5
execute_on = timestep_end
[]
[twin_volume_fraction_6]
type = MaterialStdVectorAux
variable = twin_volume_fraction_6
property = twin_system_volume_fraction
index = 6
execute_on = timestep_end
[]
[twin_volume_fraction_7]
type = MaterialStdVectorAux
variable = twin_volume_fraction_7
property = twin_system_volume_fraction
index = 7
execute_on = timestep_end
[]
[twin_volume_fraction_8]
type = MaterialStdVectorAux
variable = twin_volume_fraction_8
property = twin_system_volume_fraction
index = 8
execute_on = timestep_end
[]
[twin_volume_fraction_9]
type = MaterialStdVectorAux
variable = twin_volume_fraction_9
property = twin_system_volume_fraction
index = 9
execute_on = timestep_end
[]
[twin_volume_fraction_10]
type = MaterialStdVectorAux
variable = twin_volume_fraction_10
property = twin_system_volume_fraction
index = 10
execute_on = timestep_end
[]
[twin_volume_fraction_11]
type = MaterialStdVectorAux
variable = twin_volume_fraction_11
property = twin_system_volume_fraction
index = 11
execute_on = timestep_end
[]
[twin_tau_0]
type = MaterialStdVectorAux
variable = twin_tau_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[twin_tau_1]
type = MaterialStdVectorAux
variable = twin_tau_1
property = applied_shear_stress
index = 1
execute_on = timestep_end
[]
[twin_tau_2]
type = MaterialStdVectorAux
variable = twin_tau_2
property = applied_shear_stress
index = 2
execute_on = timestep_end
[]
[twin_tau_3]
type = MaterialStdVectorAux
variable = twin_tau_3
property = applied_shear_stress
index = 3
execute_on = timestep_end
[]
[twin_tau_4]
type = MaterialStdVectorAux
variable = twin_tau_4
property = applied_shear_stress
index = 4
execute_on = timestep_end
[]
[twin_tau_5]
type = MaterialStdVectorAux
variable = twin_tau_5
property = applied_shear_stress
index = 5
execute_on = timestep_end
[]
[twin_tau_6]
type = MaterialStdVectorAux
variable = twin_tau_6
property = applied_shear_stress
index = 6
execute_on = timestep_end
[]
[twin_tau_7]
type = MaterialStdVectorAux
variable = twin_tau_7
property = applied_shear_stress
index = 7
execute_on = timestep_end
[]
[twin_tau_8]
type = MaterialStdVectorAux
variable = twin_tau_8
property = applied_shear_stress
index = 8
execute_on = timestep_end
[]
[twin_tau_9]
type = MaterialStdVectorAux
variable = twin_tau_9
property = applied_shear_stress
index = 9
execute_on = timestep_end
[]
[twin_tau_10]
type = MaterialStdVectorAux
variable = twin_tau_10
property = applied_shear_stress
index = 10
execute_on = timestep_end
[]
[twin_tau_11]
type = MaterialStdVectorAux
variable = twin_tau_11
property = applied_shear_stress
index = 11
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'bottom'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '-5.0e-4*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.08e5 6.034e4 6.034e4 1.08e5 6.03e4 1.08e5 2.86e4 2.86e4 2.86e4' #Tallon and Wolfenden. J. Phys. Chem. Solids (1979)
fill_method = symmetric9
euler_angle_1 = 54.74
euler_angle_2 = 45.0
euler_angle_3 = 270.0
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'twin_only_xtalpl'
tan_mod_type = exact
[]
[twin_only_xtalpl]
type = CrystalPlasticityTwinningKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = 'fcc_input_twinning_systems.txt'
initial_twin_lattice_friction = 2.0
[]
[]
[Postprocessors]
[twin_volume_fraction_0]
type = ElementAverageValue
variable = twin_volume_fraction_0
[]
[twin_volume_fraction_1]
type = ElementAverageValue
variable = twin_volume_fraction_1
[]
[twin_volume_fraction_2]
type = ElementAverageValue
variable = twin_volume_fraction_2
[]
[twin_volume_fraction_3]
type = ElementAverageValue
variable = twin_volume_fraction_3
[]
[twin_volume_fraction_4]
type = ElementAverageValue
variable = twin_volume_fraction_4
[]
[twin_volume_fraction_5]
type = ElementAverageValue
variable = twin_volume_fraction_5
[]
[twin_volume_fraction_6]
type = ElementAverageValue
variable = twin_volume_fraction_6
[]
[twin_volume_fraction_7]
type = ElementAverageValue
variable = twin_volume_fraction_7
[]
[twin_volume_fraction_8]
type = ElementAverageValue
variable = twin_volume_fraction_8
[]
[twin_volume_fraction_9]
type = ElementAverageValue
variable = twin_volume_fraction_9
[]
[twin_volume_fraction_10]
type = ElementAverageValue
variable = twin_volume_fraction_10
[]
[twin_volume_fraction_11]
type = ElementAverageValue
variable = twin_volume_fraction_11
[]
[twin_tau_0]
type = ElementAverageValue
variable = twin_tau_0
[]
[twin_tau_1]
type = ElementAverageValue
variable = twin_tau_1
[]
[twin_tau_2]
type = ElementAverageValue
variable = twin_tau_2
[]
[twin_tau_3]
type = ElementAverageValue
variable = twin_tau_3
[]
[twin_tau_4]
type = ElementAverageValue
variable = twin_tau_4
[]
[twin_tau_5]
type = ElementAverageValue
variable = twin_tau_5
[]
[twin_tau_6]
type = ElementAverageValue
variable = twin_tau_6
[]
[twin_tau_7]
type = ElementAverageValue
variable = twin_tau_7
[]
[twin_tau_8]
type = ElementAverageValue
variable = twin_tau_8
[]
[twin_tau_9]
type = ElementAverageValue
variable = twin_tau_9
[]
[twin_tau_10]
type = ElementAverageValue
variable = twin_tau_10
[]
[twin_tau_11]
type = ElementAverageValue
variable = twin_tau_11
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.025
dtmin = 0.0125
num_steps = 9
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/multiple_eigenstrains_test.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
elem_type = HEX8
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[f1_xx]
order = CONSTANT
family = MONOMIAL
[]
[f1_yy]
order = CONSTANT
family = MONOMIAL
[]
[f1_zz]
order = CONSTANT
family = MONOMIAL
[]
[f2_xx]
order = CONSTANT
family = MONOMIAL
[]
[f2_yy]
order = CONSTANT
family = MONOMIAL
[]
[f2_zz]
order = CONSTANT
family = MONOMIAL
[]
[feig_xx]
order = CONSTANT
family = MONOMIAL
[]
[feig_yy]
order = CONSTANT
family = MONOMIAL
[]
[feig_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
generate_output = stress_zz
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = '300+400*t' # temperature increases at a constant rate
execute_on = timestep_begin
[]
[f1_xx]
type = RankTwoAux
variable = f1_xx
rank_two_tensor = thermal_deformation_gradient_1
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[f1_yy]
type = RankTwoAux
variable = f1_yy
rank_two_tensor = thermal_deformation_gradient_1
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[f1_zz]
type = RankTwoAux
variable = f1_zz
rank_two_tensor = thermal_deformation_gradient_1
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f2_xx]
type = RankTwoAux
variable = f2_xx
rank_two_tensor = thermal_deformation_gradient_2
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[f2_yy]
type = RankTwoAux
variable = f2_yy
rank_two_tensor = thermal_deformation_gradient_2
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[f2_zz]
type = RankTwoAux
variable = f2_zz
rank_two_tensor = thermal_deformation_gradient_2
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[feig_xx]
type = RankTwoAux
variable = feig_xx
rank_two_tensor = eigenstrain_deformation_gradient
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[feig_yy]
type = RankTwoAux
variable = feig_yy
rank_two_tensor = eigenstrain_deformation_gradient
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[feig_zz]
type = RankTwoAux
variable = feig_zz
rank_two_tensor = eigenstrain_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[tdisp]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.684e5 1.214e5 1.214e5 1.684e5 1.214e5 1.684e5 0.754e5 0.754e5 0.754e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = "thermal_eigenstrain_1 thermal_eigenstrain_2"
tan_mod_type = exact
maximum_substep_iteration = 5
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[thermal_eigenstrain_1]
type = ComputeCrystalPlasticityThermalEigenstrain
eigenstrain_name = thermal_eigenstrain_1
deformation_gradient_name = thermal_deformation_gradient_1
temperature = temperature
thermal_expansion_coefficients = '1e-05 2e-05 3e-05' # thermal expansion coefficients along three directions
[]
[thermal_eigenstrain_2]
type = ComputeCrystalPlasticityThermalEigenstrain
eigenstrain_name = thermal_eigenstrain_2
deformation_gradient_name = thermal_deformation_gradient_2
temperature = temperature
thermal_expansion_coefficients = '2e-05 3e-05 4e-05' # thermal expansion coefficients along three directions
[]
[]
[Postprocessors]
[stress_zz]
type = ElementAverageValue
variable = stress_zz
[]
[f1_xx]
type = ElementAverageValue
variable = f1_xx
[]
[f1_yy]
type = ElementAverageValue
variable = f1_yy
[]
[f1_zz]
type = ElementAverageValue
variable = f1_zz
[]
[f2_xx]
type = ElementAverageValue
variable = f2_xx
[]
[f2_yy]
type = ElementAverageValue
variable = f2_yy
[]
[f2_zz]
type = ElementAverageValue
variable = f2_zz
[]
[feig_xx]
type = ElementAverageValue
variable = feig_xx
[]
[feig_yy]
type = ElementAverageValue
variable = feig_yy
[]
[feig_zz]
type = ElementAverageValue
variable = feig_zz
[]
[temperature]
type = ElementAverageValue
variable = temperature
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
dt = 0.1
dtmin = 1e-4
end_time = 10
[]
[Outputs]
csv = true
[console]
type = Console
max_rows = 5
[]
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/cp_eigenstrains/volumetric_eigenstrain_parabolic.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX27
[]
[]
[AuxVariables]
[temperature]
order = FIRST
family = LAGRANGE
[]
[linear_void_strain]
order = CONSTANT
family = MONOMIAL
[]
[e_total_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_total_yy]
order = CONSTANT
family = MONOMIAL
[]
[e_void_xx]
order = CONSTANT
family = MONOMIAL
[]
[e_void_yy]
order = CONSTANT
family = MONOMIAL
[]
[e_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[f_void_zz]
order = CONSTANT
family = MONOMIAL
[]
[pk2_zz]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
incremental = true
add_variables = true
[]
[Functions]
[temperature_ramp]
type = ParsedFunction
expression = '600.0 + t'
[]
[]
[AuxKernels]
[temperature]
type = FunctionAux
variable = temperature
function = 'temperature_ramp'
execute_on = timestep_begin
[]
[linear_void_strain]
type = MaterialRealAux
variable = linear_void_strain
property = equivalent_linear_change
execute_on = timestep_end
[]
[e_total_xx]
type = RankTwoAux
variable = e_total_xx
rank_two_tensor = total_lagrangian_strain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_total_yy]
type = RankTwoAux
variable = e_total_yy
rank_two_tensor = total_lagrangian_strain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[e_void_xx]
type = RankTwoAux
variable = e_void_xx
rank_two_tensor = void_eigenstrain
index_j = 0
index_i = 0
execute_on = timestep_end
[]
[e_void_yy]
type = RankTwoAux
variable = e_void_yy
rank_two_tensor = void_eigenstrain
index_j = 1
index_i = 1
execute_on = timestep_end
[]
[e_void_zz]
type = RankTwoAux
variable = e_void_zz
rank_two_tensor = void_eigenstrain
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[f_void_zz]
type = RankTwoAux
variable = f_void_zz
rank_two_tensor = volumetric_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[pk2_zz]
type = RankTwoAux
variable = pk2_zz
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[]
[BCs]
[symmy]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[symmx]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[symmz]
type = DirichletBC
variable = disp_z
boundary = back
value = 0
[]
[hold_front]
type = DirichletBC
variable = disp_z
boundary = front
value = 0
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.98e5 1.25e5 1.25e5 1.98e5 1.25e5 1.98e5 1.22e5 1.22e5 1.22e5'
fill_method = symmetric9
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
eigenstrain_names = void_eigenstrain
tan_mod_type = exact
line_search_method = CUT_HALF
use_line_search = true
maximum_substep_iteration = 5
[]
[trial_xtalpl]
type = CrystalPlasticityKalidindiUpdate
number_slip_systems = 12
slip_sys_file_name = input_slip_sys.txt
[]
[void_eigenstrain]
type = ComputeCrystalPlasticityVolumetricEigenstrain
eigenstrain_name = void_eigenstrain
deformation_gradient_name = volumetric_deformation_gradient
mean_spherical_void_radius = void_radius
spherical_void_number_density = void_density
[]
[void_density]
type = ParsedMaterial
property_name = void_density
coupled_variables = temperature
expression = 'if(temperature<601.0, 1.0e6, (-1.0e6 * (temperature - 603)^2.0 + 5.0e6))'
[]
[void_radius]
type = ParsedMaterial
property_name = void_radius
coupled_variables = temperature
expression = 'if(temperature<601.0, 1.0e-6, (-2.25e-6 * (temperature - 603)^2.0 + 1.0e-5))'
[]
[]
[Postprocessors]
[linear_void_strain]
type = ElementAverageValue
variable = linear_void_strain
[]
[e_void_xx]
type = ElementAverageValue
variable = e_void_xx
[]
[e_void_yy]
type = ElementAverageValue
variable = e_void_yy
[]
[e_void_zz]
type = ElementAverageValue
variable = e_void_zz
[]
[f_void_zz]
type = ElementAverageValue
variable = f_void_zz
[]
[void_density]
type = ElementAverageMaterialProperty
mat_prop = void_density
execute_on = TIMESTEP_END
[]
[void_radius]
type = ElementAverageMaterialProperty
mat_prop = void_radius
execute_on = TIMESTEP_END
[]
[pk2_zz]
type = ElementAverageValue
variable = pk2_zz
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[e_total_xx]
type = ElementAverageValue
variable = e_total_xx
[]
[e_total_yy]
type = ElementAverageValue
variable = e_total_yy
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
line_search = 'none'
nl_abs_tol = 1e-12
nl_rel_tol = 1e-8
nl_forced_its = 1
dt = 1.0
dtmin = 1.0e-4
end_time = 5.0
[]
[Outputs]
csv = true
perf_graph = true
[]
(modules/solid_mechanics/test/tests/crystal_plasticity/hcp_single_crystal/update_method_hcp_no_negative_aprismatic.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
[cube]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
elem_type = HEX8
[]
[center_node]
type = BoundingBoxNodeSetGenerator
input = cube
new_boundary = 'center_point'
top_right = '0.51 0.51 0'
bottom_left = '0.49 0.49 0'
[]
[back_edge_y]
type = BoundingBoxNodeSetGenerator
input = center_node
new_boundary = 'back_edge_y'
bottom_left = '0.9 0.5 0'
top_right = '1.1 0.5 0'
[]
[back_edge_x]
type = BoundingBoxNodeSetGenerator
input = back_edge_y
new_boundary = back_edge_x
bottom_left = '0.5 0.9 0'
top_right = '0.5 1.0 0'
[]
[]
[AuxVariables]
[temperature]
initial_condition = 300
[]
[pk2]
order = CONSTANT
family = MONOMIAL
[]
[fp_zz]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_0]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_1]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_2]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_12]
order = CONSTANT
family = MONOMIAL
[]
[resolved_shear_stress_13]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_0]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_1]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_2]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_12]
order = CONSTANT
family = MONOMIAL
[]
[forest_dislocations_13]
order = CONSTANT
family = MONOMIAL
[]
[substructure_density]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_0]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_1]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_2]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_12]
order = CONSTANT
family = MONOMIAL
[]
[slip_resistance_13]
order = CONSTANT
family = MONOMIAL
[]
[]
[Physics/SolidMechanics/QuasiStatic/all]
strain = FINITE
add_variables = true
[]
[AuxKernels]
[pk2]
type = RankTwoAux
variable = pk2
rank_two_tensor = second_piola_kirchhoff_stress
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[fp_zz]
type = RankTwoAux
variable = fp_zz
rank_two_tensor = plastic_deformation_gradient
index_j = 2
index_i = 2
execute_on = timestep_end
[]
[tau_0]
type = MaterialStdVectorAux
variable = resolved_shear_stress_0
property = applied_shear_stress
index = 0
execute_on = timestep_end
[]
[tau_1]
type = MaterialStdVectorAux
variable = resolved_shear_stress_1
property = applied_shear_stress
index = 1
execute_on = timestep_end
[]
[tau_2]
type = MaterialStdVectorAux
variable = resolved_shear_stress_2
property = applied_shear_stress
index = 2
execute_on = timestep_end
[]
[tau_12]
type = MaterialStdVectorAux
variable = resolved_shear_stress_12
property = applied_shear_stress
index = 12
execute_on = timestep_end
[]
[tau_13]
type = MaterialStdVectorAux
variable = resolved_shear_stress_13
property = applied_shear_stress
index = 13
execute_on = timestep_end
[]
[forest_dislocations_0]
type = MaterialStdVectorAux
variable = forest_dislocations_0
property = forest_dislocation_density
index = 0
execute_on = timestep_end
[]
[forest_dislocations_1]
type = MaterialStdVectorAux
variable = forest_dislocations_1
property = forest_dislocation_density
index = 1
execute_on = timestep_end
[]
[forest_dislocations_2]
type = MaterialStdVectorAux
variable = forest_dislocations_2
property = forest_dislocation_density
index = 2
execute_on = timestep_end
[]
[forest_dislocations_12]
type = MaterialStdVectorAux
variable = forest_dislocations_12
property = forest_dislocation_density
index = 12
execute_on = timestep_end
[]
[forest_dislocations_13]
type = MaterialStdVectorAux
variable = forest_dislocations_13
property = forest_dislocation_density
index = 13
execute_on = timestep_end
[]
[substructure_density]
type = MaterialRealAux
variable = substructure_density
property = total_substructure_density
execute_on = timestep_end
[]
[slip_resistance_0]
type = MaterialStdVectorAux
variable = slip_resistance_0
property = slip_resistance
index = 0
execute_on = timestep_end
[]
[slip_resistance_1]
type = MaterialStdVectorAux
variable = slip_resistance_1
property = slip_resistance
index = 1
execute_on = timestep_end
[]
[slip_resistance_2]
type = MaterialStdVectorAux
variable = slip_resistance_2
property = slip_resistance
index = 2
execute_on = timestep_end
[]
[slip_resistance_12]
type = MaterialStdVectorAux
variable = slip_resistance_12
property = slip_resistance
index = 12
execute_on = timestep_end
[]
[slip_resistance_13]
type = MaterialStdVectorAux
variable = slip_resistance_13
property = slip_resistance
index = 13
execute_on = timestep_end
[]
[]
[BCs]
[fix_y]
type = DirichletBC
variable = disp_y
preset = true
boundary = 'center_point back_edge_y'
value = 0
[]
[fix_x]
type = DirichletBC
variable = disp_x
boundary = 'center_point back_edge_x'
value = 0
[]
[fix_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[tdisp]
type = FunctionDirichletBC
variable = disp_z
boundary = front
function = '0.001*t'
[]
[]
[Materials]
[elasticity_tensor]
type = ComputeElasticityTensorCP
C_ijkl = '1.622e5 9.18e4 6.88e4 1.622e5 6.88e4 1.805e5 4.67e4 4.67e4 4.67e4' #alpha Ti, Alankar et al. Acta Materialia 59 (2011) 7003-7009
fill_method = symmetric9
euler_angle_1 = 164.5
euler_angle_2 = 90.0
euler_angle_3 = 15.3
[]
[stress]
type = ComputeMultipleCrystalPlasticityStress
crystal_plasticity_models = 'trial_xtalpl'
tan_mod_type = exact
[]
[trial_xtalpl]
type = CrystalPlasticityHCPDislocationSlipBeyerleinUpdate
number_slip_systems = 15
slip_sys_file_name = hcp_aprismatic_capyramidal_slip_sys.txt
unit_cell_dimension = '2.934e-7 2.934e-7 4.657e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
temperature = temperature
initial_forest_dislocation_density = 15.0
zero_tol = 1.1
initial_substructure_density = 1.0e3
slip_system_modes = 2
number_slip_systems_per_mode = '3 12'
lattice_friction_per_mode = '0.5 5'
effective_shear_modulus_per_mode = '4.7e4 4.7e4' #Ti, in MPa, https://materialsproject.org/materials/mp-46/
burgers_vector_per_mode = '2.934e-7 6.586e-7' #Ti, in mm, https://materialsproject.org/materials/mp-46/
slip_generation_coefficient_per_mode = '-1e5 -2e7'
normalized_slip_activiation_energy_per_mode = '4e-3 3e-2'
slip_energy_proportionality_factor_per_mode = '330 100'
substructure_rate_coefficient_per_mode = '400 100'
applied_strain_rate = 0.001
gamma_o = 1.0e-3
Hall_Petch_like_constant_per_mode = '2e-3 2e-3' #minimize impact
grain_size = 20.0e-3 #20 microns
[]
[]
[Postprocessors]
[pk2]
type = ElementAverageValue
variable = pk2
[]
[fp_zz]
type = ElementAverageValue
variable = fp_zz
[]
[tau_0]
type = ElementAverageValue
variable = resolved_shear_stress_0
[]
[tau_1]
type = ElementAverageValue
variable = resolved_shear_stress_1
[]
[tau_2]
type = ElementAverageValue
variable = resolved_shear_stress_2
[]
[tau_12]
type = ElementAverageValue
variable = resolved_shear_stress_12
[]
[tau_13]
type = ElementAverageValue
variable = resolved_shear_stress_13
[]
[forest_dislocation_0]
type = ElementAverageValue
variable = forest_dislocations_0
[]
[forest_dislocation_1]
type = ElementAverageValue
variable = forest_dislocations_1
[]
[forest_dislocation_2]
type = ElementAverageValue
variable = forest_dislocations_2
[]
[forest_dislocation_12]
type = ElementAverageValue
variable = forest_dislocations_12
[]
[forest_dislocation_13]
type = ElementAverageValue
variable = forest_dislocations_13
[]
[substructure_density]
type = ElementAverageValue
variable = substructure_density
[]
[slip_resistance_0]
type = ElementAverageValue
variable = slip_resistance_0
[]
[slip_resistance_1]
type = ElementAverageValue
variable = slip_resistance_1
[]
[slip_resistance_2]
type = ElementAverageValue
variable = slip_resistance_2
[]
[slip_resistance_12]
type = ElementAverageValue
variable = slip_resistance_12
[]
[slip_resistance_13]
type = ElementAverageValue
variable = slip_resistance_13
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_asm_overlap -sub_pc_type -ksp_type -ksp_gmres_restart'
petsc_options_value = ' asm 2 lu gmres 200'
nl_abs_tol = 1e-10
nl_rel_tol = 1e-10
nl_abs_step_tol = 1e-10
nl_max_its = 20
l_max_its = 50
dt = 0.00375
dtmin = 1.0e-4
dtmax = 0.1
num_steps = 9
[]
[Outputs]
csv = true
[]