Real hoopStress(const SymmTensor & symm_stress, const Point & point1, const Point & point2, const Point & curr_point, RealVectorValue & direction) { // Calculate the cross of the normal to the axis of rotation from the current // location and the axis of rotation Point xp; normalPositionVector(point1, point2, curr_point, xp); Point axis_rotation = point2 - point1; Point yp = axis_rotation / axis_rotation.norm(); Point zp = xp.cross(yp); // Calculate the scalar value of the hoop stress Real hoop_stress = 0.0; for (unsigned int i = 0; i < 3; ++i) { for (unsigned int j = 0; j < 3; ++j) hoop_stress += zp(j) * symm_stress(j, i) * zp(i); } direction = zp; return hoop_stress; }
Real radialStress(const SymmTensor & symm_stress, const Point & point1, const Point & point2, const Point & curr_point, RealVectorValue & direction) { Point radial_norm; normalPositionVector(point1, point2, curr_point, radial_norm); // Compute the scalar stress component in the direciton of the normal vector from the // user-defined axis of rotation. Real radial_stress = 0.0; for (unsigned int i = 0; i < 3; ++i) { for (unsigned int j = 0; j < 3; ++j) radial_stress += radial_norm(j) * symm_stress(j, i) * radial_norm(i); } direction = radial_norm; return radial_stress; }