44 const Real intermediate_length_1 =
46 Utility::pow<2>(delta_disp_local(2)));
47 const Real cos_alpha = (
_original_length[0] + delta_disp_local(0)) / intermediate_length_1;
48 const Real sin_alpha = std::sqrt(1.0 - Utility::pow<2>(cos_alpha));
50 const Real intermediate_length_2 =
51 std::sqrt(Utility::pow<2>(intermediate_length_1) + Utility::pow<2>(delta_disp_local(1)));
52 const Real sin_beta = delta_disp_local(1) / intermediate_length_2;
53 const Real cos_beta = std::sqrt(1.0 - Utility::pow<2>(sin_beta));
55 const RealVectorValue rotation_d_1(cos_alpha * cos_beta, sin_beta, sin_alpha * cos_beta);
56 const RealVectorValue rotation_d_2(-cos_alpha * sin_beta, cos_beta, -sin_alpha * sin_beta);
57 const RealVectorValue rotation_d_3(-sin_alpha, 0.0, cos_alpha);
59 const auto rotation_d =
60 RankTwoTensor ::initializeFromRows(rotation_d_1, rotation_d_2, rotation_d_3);
65 const Real gamma_increment =
66 0.5 * (rotation_d_1(0) * avg_rot_local(0) + rotation_d_1(1) * avg_rot_local(1) +
67 rotation_d_1(2) * avg_rot_local(2));
70 rotation_a(0, 0) = 1.0;
71 rotation_a(1, 1) = std::cos(gamma_increment);
72 rotation_a(1, 2) = std::sin(gamma_increment);
73 rotation_a(2, 1) = -rotation_a(1, 2);
74 rotation_a(2, 2) = rotation_a(1, 1);