72 R(0, 0) = cp1 * cp2 - sp1 * sp2 * cp;
73 R(0, 1) = sp1 * cp2 + cp1 * sp2 * cp;
75 R(1, 0) = -cp1 * sp2 - sp1 * cp2 * cp;
76 R(1, 1) = -sp1 * sp2 + cp1 * cp2 * cp;
84 Dt(0, 0) = Dt(1, 1) = Dt(2, 2) =
_c11;
85 Dt(0, 1) = Dt(0, 2) = Dt(1, 0) = Dt(2, 0) = Dt(1, 2) = Dt(2, 1) =
_c12;
86 Dt(3, 3) = Dt(4, 4) = Dt(5, 5) = 2 *
_c44;
89 DenseMatrix<Real> Q, Qt;
90 for (
unsigned int i = 0; i < 3; i++)
91 for (
unsigned int j = 0; j < 3; j++)
92 for (
unsigned int k = 0; k < 3; k++)
93 for (
unsigned int l = 0; l < 3; l++)
94 Q(((i * 3) + k), ((j * 3) + l)) = R(i, j) * R(k, l);
96 for (
unsigned int p = 0; p < 9; p++)
97 for (
unsigned int q = 0; q < 9; q++)
103 DenseMatrix<Real> trans_d6_to_d9, transpose_trans_d6_to_d9;
104 DenseMatrix<Real> trans_d9_to_d6, transpose_trans_d9_to_d6;
105 Real sqrt2 = std::sqrt(2.0);
108 trans_d6_to_d9(0, 0) = trans_d6_to_d9(4, 1) = trans_d6_to_d9(8, 2) = 1.0;
109 trans_d6_to_d9(1, 3) = trans_d6_to_d9(3, 3) = a;
110 trans_d6_to_d9(2, 4) = trans_d6_to_d9(6, 4) = a;
111 trans_d6_to_d9(5, 5) = trans_d6_to_d9(7, 5) = a;
113 for (
unsigned int i = 0; i < 9; i++)
114 for (
unsigned int j = 0; j < 6; j++)
115 transpose_trans_d6_to_d9(j, i) = trans_d6_to_d9(i, j);
117 trans_d9_to_d6(0, 0) = trans_d9_to_d6(1, 4) = trans_d9_to_d6(2, 8) = 1.0;
118 trans_d9_to_d6(3, 3) = trans_d9_to_d6(4, 6) = trans_d9_to_d6(5, 7) = sqrt2;
120 for (
unsigned int i = 0; i < 6; i++)
121 for (
unsigned int j = 0; j < 9; j++)
122 transpose_trans_d9_to_d6(j, i) = trans_d9_to_d6(i, j);
127 DenseMatrix<Real> outputMatrix(9, 6);
129 outputMatrix = trans_d6_to_d9;
130 outputMatrix.right_multiply(Dt);
132 DenseMatrix<Real> Dmat;
134 Dmat.right_multiply(transpose_trans_d6_to_d9);
139 DenseMatrix<Real> outputMatrix99(9, 9);
142 outputMatrix99.right_multiply(Dmat);
144 DenseMatrix<Real> QDmat;
145 QDmat = outputMatrix99;
146 QDmat.right_multiply(Q);
150 unsigned int count = 0;
152 for (
unsigned int j = 0; j < 9; j++)
153 for (
unsigned int i = 0; i < 9; i++)
155 _values[count] = QDmat(i, j);