28 int const i,
int const j,
29 Eigen::Matrix<double, 3, 1>
const& principal_strain)
35 double num_zero = 1.e-14;
37 if (std::fabs(principal_strain[i] - principal_strain[j]) < num_zero)
39 return 2 * (1 -
heaviside(principal_strain[i]));
44 (principal_strain[i] - principal_strain[j]);
71 result(0, 0) = A(0) * B(0);
72 result(0, 1) = result(1, 0) = A(3) * B(3) / 2.;
73 result(0, 2) = result(2, 0) = A(5) * B(5) / 2.;
74 result(0, 3) = result(3, 0) = (A(0) * B(3) + A(3) * B(0)) / 2;
75 result(0, 4) = result(4, 0) =
76 (A(3) * B(5) + A(5) * B(3)) / (2. * std::sqrt(2.));
77 result(0, 5) = result(5, 0) = (A(0) * B(5) + A(5) * B(0)) / 2;
79 result(1, 1) = A(1) * B(1);
80 result(1, 2) = result(2, 1) = A(4) * B(4) / 2.;
81 result(1, 3) = result(3, 1) = (A(1) * B(3) + A(3) * B(1)) / 2.;
82 result(1, 4) = result(4, 1) = (A(1) * B(4) + A(4) * B(1)) / 2.;
83 result(1, 5) = result(5, 1) =
84 (A(3) * B(4) + A(4) * B(3)) / (2. * std::sqrt(2.));
86 result(2, 2) = A(2) * B(2);
87 result(2, 3) = result(3, 2) =
88 (A(4) * B(5) + A(5) * B(4)) / (2. * std::sqrt(2.));
89 result(2, 4) = result(4, 2) = (A(2) * B(4) + A(4) * B(2)) / 2.;
90 result(2, 5) = result(5, 2) = (A(2) * B(5) + A(5) * B(2)) / 2.;
92 result(3, 3) = (A(0) * B(1) + A(1) * B(0) + A(3) * B(3)) / 2.;
93 result(3, 4) = result(4, 3) =
94 (A(3) * B(4) + A(4) * B(3)) / 4. +
95 (A(1) * B(5) + A(5) * B(1)) / (2. * std::sqrt(2.));
96 result(3, 5) = result(5, 3) =
97 (A(3) * B(5) + A(5) * B(3)) / 4. +
98 (A(0) * B(4) + A(4) * B(0)) / (2. * std::sqrt(2.));
100 result(4, 4) = (A(1) * B(2) + A(2) * B(1) + A(4) * B(4)) / 2.;
101 result(4, 5) = result(5, 4) =
102 (A(4) * B(5) + A(5) * B(4)) / 4. +
103 (A(2) * B(3) + A(3) * B(2)) / (2. * std::sqrt(2.));
105 result(5, 5) = (A(0) * B(2) + A(2) * B(0) + A(5) * B(5)) / 2.;
116 result(0, 0) = A(0) * B(0);
117 result(0, 1) = result(1, 0) = A(3) * B(3) / 2.;
118 result(0, 2) = result(2, 0) = 0;
119 result(0, 3) = result(3, 0) = (A(0) * B(3) + A(3) * B(0)) / 2;
121 result(1, 1) = A(1) * B(1);
122 result(1, 2) = result(2, 1) = 0;
123 result(1, 3) = result(3, 1) = (A(1) * B(3) + A(3) * B(1)) / 2.;
125 result(2, 2) = A(2) * B(2);
126 result(2, 3) = result(3, 2) = 0;
128 result(3, 3) = (A(0) * B(1) + A(1) * B(0) + A(3) * B(3)) / 2.;