22 "Name of slip rate property: Same as slip rate user object specified in input file.");
23 params.
addParam<std::string>(
"uo_state_var_name",
24 "Name of state variable property: Same as " 25 "state variable user object specified in input " 28 "crystal_lattice_type",
30 "Type of crystal lattyce structure output");
31 params.
addParam<std::vector<unsigned int>>(
"groups",
33 "To group the initial values on different " 34 "slip systems 'format: [start end)', i.e.'0 " 35 "12 24 48' groups 0-11, 12-23 and 24-48 ");
36 params.
addParam<std::vector<Real>>(
"h0_group_values",
37 "h0 hardening constant for each group " 38 " i.e. '0.0 1.0 2.0' means 0-11 = 0.0, " 39 "12-23 = 1.0 and 24-48 = 2.0 ");
40 params.
addParam<std::vector<Real>>(
"tau0_group_values",
41 "The initial critical resolved shear stress" 42 "corresponding to each group" 43 " i.e. '100.0 110.0 120.0' means 0-11 = 100.0, " 44 "12-23 = 110.0 and 24-48 = 120.0 ");
45 params.
addParam<std::vector<Real>>(
"tauSat_group_values",
46 "The saturation resolved shear stress" 47 "corresponding to each group" 48 " i.e. '150.0 170.0 180.0' means 0-11 = 150.0, " 49 "12-23 = 170.0 and 24-48 = 180.0 ");
50 params.
addParam<std::vector<Real>>(
"hardeningExponent_group_values",
51 "The hardening exponent m" 52 "corresponding to each group" 53 " i.e. '1.0 2.0 3.0' means 0-11 = 1.0, " 54 "12-23 = 2.0 and 24-48 = 3.0 ");
55 params.
addParam<std::vector<Real>>(
"selfHardening_group_values",
56 "The self hardening coefficient q_aa" 57 "corresponding to each group" 58 " i.e. '1.0 2.0 3.0' means 0-11 = 1.0, " 59 "12-23 = 2.0 and 24-48 = 3.0 " 60 " usually these are all 1.");
61 params.
addParam<std::vector<Real>>(
"coplanarHardening_group_values",
62 "The coplanar latent hardening coefficient q_ab" 63 "corresponding to each group" 64 " i.e. '1.0 2.0 3.0' means 0-11 = 1.0, " 65 "12-23 = 2.0 and 24-48 = 3.0 ");
66 params.
addParam<std::vector<Real>>(
"GroupGroup_Hardening_group_values",
67 "The group-to-group latent hardening coefficient q_ab" 68 "This is a NxN vector" 69 " i.e. '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0' " 70 "means non-coplanar slip systems in gr_11,22,33= " 71 "1.0, 5.0 and 9.0 respectively." 72 "latent hardening between for gr_12,13 = 2.0 3.0" 74 params.
addClassDescription(
"Phenomenological Voce constitutive model state variable evolution " 75 "rate component base class.");
83 getMaterialProperty<
std::vector<
Real>>(parameters.
get<
std::string>(
"uo_slip_rate_name"))),
85 getMaterialProperty<
std::vector<
Real>>(parameters.
get<
std::string>(
"uo_state_var_name"))),
86 _crystal_lattice_type(getParam<
MooseEnum>(
"crystal_lattice_type")),
87 _groups(getParam<
std::vector<unsigned
int>>(
"groups")),
88 _h0_group_values(getParam<
std::vector<
Real>>(
"h0_group_values")),
89 _tau0_group_values(getParam<
std::vector<
Real>>(
"tau0_group_values")),
90 _tauSat_group_values(getParam<
std::vector<
Real>>(
"tauSat_group_values")),
91 _hardeningExponent_group_values(getParam<
std::vector<
Real>>(
"hardeningExponent_group_values")),
92 _selfHardening_group_values(getParam<
std::vector<
Real>>(
"selfHardening_group_values")),
93 _coplanarHardening_group_values(getParam<
std::vector<
Real>>(
"coplanarHardening_group_values")),
94 _GroupGroup_Hardening_group_values(
95 getParam<
std::vector<
Real>>(
"GroupGroup_Hardening_group_values")),
96 _n_groups(_groups.size())
101 "the number of slip system groups provided is not " 102 "correct. At least two values are expected");
107 "the number of supplied parameters does not" 108 " match the number of ip system groups");
112 "the number of supplied parameters does " 113 "not match the number of slip system groups");
117 "the number of supplied parameters does " 118 "not match the number of slip system groups");
122 "the number of supplied " 123 "parameters does not match the number of slip system groups");
127 "the number of supplied parameters " 128 "does not match the number of slip system groups");
132 "the number of supplied " 133 "parameters does not match the number of slip system groups");
136 paramError(
"GroupGroup_Hardening_group_values",
137 "the number of supplied " 138 "parameters does not match the number of slip system groups");
147 unsigned int qp, std::vector<Real> & val)
const 151 unsigned int group_i;
155 Real hardening_exponenet;
168 delta_tau = tau_sat - tau_0;
172 hardening_exponenet) *
194 std::vector<unsigned int> & _slipSystem_PlaneID)
const 198 for (
unsigned int slipSystemIndex = 0; slipSystemIndex <
_variable_size; ++slipSystemIndex)
202 if (slipSystemIndex < 12)
205 mooseError(
"FCC with more than 12 slip planes is not implemented ");
210 if (slipSystemIndex < 12)
213 else if (slipSystemIndex >= 12 && slipSystemIndex < 48)
217 mooseError(
"BCC with more than 48 slip systems is not implemented ");
222 mooseError(
"VoceHardeningError: Pass valid crustal_structure_type ");
228 std::vector<unsigned int> & _slipSystem_GroupID)
const 232 for (
unsigned int slipSystemIndex = 0; slipSystemIndex <
_variable_size; ++slipSystemIndex)
233 for (
unsigned int i = 0; i <
_n_groups - 1; ++i)
234 if (slipSystemIndex >=
_groups[i] && slipSystemIndex <
_groups[i + 1])
243 unsigned int slipSystemIndex_i,
unsigned int slipSystemIndex_j)
const 252 const bool same_slipSystem = slipSystemIndex_i == slipSystemIndex_j;
253 const bool same_group = group_i == group_j;
254 const bool same_plane = plane_i == plane_j;
264 else if (!same_group)
267 mooseError(
"VoceHardeningError:getHardeningCoefficient: case not listed, abort ");
std::vector< Real > _hardeningExponent_group_values
void paramError(const std::string ¶m, Args... args) const
std::vector< Real > _selfHardening_group_values
const MaterialProperty< std::vector< Real > > & _mat_prop_state_var
static InputParameters validParams()
virtual void initSlipSystemPlaneID(std::vector< unsigned int > &_slipSystem_PlaneID) const
method associating slip system to their group by generating a vector containing the association betwe...
registerMooseObject("SolidMechanicsApp", CrystalPlasticityStateVarRateComponentVoce)
virtual void initSlipSystemGroupID(std::vector< unsigned int > &_slipSystem_GroupID) const
method associating slip system to their slip plane by generating a vector containing the association ...
const unsigned int _n_groups
the number of slip system groups
std::vector< unsigned int > _slipSystem_GroupID
the vector associating a slip system to its groud ID
static MooseEnum crystalLatticeTypeOptions()
class for switching between different crystal lattice types
virtual bool calcStateVariableEvolutionRateComponent(unsigned int qp, std::vector< Real > &val) const
computing the slip system hardening rate
const MaterialProperty< std::vector< Real > > & _mat_prop_slip_rate
std::vector< Real > _h0_group_values
std::vector< unsigned int > _groups
the vectors of the input paramters
MooseEnum _crystal_lattice_type
the variable to switch crystal lattice type (i.e. FCC or BCC)
virtual Real getHardeningCoefficient(unsigned int slipSystemIndex_i, unsigned int slipSystemIndex_j) const
method retriving the appropiate self/latent hardening coefficient
std::vector< unsigned int > _slipSystem_PlaneID
the vector associating a slip system to its slip plane ID
std::vector< Real > _tau0_group_values
unsigned int _variable_size
CrystalPlasticityStateVarRateComponentVoce(const InputParameters ¶meters)
Crystal plasticity state variable evolution rate component userobject base class. ...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static InputParameters validParams()
void mooseError(Args &&... args) const
std::vector< Real > _tauSat_group_values
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
std::vector< Real > _coplanarHardening_group_values
Phenomenological constitutive model state variable evolution rate component userobject class...
MooseUnits pow(const MooseUnits &, int)
std::vector< Real > _GroupGroup_Hardening_group_values
void ErrorVector unsigned int
const Elem & get(const ElemType type_in)