14 : _crack_front_definition(*crack_front_definition)
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)
void mooseError(Args &&... args)
Class used in fracture integrals to define geometric characteristics of the crack front.
void calculateRThetaToCrackFront(const Point qp, const std::size_t point_index, Real &r, Real &theta) const
Calculate r and theta of a point in the crack front polar coordinates for a given crack point index.
RealVectorValue rotateFromCrackFrontCoordsToGlobal(const RealVectorValue vector, const std::size_t point_index) const
Rotate a vector from crack front cartesian coordinate to global cartesian coordinate.
virtual unsigned int crackTipEnrichementFunctionAtPoint(const Point &point, std::vector< Real > &B)
calculate the enrichment function values at point
void rotateFromCrackFrontCoordsToGlobal(const RealVectorValue &vector, RealVectorValue &rotated_vector, const unsigned int point_index)
rotate a vector from crack front coordinate to global cooridate
virtual unsigned int crackTipEnrichementFunctionDerivativeAtPoint(const Point &point, std::vector< RealVectorValue > &dB)
calculate the enrichment function derivatives at point
EnrichmentFunctionCalculation(const CrackFrontDefinition *crack_front_definition)
const CrackFrontDefinition & _crack_front_definition