19 InputParameters params = validParams<Material>();
20 params.addRequiredCoupledVarWithAutoBuild(
21 "v",
"var_name_base",
"op_num",
"Array of coupled variables");
22 params.addRequiredParam<
unsigned int>(
"deformed_grain_num",
23 "Number of OP representing deformed grains");
24 params.addParam<Real>(
"length_scale", 1.0e-9,
"Length scale in m, where default is nm");
25 params.addParam<Real>(
"int_width", 4.0,
"Diffuse Interface width in length_scale unit");
26 params.addParam<Real>(
"time_scale", 1.0e-6,
"Time scale in sec, where default is micro sec");
27 params.addParam<Real>(
"GBMobility", 2.0e-13,
"GB mobility input in m^4/(J*s)");
28 params.addParam<Real>(
"GBE", 1.0,
"Grain boundary energy in J/m^2");
29 params.addParam<Real>(
"Disloc_Den", 9.0e15,
"Dislocation Density in m^-2");
30 params.addParam<Real>(
"Elas_Mod", 2.50e10,
"Elastic Modulus in J/m^3");
31 params.addParam<Real>(
"Burg_vec", 3.0e-10,
"Length of Burger Vector in m");
32 params.addRequiredParam<UserObjectName>(
"grain_tracker",
33 "The GrainTracker UserObject to get values from.");
38 : Material(parameters),
39 _op_num(coupledComponents(
"v")),
41 _length_scale(getParam<Real>(
"length_scale")),
42 _int_width(getParam<Real>(
"int_width")),
43 _time_scale(getParam<Real>(
"time_scale")),
44 _GBMobility(getParam<Real>(
"GBMobility")),
45 _GBE(getParam<Real>(
"GBE")),
46 _Disloc_Den(getParam<Real>(
"Disloc_Den")),
47 _Elas_Mod(getParam<Real>(
"Elas_Mod")),
48 _Burg_vec(getParam<Real>(
"Burg_vec")),
49 _kappa(declareProperty<Real>(
"kappa_op")),
50 _gamma(declareProperty<Real>(
"gamma_asymm")),
51 _L(declareProperty<Real>(
"L")),
52 _mu(declareProperty<Real>(
"mu")),
53 _beta(declareProperty<Real>(
"beta")),
54 _Disloc_Den_i(declareProperty<Real>(
"Disloc_Den_i")),
55 _rho_eff(declareProperty<Real>(
"rho_eff")),
56 _Def_Eng(declareProperty<Real>(
"Def_Eng")),
57 _deformed_grain_num(getParam<unsigned int>(
"deformed_grain_num")),
63 paramError(
"op_num",
"Model requires op_num > 0");
65 for (
unsigned int i = 0; i <
_op_num; ++i)
66 _vals[i] = &coupledValue(
"v", i);
77 for (
unsigned int i = 0; i <
_op_num; ++i)
78 SumEtai2 += (*
_vals[i])[_qp] * (*
_vals[i])[_qp];
85 bool one_active =
false;
86 for (MooseIndex(op_to_grains) op_index = 0; op_index < op_to_grains.size(); ++op_index)
92 auto grain_id = op_to_grains[op_index];
98 rho0 += rho_i * (*
_vals[op_index])[_qp] * (*
_vals[op_index])[_qp];
101 if (!one_active && _t_step > 0)
102 mooseError(
"No active order parameters");