44 _kappa_name(getParam<MaterialPropertyName>(
"kappa_name")),
45 _dkappadgrad_etaa_name(getParam<MaterialPropertyName>(
"dkappadgrad_etaa_name")),
46 _d2kappadgrad_etaa_name(getParam<MaterialPropertyName>(
"d2kappadgrad_etaa_name")),
47 _delta(getParam<Real>(
"anisotropy_strength")),
48 _j(getParam<unsigned
int>(
"mode_number")),
49 _theta0(getParam<Real>(
"reference_angle")),
50 _kappa_bar(getParam<Real>(
"kappa_bar")),
51 _kappa(declareProperty<Real>(_kappa_name)),
52 _dkappadgrad_etaa(declareProperty<RealGradient>(_dkappadgrad_etaa_name)),
53 _d2kappadgrad_etaa(declareProperty<RealTensorValue>(_d2kappadgrad_etaa_name)),
54 _etaa(coupledValue(
"etaa")),
55 _grad_etaa(coupledGradient(
"etaa")),
56 _etab(coupledValue(
"etab")),
57 _grad_etab(coupledGradient(
"etab"))
61 mooseError(
"InterfaceOrientationMultiphaseMaterial requires a two-dimensional mesh.");
67 const Real
tol = 1e-9;
68 const Real cutoff = 1.0 -
tol;
73 const Real nx = nd(0);
74 const Real ny = nd(1);
75 const Real n2x = nd(0) * nd(0);
76 const Real n2y = nd(1) * nd(1);
77 const Real nsq = nd.norm_sq();
78 const Real n2sq = nsq * nsq;
80 n = nx / std::sqrt(nsq);
93 const Real d2angledn2 = -
MathUtils::sign(ny) * n / (1.0 - n * n) / std::sqrt(1.0 - n * n);
96 RealGradient dndgrad_etaa;
99 dndgrad_etaa(0) = ny * ny;
100 dndgrad_etaa(1) = -nx * ny;
101 dndgrad_etaa /= nsq * std::sqrt(nsq);
105 RealTensorValue dndgrad_etaa_sq;
108 dndgrad_etaa_sq(0, 0) = n2y * n2y;
109 dndgrad_etaa_sq(0, 1) = -nx * ny * n2y;
110 dndgrad_etaa_sq(1, 0) = -nx * ny * n2y;
111 dndgrad_etaa_sq(1, 1) = n2x * n2y;
112 dndgrad_etaa_sq /= n2sq * nsq;
116 RealTensorValue d2ndgrad_etaa2;
119 d2ndgrad_etaa2(0, 0) = -3.0 * nx * n2y;
120 d2ndgrad_etaa2(0, 1) = -ny * n2y + 2.0 * ny * n2x;
121 d2ndgrad_etaa2(1, 0) = -ny * n2y + 2.0 * ny * n2x;
122 d2ndgrad_etaa2(1, 1) = -nx * n2x + 2.0 * nx * n2y;
123 d2ndgrad_etaa2 /= n2sq * std::sqrt(nsq);
140 dkappadangle * d2angledn2 * dndgrad_etaa_sq +
141 dkappadangle * dangledn * d2ndgrad_etaa2;