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 ",
118 equivalent_slip_increment += (1.0 - (*_twin_volume_fraction_total)[
_qp]) *
127 std::vector<Real> & dslip_dtau)
134 dslip_dtau[i] =
_ao /
_xm *
180 unsigned int iplane, jplane;
184 if (iplane == jplane)
const Real _r
Varibles used in the Kalidindi 1992 slip system resistance constiutive model.
bool absoluteFuzzyEqual(const T &var1, const T2 &var2, const T3 &tol=libMesh::TOLERANCE *libMesh::TOLERANCE)
virtual bool updateStateVariables() override
Finalizes the values of the state variables and slip system resistance for the current timestep after...
virtual void initQpStatefulProperties() override
initializes the stateful properties such as PK2 stress, resolved shear stress, plastic deformation gr...
virtual void setInitialConstitutiveVariableValues() override
Sets the value of the current and previous substep iteration slip system resistance to the old value ...
virtual void calculateEquivalentSlipIncrement(RankTwoTensor &)
MaterialProperty< std::vector< Real > > & _slip_increment
Current slip increment material property.
virtual bool areConstitutiveStateVariablesConverged() override
Determines if all the state variables have converged.
virtual void updateSubstepConstitutiveVariableValues() override
Stores the current value of the slip system resistance into a separate material property in case subs...
std::vector< Real > _previous_substep_slip_resistance
Stores the values of the slip system resistance from the previous substep In classes which use disloc...
MaterialProperty< std::vector< Real > > & _slip_resistance
Slip system resistance.
void mooseWarning(Args &&... args) const
static InputParameters validParams()
Real _substep_dt
Substepping time step value used within the inheriting constitutive models.
virtual void calculateStateVariableEvolutionRateComponent() override
Following the Constitutive model for slip system resistance as given in Kalidindi, S.R., C.A.
virtual void setSubstepConstitutiveVariableValues() override
Sets the current slip system resistance value to the previous substep value.
const unsigned int _number_slip_systems
Maximum number of active slip systems for the crystalline material being modeled. ...
Real _zero_tol
Residual tolerance when variable value is zero. Default 1e-12.
const MaterialProperty< std::vector< Real > > & _slip_resistance_old
MaterialProperty< std::vector< RankTwoTensor > > & _flow_direction
virtual void calculateEquivalentSlipIncrement(RankTwoTensor &) override
virtual void cacheStateVariablesBeforeUpdate() override
Finalizes the values of the state variables and slip system resistance for the current timestep after...
CrystalPlasticityKalidindiUpdate uses the multiplicative decomposition of the deformation gradient an...
virtual bool calculateSlipRate() override
This virtual method is called to calculate the slip system slip increment based on the constitutive m...
CrystalPlasticityKalidindiUpdate(const InputParameters ¶meters)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
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 initQpStatefulProperties() override
initializes the stateful properties such as stress, plastic deformation gradient, slip system resista...
MaterialProperty< std::vector< Real > > & _tau
Resolved shear stress on each slip system.
std::vector< Real > _slip_resistance_increment
Increment of increased resistance for each slip system.
IntRange< T > make_range(T beg, T end)
Real _slip_incr_tol
Slip increment tolerance.
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 bool _print_convergence_message
Flag to print to console warning messages on stress, constitutive model convergence.
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
registerMooseObject("SolidMechanicsApp", CrystalPlasticityKalidindiUpdate)
std::vector< Real > _hb
Slip system interaction matrix used to calculate the hardening contributions from the self and latent...
Real _resistance_tol
Tolerance for change in slip system resistance over an increment.
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...
MooseUnits pow(const MooseUnits &, int)
static InputParameters validParams()
const bool _include_twinning_in_Lp
Flag to include the total twin volume fraction in the plastic velocity gradient calculation, per Kalidindi IJP (2001).