11#include "libmesh/int_range.h"
20 params.
addParam<Real>(
"r", 1.0,
"Latent hardening coefficient");
21 params.
addParam<Real>(
"h", 541.5,
"hardening constants");
22 params.
addParam<Real>(
"t_sat", 109.8,
"saturated slip system strength");
23 params.
addParam<Real>(
"gss_a", 2.5,
"coefficient for hardening");
24 params.
addParam<Real>(
"ao", 0.001,
"slip rate coefficient");
25 params.
addParam<Real>(
"xm", 0.1,
"exponent for slip rate");
26 params.
addParam<Real>(
"gss_initial", 60.8,
"initial lattice friction strength of the material");
28 params.
addParam<MaterialPropertyName>(
29 "total_twin_volume_fraction",
30 "Total twin volume fraction, if twinning is considered in the simulation");
39 _r(getParam<Real>(
"r")),
40 _h(getParam<Real>(
"h")),
41 _tau_sat(getParam<Real>(
"t_sat")),
42 _gss_a(getParam<Real>(
"gss_a")),
43 _ao(getParam<Real>(
"ao")),
44 _xm(getParam<Real>(
"xm")),
45 _gss_initial(getParam<Real>(
"gss_initial")),
48 _hb(_number_slip_systems, 0.0),
49 _slip_resistance_increment(_number_slip_systems, 0.0),
52 _previous_substep_slip_resistance(_number_slip_systems, 0.0),
53 _slip_resistance_before_update(_number_slip_systems, 0.0),
56 _include_twinning_in_Lp(parameters.isParamValid(
"total_twin_volume_fraction")),
57 _twin_volume_fraction_total(_include_twinning_in_Lp
58 ? &getMaterialPropertyOld<Real>(
"total_twin_volume_fraction")
102 mooseWarning(
"Maximum allowable slip increment exceeded ",
127 std::vector<Real> & dslip_dtau)
131 if (MooseUtils::absoluteFuzzyEqual(
_tau[
_qp][i], 0.0))
134 dslip_dtau[i] =
_ao /
_xm *
180 unsigned int iplane, jplane;
184 if (iplane == jplane)
registerMooseObject("SolidMechanicsApp", CrystalPlasticityKalidindiUpdate)
CrystalPlasticityKalidindiUpdate uses the multiplicative decomposition of the deformation gradient an...
virtual void updateSubstepConstitutiveVariableValues() override
Stores the current value of the slip system resistance into a separate material property in case subs...
virtual void initQpStatefulProperties() override
initializes the stateful properties such as stress, plastic deformation gradient, slip system resista...
static InputParameters validParams()
const MaterialProperty< Real > *const _twin_volume_fraction_total
User-defined material property name for the total volume fraction of twins in a twinning propagation ...
virtual bool areConstitutiveStateVariablesConverged() override
Determines if all the state variables have converged.
std::vector< Real > _hb
Slip system interaction matrix used to calculate the hardening contributions from the self and latent...
virtual void setInitialConstitutiveVariableValues() override
Sets the value of the current and previous substep iteration slip system resistance to the old value ...
const Real _r
Varibles used in the Kalidindi 1992 slip system resistance constiutive model.
CrystalPlasticityKalidindiUpdate(const InputParameters ¶meters)
virtual void setSubstepConstitutiveVariableValues() override
Sets the current slip system resistance value to the previous substep value.
std::vector< Real > _slip_resistance_before_update
Caches the value of the current slip system resistance immediately prior to the update of the slip sy...
virtual void cacheStateVariablesBeforeUpdate() override
Finalizes the values of the state variables and slip system resistance for the current timestep after...
const bool _include_twinning_in_Lp
Flag to include the total twin volume fraction in the plastic velocity gradient calculation,...
virtual void calculateStateVariableEvolutionRateComponent() override
Following the Constitutive model for slip system resistance as given in Kalidindi,...
virtual bool calculateSlipRate() override
This virtual method is called to calculate the slip system slip increment based on the constitutive m...
std::vector< Real > _slip_resistance_increment
Increment of increased resistance for each slip system.
virtual bool updateStateVariables() override
Finalizes the values of the state variables and slip system resistance for the current timestep after...
virtual void calculateConstitutiveSlipDerivative(std::vector< Real > &dslip_dtau) override
This virtual method is called to find the derivative of the slip increment with respect to the applie...
virtual void calculateEquivalentSlipIncrement(RankTwoTensor &) override
std::vector< Real > _previous_substep_slip_resistance
Stores the values of the slip system resistance from the previous substep In classes which use disloc...
virtual void calculateEquivalentSlipIncrement(RankTwoTensor &)
const unsigned int _number_slip_systems
Maximum number of active slip systems for the crystalline material being modeled.
MaterialProperty< std::vector< Real > > & _slip_resistance
Slip system resistance.
const bool _print_convergence_message
Flag to print to console warning messages on stress, constitutive model convergence.
Real _slip_incr_tol
Slip increment tolerance.
MaterialProperty< std::vector< Real > > & _slip_increment
Current slip increment material property.
Real _substep_dt
Substepping time step value used within the inheriting constitutive models.
virtual void initQpStatefulProperties() override
initializes the stateful properties such as PK2 stress, resolved shear stress, plastic deformation gr...
Real _zero_tol
Residual tolerance when variable value is zero. Default 1e-12.
static InputParameters validParams()
MaterialProperty< std::vector< RankTwoTensor > > & _flow_direction
Real _resistance_tol
Tolerance for change in slip system resistance over an increment.
MaterialProperty< std::vector< Real > > & _tau
Resolved shear stress on each slip system.
virtual bool isConstitutiveStateVariableConverged(const std::vector< Real > ¤t_var, const std::vector< Real > &var_before_update, const std::vector< Real > &previous_substep_var, const Real &tolerance)
Check if a typical state variable, e.g.
const MaterialProperty< std::vector< Real > > & _slip_resistance_old
void mooseWarning(Args &&... args) const