20 std::vector<Real> & B)
22 unsigned int crack_front_point_index =
25 if (MooseUtils::absoluteFuzzyEqual(
_r, 0.0))
26 mooseError(
"EnrichmentFunctionCalculation: the distance between a point and the crack "
27 "tip/front is zero.");
29 Real st = std::sin(
_theta);
30 Real st2 = std::sin(
_theta / 2.0);
31 Real ct2 = std::cos(
_theta / 2.0);
32 Real sr = std::sqrt(
_r);
39 return crack_front_point_index;
44 const Point & point, std::vector<RealVectorValue> & dB)
46 unsigned int crack_front_point_index =
49 if (MooseUtils::absoluteFuzzyEqual(
_r, 0.0))
50 mooseError(
"EnrichmentFunctionCalculation: the distance between a point and the crack "
51 "tip/front is zero.");
53 Real st = std::sin(
_theta);
54 Real ct = std::cos(
_theta);
55 Real st2 = std::sin(
_theta / 2.0);
56 Real ct2 = std::cos(
_theta / 2.0);
57 Real st15 = std::sin(1.5 *
_theta);
58 Real ct15 = std::cos(1.5 *
_theta);
59 Real sr = std::sqrt(
_r);
61 dB[0](0) = -0.5 / sr * st2;
62 dB[0](1) = 0.5 / sr * ct2;
64 dB[1](0) = 0.5 / sr * ct2;
65 dB[1](1) = 0.5 / sr * st2;
67 dB[2](0) = -0.5 / sr * st15 * st;
68 dB[2](1) = 0.5 / sr * (st2 + st15 * ct);
70 dB[3](0) = -0.5 / sr * ct15 * st;
71 dB[3](1) = 0.5 / sr * (ct2 + ct15 * ct);
74 return crack_front_point_index;
79 RealVectorValue & rotated_vector,
80 const unsigned int point_index)