11 #include "MooseError.h"
22 params.addParam<std::string>(
24 "Name of slip rate property: Same as slip rate user object specified in input file.");
25 params.addParam<std::string>(
"uo_state_var_name",
26 "Name of state variable property: Same as "
27 "state variable user object specified in input "
29 params.addParam<MooseEnum>(
30 "crystal_lattice_type",
32 "Type of crystal lattyce structure output");
33 params.addParam<std::vector<unsigned int>>(
"groups",
34 "To group the initial values on different "
35 "slip systems 'format: [start end)', i.e.'0 "
36 "12 24 48' groups 0-11, 12-23 and 24-48 ");
37 params.addParam<std::vector<Real>>(
"h0_group_values",
38 "h0 hardening constant for each group "
39 " i.e. '0.0 1.0 2.0' means 0-11 = 0.0, "
40 "12-23 = 1.0 and 24-48 = 2.0 ");
41 params.addParam<std::vector<Real>>(
"tau0_group_values",
42 "The initial critical resolved shear stress"
43 "corresponding to each group"
44 " i.e. '100.0 110.0 120.0' means 0-11 = 100.0, "
45 "12-23 = 110.0 and 24-48 = 120.0 ");
46 params.addParam<std::vector<Real>>(
"tauSat_group_values",
47 "The saturation resolved shear stress"
48 "corresponding to each group"
49 " i.e. '150.0 170.0 180.0' means 0-11 = 150.0, "
50 "12-23 = 170.0 and 24-48 = 180.0 ");
51 params.addParam<std::vector<Real>>(
"hardeningExponent_group_values",
52 "The hardening exponent m"
53 "corresponding to each group"
54 " i.e. '1.0 2.0 3.0' means 0-11 = 1.0, "
55 "12-23 = 2.0 and 24-48 = 3.0 ");
56 params.addParam<std::vector<Real>>(
"selfHardening_group_values",
57 "The self hardening coefficient q_aa"
58 "corresponding to each group"
59 " i.e. '1.0 2.0 3.0' means 0-11 = 1.0, "
60 "12-23 = 2.0 and 24-48 = 3.0 "
61 " usually these are all 1.");
62 params.addParam<std::vector<Real>>(
"coplanarHardening_group_values",
63 "The coplanar latent hardening coefficient q_ab"
64 "corresponding to each group"
65 " i.e. '1.0 2.0 3.0' means 0-11 = 1.0, "
66 "12-23 = 2.0 and 24-48 = 3.0 ");
67 params.addParam<std::vector<Real>>(
"GroupGroup_Hardening_group_values",
68 "The group-to-group latent hardening coefficient q_ab"
69 "This is a NxN vector"
70 " i.e. '1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0' "
71 "means non-coplanar slip systems in gr_11,22,33= "
72 "1.0, 5.0 and 9.0 respectively."
73 "latent hardening between for gr_12,13 = 2.0 3.0"
75 params.addClassDescription(
"Phenomenological Voce constitutive model state variable evolution "
76 "rate component base class.");
81 const InputParameters & parameters)
84 getMaterialProperty<std::vector<Real>>(parameters.get<std::string>(
"uo_slip_rate_name"))),
86 getMaterialProperty<std::vector<Real>>(parameters.get<std::string>(
"uo_state_var_name"))),
87 _crystal_lattice_type(getParam<MooseEnum>(
"crystal_lattice_type")),
88 _groups(getParam<std::vector<unsigned int>>(
"groups")),
89 _h0_group_values(getParam<std::vector<Real>>(
"h0_group_values")),
90 _tau0_group_values(getParam<std::vector<Real>>(
"tau0_group_values")),
91 _tauSat_group_values(getParam<std::vector<Real>>(
"tauSat_group_values")),
92 _hardeningExponent_group_values(getParam<std::vector<Real>>(
"hardeningExponent_group_values")),
93 _selfHardening_group_values(getParam<std::vector<Real>>(
"selfHardening_group_values")),
94 _coplanarHardening_group_values(getParam<std::vector<Real>>(
"coplanarHardening_group_values")),
95 _GroupGroup_Hardening_group_values(
96 getParam<std::vector<Real>>(
"GroupGroup_Hardening_group_values")),
97 _n_groups(_groups.size())
102 "the number of slip system groups provided is not "
103 "correct. At least two values are expected");
107 paramError(
"h0_group_values",
108 "the number of supplied parameters does not"
109 " match the number of ip system groups");
112 paramError(
"tau0_group_values",
113 "the number of supplied parameters does "
114 "not match the number of slip system groups");
117 paramError(
"tauSat_group_values",
118 "the number of supplied parameters does "
119 "not match the number of slip system groups");
122 paramError(
"hardeningExponent_group_values",
123 "the number of supplied "
124 "parameters does not match the number of slip system groups");
127 paramError(
"selfHardening_group_values",
128 "the number of supplied parameters "
129 "does not match the number of slip system groups");
132 paramError(
"coplanarHardening_group_values",
133 "the number of supplied "
134 "parameters does not match the number of slip system groups");
137 paramError(
"GroupGroup_Hardening_group_values",
138 "the number of supplied "
139 "parameters does not match the number of slip system groups");
148 unsigned int qp, std::vector<Real> & val)
const
152 unsigned int group_i;
156 Real hardening_exponenet;
169 delta_tau = tau_sat - tau_0;
173 hardening_exponenet) *
190 return MooseEnum(
"FCC BCC",
"FCC");
195 std::vector<unsigned int> & _slipSystem_PlaneID)
const
199 for (
unsigned int slipSystemIndex = 0; slipSystemIndex <
_variable_size; ++slipSystemIndex)
203 if (slipSystemIndex < 12)
206 mooseError(
"FCC with more than 12 slip planes is not implemented ");
211 if (slipSystemIndex < 12)
214 else if (slipSystemIndex >= 12 && slipSystemIndex < 48)
218 mooseError(
"BCC with more than 48 slip systems is not implemented ");
223 mooseError(
"VoceHardeningError: Pass valid crustal_structure_type ");
229 std::vector<unsigned int> & _slipSystem_GroupID)
const
233 for (
unsigned int slipSystemIndex = 0; slipSystemIndex <
_variable_size; ++slipSystemIndex)
234 for (
unsigned int i = 0; i <
_n_groups - 1; ++i)
235 if (slipSystemIndex >=
_groups[i] && slipSystemIndex <
_groups[i + 1])
244 unsigned int slipSystemIndex_i,
unsigned int slipSystemIndex_j)
const
253 const bool same_slipSystem = slipSystemIndex_i == slipSystemIndex_j;
254 const bool same_group = group_i == group_j;
255 const bool same_plane = plane_i == plane_j;
265 else if (!same_group)
268 mooseError(
"VoceHardeningError:getHardeningCoefficient: case not listed, abort ");