proteus  1.8.1
C/C++/Fortran libraries
mohrCoulomb.h
Go to the documentation of this file.
1 
2 inline void mohrCoulomb(const double& phi, const double& psi, const double& c, const double* stress, //inputs
3  double& f, double* df, double& g, double* r, double* dr) //outputs
4 {
5  const int nSymTen=6,sXX=0,sYY=1,sZZ=2,sYZ=3,sZY=3,sXZ=4,sZX=4,sXY=5,sYX=5;
6  const int SKEY=0,TARGKEY=1,J3KEY=2;
7  double s,ds[nSymTen],
8  targ,dtarg[nSymTen],ddtarg[nSymTen*nSymTen],
9  J3,dJ3[nSymTen],ddJ3[nSymTen*nSymTen],
10  df_dtmp[3],
11  dg_dtmp[3],ddg_dtmp[3*3],theta;
12  const double& stress_xx(stress[sXX]),
13  stress_yy(stress[sYY]),
14  stress_zz(stress[sZZ]),
15  stress_yz(stress[sYZ]),
16  stress_zx(stress[sZX]),
17  stress_xy(stress[sXY]);
18 
19  s = sqrt(3)*(stress_xx + stress_yy + stress_zz)/3;
20 
21  ds[sXX] = sqrt(3)/3;
22 
23  ds[sYY] = sqrt(3)/3;
24 
25  ds[sZZ] = sqrt(3)/3;
26 
27  ds[sYZ] = 0;
28 
29  ds[sZX] = 0;
30 
31  ds[sXY] = 0;
32 
33  targ = pow(stress_xx - stress_yy, 2) + pow(stress_yy - stress_zz, 2) + pow(stress_zz - stress_xx, 2) + 6*pow(stress_xy, 2) + 6*pow(stress_yz, 2) + 6*pow(stress_zx, 2);
34 
35  dtarg[sXX] = -2*stress_yy - 2*stress_zz + 4*stress_xx;
36 
37  dtarg[sYY] = -2*stress_xx - 2*stress_zz + 4*stress_yy;
38 
39  dtarg[sZZ] = -2*stress_xx - 2*stress_yy + 4*stress_zz;
40 
41  dtarg[sYZ] = 12*stress_yz;
42 
43  dtarg[sZX] = 12*stress_zx;
44 
45  dtarg[sXY] = 12*stress_xy;
46 
47  ddtarg[sXX+ nSymTen*sXX] = 4;
48 
49  ddtarg[sXX+ nSymTen*sYY] = -2;
50 
51  ddtarg[sXX+ nSymTen*sZZ] = -2;
52 
53  ddtarg[sXX+ nSymTen*sYZ] = 0;
54 
55  ddtarg[sXX+ nSymTen*sZX] = 0;
56 
57  ddtarg[sXX+ nSymTen*sXY] = 0;
58 
59  ddtarg[sYY+ nSymTen*sXX] = -2;
60 
61  ddtarg[sYY+ nSymTen*sYY] = 4;
62 
63  ddtarg[sYY+ nSymTen*sZZ] = -2;
64 
65  ddtarg[sYY+ nSymTen*sYZ] = 0;
66 
67  ddtarg[sYY+ nSymTen*sZX] = 0;
68 
69  ddtarg[sYY+ nSymTen*sXY] = 0;
70 
71  ddtarg[sZZ+ nSymTen*sXX] = -2;
72 
73  ddtarg[sZZ+ nSymTen*sYY] = -2;
74 
75  ddtarg[sZZ+ nSymTen*sZZ] = 4;
76 
77  ddtarg[sZZ+ nSymTen*sYZ] = 0;
78 
79  ddtarg[sZZ+ nSymTen*sZX] = 0;
80 
81  ddtarg[sZZ+ nSymTen*sXY] = 0;
82 
83  ddtarg[sYZ+ nSymTen*sXX] = 0;
84 
85  ddtarg[sYZ+ nSymTen*sYY] = 0;
86 
87  ddtarg[sYZ+ nSymTen*sZZ] = 0;
88 
89  ddtarg[sYZ+ nSymTen*sYZ] = 12;
90 
91  ddtarg[sYZ+ nSymTen*sZX] = 0;
92 
93  ddtarg[sYZ+ nSymTen*sXY] = 0;
94 
95  ddtarg[sZX+ nSymTen*sXX] = 0;
96 
97  ddtarg[sZX+ nSymTen*sYY] = 0;
98 
99  ddtarg[sZX+ nSymTen*sZZ] = 0;
100 
101  ddtarg[sZX+ nSymTen*sYZ] = 0;
102 
103  ddtarg[sZX+ nSymTen*sZX] = 12;
104 
105  ddtarg[sZX+ nSymTen*sXY] = 0;
106 
107  ddtarg[sXY+ nSymTen*sXX] = 0;
108 
109  ddtarg[sXY+ nSymTen*sYY] = 0;
110 
111  ddtarg[sXY+ nSymTen*sZZ] = 0;
112 
113  ddtarg[sXY+ nSymTen*sYZ] = 0;
114 
115  ddtarg[sXY+ nSymTen*sZX] = 0;
116 
117  ddtarg[sXY+ nSymTen*sXY] = 12;
118 
119  if (targ < 1.0e-8)
120  {
121  targ = 1.0e-8;
122  }
123 
124  J3 = -pow(stress_xy, 2)*(-stress_xx/3 - stress_yy/3 + 2*stress_zz/3) - pow(stress_yz, 2)*(-stress_yy/3 - stress_zz/3 + 2*stress_xx/3) - pow(stress_zx, 2)*(-stress_xx/3 - stress_zz/3 + 2*stress_yy/3) + (-stress_xx/3 - stress_zz/3 + 2*stress_yy/3)*(-stress_yy/3 - stress_zz/3 + 2*stress_xx/3)*(-stress_xx/3 - stress_yy/3 + 2*stress_zz/3) + 2*stress_xy*stress_yz*stress_zx;
125 
126  dJ3[sXX] = -(-stress_xx/3 - stress_zz/3 + 2*stress_yy/3)*(-stress_yy/3 - stress_zz/3 + 2*stress_xx/3)/3 - (-stress_yy/3 - stress_zz/3 + 2*stress_xx/3)*(-stress_xx/3 - stress_yy/3 + 2*stress_zz/3)/3 + 2*(-stress_xx/3 - stress_zz/3 + 2*stress_yy/3)*(-stress_xx/3 - stress_yy/3 + 2*stress_zz/3)/3 - 2*pow(stress_yz, 2)/3 + pow(stress_xy, 2)/3 + pow(stress_zx, 2)/3;
127 
128  dJ3[sYY] = -(-stress_xx/3 - stress_zz/3 + 2*stress_yy/3)*(-stress_yy/3 - stress_zz/3 + 2*stress_xx/3)/3 - (-stress_xx/3 - stress_zz/3 + 2*stress_yy/3)*(-stress_xx/3 - stress_yy/3 + 2*stress_zz/3)/3 + 2*(-stress_yy/3 - stress_zz/3 + 2*stress_xx/3)*(-stress_xx/3 - stress_yy/3 + 2*stress_zz/3)/3 - 2*pow(stress_zx, 2)/3 + pow(stress_xy, 2)/3 + pow(stress_yz, 2)/3;
129 
130  dJ3[sZZ] = -(-stress_xx/3 - stress_zz/3 + 2*stress_yy/3)*(-stress_xx/3 - stress_yy/3 + 2*stress_zz/3)/3 - (-stress_yy/3 - stress_zz/3 + 2*stress_xx/3)*(-stress_xx/3 - stress_yy/3 + 2*stress_zz/3)/3 + 2*(-stress_xx/3 - stress_zz/3 + 2*stress_yy/3)*(-stress_yy/3 - stress_zz/3 + 2*stress_xx/3)/3 - 2*pow(stress_xy, 2)/3 + pow(stress_yz, 2)/3 + pow(stress_zx, 2)/3;
131 
132  dJ3[sYZ] = -2*stress_yz*(-stress_yy/3 - stress_zz/3 + 2*stress_xx/3) + 2*stress_xy*stress_zx;
133 
134  dJ3[sZX] = -2*stress_zx*(-stress_xx/3 - stress_zz/3 + 2*stress_yy/3) + 2*stress_xy*stress_yz;
135 
136  dJ3[sXY] = -2*stress_xy*(-stress_xx/3 - stress_yy/3 + 2*stress_zz/3) + 2*stress_yz*stress_zx;
137 
138  ddJ3[sXX+ nSymTen*sXX] = -2*stress_yy/9 - 2*stress_zz/9 + 4*stress_xx/9;
139 
140  ddJ3[sXX+ nSymTen*sYY] = -2*stress_xx/9 - 2*stress_yy/9 + 4*stress_zz/9;
141 
142  ddJ3[sXX+ nSymTen*sZZ] = -2*stress_xx/9 - 2*stress_zz/9 + 4*stress_yy/9;
143 
144  ddJ3[sXX+ nSymTen*sYZ] = -4*stress_yz/3;
145 
146  ddJ3[sXX+ nSymTen*sZX] = 2*stress_zx/3;
147 
148  ddJ3[sXX+ nSymTen*sXY] = 2*stress_xy/3;
149 
150  ddJ3[sYY+ nSymTen*sXX] = -2*stress_xx/9 - 2*stress_yy/9 + 4*stress_zz/9;
151 
152  ddJ3[sYY+ nSymTen*sYY] = -2*stress_xx/9 - 2*stress_zz/9 + 4*stress_yy/9;
153 
154  ddJ3[sYY+ nSymTen*sZZ] = -2*stress_yy/9 - 2*stress_zz/9 + 4*stress_xx/9;
155 
156  ddJ3[sYY+ nSymTen*sYZ] = 2*stress_yz/3;
157 
158  ddJ3[sYY+ nSymTen*sZX] = -4*stress_zx/3;
159 
160  ddJ3[sYY+ nSymTen*sXY] = 2*stress_xy/3;
161 
162  ddJ3[sZZ+ nSymTen*sXX] = -2*stress_xx/9 - 2*stress_zz/9 + 4*stress_yy/9;
163 
164  ddJ3[sZZ+ nSymTen*sYY] = -2*stress_yy/9 - 2*stress_zz/9 + 4*stress_xx/9;
165 
166  ddJ3[sZZ+ nSymTen*sZZ] = -2*stress_xx/9 - 2*stress_yy/9 + 4*stress_zz/9;
167 
168  ddJ3[sZZ+ nSymTen*sYZ] = 2*stress_yz/3;
169 
170  ddJ3[sZZ+ nSymTen*sZX] = 2*stress_zx/3;
171 
172  ddJ3[sZZ+ nSymTen*sXY] = -4*stress_xy/3;
173 
174  ddJ3[sYZ+ nSymTen*sXX] = -4*stress_yz/3;
175 
176  ddJ3[sYZ+ nSymTen*sYY] = 2*stress_yz/3;
177 
178  ddJ3[sYZ+ nSymTen*sZZ] = 2*stress_yz/3;
179 
180  ddJ3[sYZ+ nSymTen*sYZ] = -4*stress_xx/3 + 2*stress_yy/3 + 2*stress_zz/3;
181 
182  ddJ3[sYZ+ nSymTen*sZX] = 2*stress_xy;
183 
184  ddJ3[sYZ+ nSymTen*sXY] = 2*stress_zx;
185 
186  ddJ3[sZX+ nSymTen*sXX] = 2*stress_zx/3;
187 
188  ddJ3[sZX+ nSymTen*sYY] = -4*stress_zx/3;
189 
190  ddJ3[sZX+ nSymTen*sZZ] = 2*stress_zx/3;
191 
192  ddJ3[sZX+ nSymTen*sYZ] = 2*stress_xy;
193 
194  ddJ3[sZX+ nSymTen*sZX] = -4*stress_yy/3 + 2*stress_xx/3 + 2*stress_zz/3;
195 
196  ddJ3[sZX+ nSymTen*sXY] = 2*stress_yz;
197 
198  ddJ3[sXY+ nSymTen*sXX] = 2*stress_xy/3;
199 
200  ddJ3[sXY+ nSymTen*sYY] = 2*stress_xy/3;
201 
202  ddJ3[sXY+ nSymTen*sZZ] = -4*stress_xy/3;
203 
204  ddJ3[sXY+ nSymTen*sYZ] = 2*stress_zx;
205 
206  ddJ3[sXY+ nSymTen*sZX] = 2*stress_yz;
207 
208  ddJ3[sXY+ nSymTen*sXY] = -4*stress_zz/3 + 2*stress_xx/3 + 2*stress_yy/3;
209 
210  double tmpval = 27*J3*sqrt(2)/pow(targ, 3.0/2.0);
211  //make sure we're exactly in the domain of asin
212  if (tmpval > 1.0)
213  tmpval = 1.0;
214  if (tmpval < -1.0)
215  tmpval = -1.0;
216 
217  theta = -asin(tmpval)/3;
218 
219  f = -c*cos(phi) + sqrt(2)*sqrt(targ)*(sqrt(3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 + sin(phi)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)/2 + s*sqrt(3)*sin(phi)/3;
220 
221  df_dtmp[SKEY] = sqrt(3)*sin(phi)/3;
222 
223  df_dtmp[TARGKEY] = sqrt(2)*sqrt(targ)*(9*J3*sqrt(6)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 5.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 9*J3*sqrt(2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(phi)/(2*pow(targ, 5.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/2 + sqrt(2)*(sqrt(3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 + sin(phi)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)/(4*sqrt(targ));
224 
225  df_dtmp[J3KEY] = sqrt(2)*sqrt(targ)*(-3*sqrt(6)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 3.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 3*sqrt(2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(phi)/(pow(targ, 3.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/2;
226 
227  df[sXX] = df_dtmp[SKEY]*ds[sXX] + df_dtmp[TARGKEY]*dtarg[sXX] + df_dtmp[J3KEY]*dJ3[sXX];
228 
229  df[sYY] = df_dtmp[SKEY]*ds[sYY] + df_dtmp[TARGKEY]*dtarg[sYY] + df_dtmp[J3KEY]*dJ3[sYY];
230 
231  df[sZZ] = df_dtmp[SKEY]*ds[sZZ] + df_dtmp[TARGKEY]*dtarg[sZZ] + df_dtmp[J3KEY]*dJ3[sZZ];
232 
233  df[sYZ] = df_dtmp[SKEY]*ds[sYZ] + df_dtmp[TARGKEY]*dtarg[sYZ] + df_dtmp[J3KEY]*dJ3[sYZ];
234 
235  df[sZX] = df_dtmp[SKEY]*ds[sZX] + df_dtmp[TARGKEY]*dtarg[sZX] + df_dtmp[J3KEY]*dJ3[sZX];
236 
237  df[sXY] = df_dtmp[SKEY]*ds[sXY] + df_dtmp[TARGKEY]*dtarg[sXY] + df_dtmp[J3KEY]*dJ3[sXY];
238 
239  g = -c*cos(psi) + sqrt(2)*sqrt(targ)*(sqrt(3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 + sin(psi)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)/2 + s*sqrt(3)*sin(psi)/3;
240 
241  dg_dtmp[SKEY] = sqrt(3)*sin(psi)/3;
242 
243  dg_dtmp[TARGKEY] = sqrt(2)*sqrt(targ)*(9*J3*sqrt(6)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 5.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 9*J3*sqrt(2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(2*pow(targ, 5.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/2 + sqrt(2)*(sqrt(3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 + sin(psi)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)/(4*sqrt(targ));
244 
245  dg_dtmp[J3KEY] = sqrt(2)*sqrt(targ)*(-3*sqrt(6)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 3.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 3*sqrt(2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(pow(targ, 3.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/2;
246 
247  r[sXX] = dg_dtmp[SKEY]*ds[sXX] + dg_dtmp[TARGKEY]*dtarg[sXX] + dg_dtmp[J3KEY]*dJ3[sXX];
248 
249  r[sYY] = dg_dtmp[SKEY]*ds[sYY] + dg_dtmp[TARGKEY]*dtarg[sYY] + dg_dtmp[J3KEY]*dJ3[sYY];
250 
251  r[sZZ] = dg_dtmp[SKEY]*ds[sZZ] + dg_dtmp[TARGKEY]*dtarg[sZZ] + dg_dtmp[J3KEY]*dJ3[sZZ];
252 
253  r[sYZ] = dg_dtmp[SKEY]*ds[sYZ] + dg_dtmp[TARGKEY]*dtarg[sYZ] + dg_dtmp[J3KEY]*dJ3[sYZ];
254 
255  r[sZX] = dg_dtmp[SKEY]*ds[sZX] + dg_dtmp[TARGKEY]*dtarg[sZX] + dg_dtmp[J3KEY]*dJ3[sZX];
256 
257  r[sXY] = dg_dtmp[SKEY]*ds[sXY] + dg_dtmp[TARGKEY]*dtarg[sXY] + dg_dtmp[J3KEY]*dJ3[sXY];
258 
259  ddg_dtmp[SKEY+3*SKEY] = 0;
260 
261  ddg_dtmp[SKEY+3*TARGKEY] = 0;
262 
263  ddg_dtmp[SKEY+3*J3KEY] = 0;
264 
265  ddg_dtmp[TARGKEY+3*SKEY] = 0;
266 
267  ddg_dtmp[TARGKEY+3*TARGKEY] = sqrt(2)*sqrt(targ)*(-19683*sqrt(6)*pow(J3, 3)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 13.0/2.0)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 243*sqrt(3)*pow(J3, 2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 5)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 243*pow(J3, 2)*sin(psi)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 5)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 45*J3*sqrt(6)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(4*pow(targ, 7.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 45*J3*sqrt(2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(4*pow(targ, 7.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 19683*sqrt(2)*pow(J3, 3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(2*pow(targ, 13.0/2.0)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)))/2 + sqrt(2)*(9*J3*sqrt(6)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 5.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 9*J3*sqrt(2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(2*pow(targ, 5.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/(2*sqrt(targ)) - sqrt(2)*(sqrt(3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 + sin(psi)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)/(8*pow(targ, 3.0/2.0));
268 
269  ddg_dtmp[TARGKEY+3*J3KEY] = sqrt(2)*sqrt(targ)*(9*sqrt(6)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 5.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 81*J3*sqrt(3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 4)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 81*J3*sin(psi)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 4)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6561*sqrt(6)*pow(J3, 2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 11.0/2.0)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 9*sqrt(2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(2*pow(targ, 5.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 6561*sqrt(2)*pow(J3, 2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(pow(targ, 11.0/2.0)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)))/2 + sqrt(2)*(-3*sqrt(6)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 3.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 3*sqrt(2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(pow(targ, 3.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/(4*sqrt(targ));
270 
271  ddg_dtmp[J3KEY+3*SKEY] = 0;
272 
273  ddg_dtmp[J3KEY+3*TARGKEY] = sqrt(2)*sqrt(targ)*(9*sqrt(6)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 5.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 81*J3*sqrt(3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 4)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 81*J3*sin(psi)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 4)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6561*sqrt(6)*pow(J3, 2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 11.0/2.0)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 9*sqrt(2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(2*pow(targ, 5.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 6561*sqrt(2)*pow(J3, 2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(pow(targ, 11.0/2.0)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)))/2 + sqrt(2)*(-3*sqrt(6)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 3.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 3*sqrt(2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(pow(targ, 3.0/2.0)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/(4*sqrt(targ));
274 
275  ddg_dtmp[J3KEY+3*J3KEY] = sqrt(2)*sqrt(targ)*(-54*sqrt(3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 3)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 54*sin(psi)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 3)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 4374*J3*sqrt(6)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 9.0/2.0)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 4374*J3*sqrt(2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)*sin(psi)/(pow(targ, 9.0/2.0)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)))/2;
276 
277  dr[sXX+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sXX]\
278  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sXX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sXX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sXX]\
279  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sXX]\
280  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sXX];
281 
282  dr[sXX+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sYY]\
283  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sXX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sXX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sXX]\
284  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sXX]\
285  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sXX];
286 
287  dr[sXX+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sZZ]\
288  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sXX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sXX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sXX]\
289  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sXX]\
290  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sXX];
291 
292  dr[sXX+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sYZ]\
293  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sXX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sXX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sXX]\
294  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sXX]\
295  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sXX];
296 
297  dr[sXX+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sZX]\
298  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sXX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sXX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sXX]\
299  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sXX]\
300  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sXX];
301 
302  dr[sXX+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sXY]\
303  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sXX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sXX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sXX]\
304  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sXX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sXX]\
305  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sXX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sXX];
306 
307  dr[sYY+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sXX]\
308  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sYY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sYY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sYY]\
309  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sYY]\
310  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sYY];
311 
312  dr[sYY+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sYY]\
313  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sYY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sYY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sYY]\
314  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sYY]\
315  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sYY];
316 
317  dr[sYY+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sZZ]\
318  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sYY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sYY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sYY]\
319  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sYY]\
320  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sYY];
321 
322  dr[sYY+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sYZ]\
323  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sYY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sYY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sYY]\
324  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sYY]\
325  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sYY];
326 
327  dr[sYY+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sZX]\
328  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sYY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sYY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sYY]\
329  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sYY]\
330  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sYY];
331 
332  dr[sYY+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sXY]\
333  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sYY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sYY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sYY]\
334  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sYY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sYY]\
335  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sYY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sYY];
336 
337  dr[sZZ+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sXX]\
338  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sZZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sZZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sZZ]\
339  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sZZ]\
340  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sZZ];
341 
342  dr[sZZ+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sYY]\
343  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sZZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sZZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sZZ]\
344  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sZZ]\
345  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sZZ];
346 
347  dr[sZZ+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sZZ]\
348  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sZZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sZZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sZZ]\
349  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sZZ]\
350  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sZZ];
351 
352  dr[sZZ+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sYZ]\
353  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sZZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sZZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sZZ]\
354  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sZZ]\
355  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sZZ];
356 
357  dr[sZZ+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sZX]\
358  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sZZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sZZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sZZ]\
359  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sZZ]\
360  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sZZ];
361 
362  dr[sZZ+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sXY]\
363  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sZZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sZZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sZZ]\
364  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sZZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sZZ]\
365  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sZZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sZZ];
366 
367  dr[sYZ+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sXX]\
368  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sYZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sYZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sYZ]\
369  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sYZ]\
370  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sYZ];
371 
372  dr[sYZ+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sYY]\
373  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sYZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sYZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sYZ]\
374  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sYZ]\
375  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sYZ];
376 
377  dr[sYZ+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sZZ]\
378  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sYZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sYZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sYZ]\
379  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sYZ]\
380  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sYZ];
381 
382  dr[sYZ+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sYZ]\
383  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sYZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sYZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sYZ]\
384  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sYZ]\
385  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sYZ];
386 
387  dr[sYZ+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sZX]\
388  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sYZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sYZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sYZ]\
389  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sYZ]\
390  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sYZ];
391 
392  dr[sYZ+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sXY]\
393  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sYZ] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sYZ] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sYZ]\
394  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sYZ] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sYZ]\
395  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sYZ] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sYZ];
396 
397  dr[sZX+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sXX]\
398  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sZX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sZX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sZX]\
399  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sZX]\
400  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sZX];
401 
402  dr[sZX+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sYY]\
403  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sZX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sZX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sZX]\
404  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sZX]\
405  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sZX];
406 
407  dr[sZX+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sZZ]\
408  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sZX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sZX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sZX]\
409  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sZX]\
410  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sZX];
411 
412  dr[sZX+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sYZ]\
413  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sZX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sZX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sZX]\
414  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sZX]\
415  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sZX];
416 
417  dr[sZX+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sZX]\
418  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sZX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sZX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sZX]\
419  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sZX]\
420  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sZX];
421 
422  dr[sZX+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sXY]\
423  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sZX] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sZX] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sZX]\
424  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sZX] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sZX]\
425  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sZX] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sZX];
426 
427  dr[sXY+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sXX]\
428  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sXY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sXY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sXY]\
429  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sXY]\
430  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sXY];
431 
432  dr[sXY+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sYY]\
433  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sXY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sXY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sXY]\
434  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sXY]\
435  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sXY];
436 
437  dr[sXY+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sZZ]\
438  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sXY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sXY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sXY]\
439  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sXY]\
440  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sXY];
441 
442  dr[sXY+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sYZ]\
443  + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sXY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sXY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sXY]\
444  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sXY]\
445  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sXY];
446 
447  dr[sXY+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sZX]\
448  + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sXY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sXY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sXY]\
449  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sXY]\
450  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sXY];
451 
452  dr[sXY+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sXY]\
453  + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sXY] + ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sXY] + ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sXY]\
454  + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sXY] + ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sXY]\
455  + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sXY] + ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sXY];
456 
457  if (fabs(sin(theta)) >= 0.5-1.0e-8){
458  const double sin_theta = copysign(0.5-1.0e-8,sin(theta));
459  const double cos_theta = copysign(cos(asin(0.5-1.0e-8)),cos(theta));
460  df_dtmp[SKEY] = sqrt(3)*sin(phi)/3;
461 
462  df_dtmp[TARGKEY] = sqrt(2)*(-sin_theta*sin(phi)/3 + cos_theta*sqrt(3)/3)/(4*sqrt(targ));
463 
464  df_dtmp[J3KEY] = 0;
465 
466  df[sXX] = df_dtmp[SKEY]*ds[sXX] + df_dtmp[TARGKEY]*dtarg[sXX] + df_dtmp[J3KEY]*dJ3[sXX];
467 
468  df[sYY] = df_dtmp[SKEY]*ds[sYY] + df_dtmp[TARGKEY]*dtarg[sYY] + df_dtmp[J3KEY]*dJ3[sYY];
469 
470  df[sZZ] = df_dtmp[SKEY]*ds[sZZ] + df_dtmp[TARGKEY]*dtarg[sZZ] + df_dtmp[J3KEY]*dJ3[sZZ];
471 
472  df[sYZ] = df_dtmp[SKEY]*ds[sYZ] + df_dtmp[TARGKEY]*dtarg[sYZ] + df_dtmp[J3KEY]*dJ3[sYZ];
473 
474  df[sZX] = df_dtmp[SKEY]*ds[sZX] + df_dtmp[TARGKEY]*dtarg[sZX] + df_dtmp[J3KEY]*dJ3[sZX];
475 
476  df[sXY] = df_dtmp[SKEY]*ds[sXY] + df_dtmp[TARGKEY]*dtarg[sXY] + df_dtmp[J3KEY]*dJ3[sXY];
477 
478  dg_dtmp[SKEY] = sqrt(3)*sin(psi)/3;
479 
480  dg_dtmp[TARGKEY] = sqrt(2)*(-sin_theta*sin(psi)/3 + cos_theta*sqrt(3)/3)/(4*sqrt(targ));
481 
482  dg_dtmp[J3KEY] = 0;
483 
484  r[sXX] = dg_dtmp[SKEY]*ds[sXX] + dg_dtmp[TARGKEY]*dtarg[sXX] + dg_dtmp[J3KEY]*dJ3[sXX];
485 
486  r[sYY] = dg_dtmp[SKEY]*ds[sYY] + dg_dtmp[TARGKEY]*dtarg[sYY] + dg_dtmp[J3KEY]*dJ3[sYY];
487 
488  r[sZZ] = dg_dtmp[SKEY]*ds[sZZ] + dg_dtmp[TARGKEY]*dtarg[sZZ] + dg_dtmp[J3KEY]*dJ3[sZZ];
489 
490  r[sYZ] = dg_dtmp[SKEY]*ds[sYZ] + dg_dtmp[TARGKEY]*dtarg[sYZ] + dg_dtmp[J3KEY]*dJ3[sYZ];
491 
492  r[sZX] = dg_dtmp[SKEY]*ds[sZX] + dg_dtmp[TARGKEY]*dtarg[sZX] + dg_dtmp[J3KEY]*dJ3[sZX];
493 
494  r[sXY] = dg_dtmp[SKEY]*ds[sXY] + dg_dtmp[TARGKEY]*dtarg[sXY] + dg_dtmp[J3KEY]*dJ3[sXY];
495 
496  ddg_dtmp[SKEY+3*SKEY] = 0;
497 
498  ddg_dtmp[SKEY+3*TARGKEY] = 0;
499 
500  ddg_dtmp[SKEY+3*J3KEY] = 0;
501 
502  ddg_dtmp[TARGKEY+3*SKEY] = 0;
503 
504  ddg_dtmp[TARGKEY+3*TARGKEY] = -sqrt(2)*(-sin_theta*sin(psi)/3 + cos_theta*sqrt(3)/3)/(8*pow(targ, 3.0/2.0));
505 
506  ddg_dtmp[TARGKEY+3*J3KEY] = 0;
507 
508  ddg_dtmp[J3KEY+3*SKEY] = 0;
509 
510  ddg_dtmp[J3KEY+3*TARGKEY] = 0;
511 
512  ddg_dtmp[J3KEY+3*J3KEY] = 0;
513 
514  dr[sXX+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sXX]\
515 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sXX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sXX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sXX]\
516 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sXX]\
517 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sXX];
518 
519  dr[sXX+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sYY]\
520 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sXX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sXX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sXX]\
521 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sXX]\
522 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sXX];
523 
524  dr[sXX+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sZZ]\
525 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sXX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sXX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sXX]\
526 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sXX]\
527 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sXX];
528 
529  dr[sXX+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sYZ]\
530 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sXX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sXX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sXX]\
531 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sXX]\
532 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sXX];
533 
534  dr[sXX+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sZX]\
535 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sXX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sXX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sXX]\
536 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sXX]\
537 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sXX];
538 
539  dr[sXX+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sXY]\
540 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sXX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sXX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sXX]\
541 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sXX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sXX]\
542 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sXX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sXX];
543 
544  dr[sYY+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sXX]\
545 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sYY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sYY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sYY]\
546 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sYY]\
547 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sYY];
548 
549  dr[sYY+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sYY]\
550 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sYY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sYY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sYY]\
551 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sYY]\
552 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sYY];
553 
554  dr[sYY+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sZZ]\
555 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sYY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sYY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sYY]\
556 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sYY]\
557 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sYY];
558 
559  dr[sYY+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sYZ]\
560 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sYY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sYY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sYY]\
561 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sYY]\
562 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sYY];
563 
564  dr[sYY+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sZX]\
565 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sYY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sYY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sYY]\
566 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sYY]\
567 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sYY];
568 
569  dr[sYY+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sXY]\
570 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sYY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sYY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sYY]\
571 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sYY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sYY]\
572 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sYY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sYY];
573 
574  dr[sZZ+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sXX]\
575 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sZZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sZZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sZZ]\
576 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sZZ]\
577 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sZZ];
578 
579  dr[sZZ+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sYY]\
580 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sZZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sZZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sZZ]\
581 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sZZ]\
582 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sZZ];
583 
584  dr[sZZ+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sZZ]\
585 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sZZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sZZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sZZ]\
586 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sZZ]\
587 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sZZ];
588 
589  dr[sZZ+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sYZ]\
590 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sZZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sZZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sZZ]\
591 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sZZ]\
592 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sZZ];
593 
594  dr[sZZ+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sZX]\
595 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sZZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sZZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sZZ]\
596 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sZZ]\
597 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sZZ];
598 
599  dr[sZZ+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sXY]\
600 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sZZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sZZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sZZ]\
601 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sZZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sZZ]\
602 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sZZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sZZ];
603 
604  dr[sYZ+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sXX]\
605 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sYZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sYZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sYZ]\
606 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sYZ]\
607 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sYZ];
608 
609  dr[sYZ+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sYY]\
610 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sYZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sYZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sYZ]\
611 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sYZ]\
612 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sYZ];
613 
614  dr[sYZ+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sZZ]\
615 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sYZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sYZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sYZ]\
616 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sYZ]\
617 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sYZ];
618 
619  dr[sYZ+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sYZ]\
620 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sYZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sYZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sYZ]\
621 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sYZ]\
622 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sYZ];
623 
624  dr[sYZ+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sZX]\
625 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sYZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sYZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sYZ]\
626 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sYZ]\
627 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sYZ];
628 
629  dr[sYZ+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sXY]\
630 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sYZ]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sYZ]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sYZ]\
631 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sYZ]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sYZ]\
632 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sYZ]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sYZ];
633 
634  dr[sZX+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sXX]\
635 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sZX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sZX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sZX]\
636 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sZX]\
637 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sZX];
638 
639  dr[sZX+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sYY]\
640 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sZX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sZX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sZX]\
641 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sZX]\
642 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sZX];
643 
644  dr[sZX+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sZZ]\
645 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sZX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sZX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sZX]\
646 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sZX]\
647 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sZX];
648 
649  dr[sZX+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sYZ]\
650 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sZX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sZX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sZX]\
651 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sZX]\
652 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sZX];
653 
654  dr[sZX+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sZX]\
655 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sZX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sZX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sZX]\
656 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sZX]\
657 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sZX];
658 
659  dr[sZX+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sXY]\
660 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sZX]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sZX]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sZX]\
661 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sZX]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sZX]\
662 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sZX]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sZX];
663 
664  dr[sXY+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sXX]\
665 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXX]*ds[sXY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXX]*ds[sXY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXX]*ds[sXY]\
666 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXX]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXX]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXX]*dtarg[sXY]\
667 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXX]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXX]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXX]*dJ3[sXY];
668 
669  dr[sXY+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sYY]\
670 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYY]*ds[sXY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYY]*ds[sXY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYY]*ds[sXY]\
671 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYY]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYY]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYY]*dtarg[sXY]\
672 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYY]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYY]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYY]*dJ3[sXY];
673 
674  dr[sXY+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sZZ]\
675 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZZ]*ds[sXY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZZ]*ds[sXY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZZ]*ds[sXY]\
676 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZZ]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZZ]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZZ]*dtarg[sXY]\
677 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZZ]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZZ]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZZ]*dJ3[sXY];
678 
679  dr[sXY+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sYZ]\
680 + ddg_dtmp[SKEY + 3*SKEY]*ds[sYZ]*ds[sXY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sYZ]*ds[sXY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sYZ]*ds[sXY]\
681 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sYZ]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sYZ]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sYZ]*dtarg[sXY]\
682 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sYZ]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sYZ]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sYZ]*dJ3[sXY];
683 
684  dr[sXY+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sZX]\
685 + ddg_dtmp[SKEY + 3*SKEY]*ds[sZX]*ds[sXY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sZX]*ds[sXY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sZX]*ds[sXY]\
686 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sZX]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sZX]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sZX]*dtarg[sXY]\
687 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sZX]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sZX]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sZX]*dJ3[sXY];
688 
689  dr[sXY+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sXY]\
690 + ddg_dtmp[SKEY + 3*SKEY]*ds[sXY]*ds[sXY]+ ddg_dtmp[SKEY + 3*TARGKEY]*dtarg[sXY]*ds[sXY]+ ddg_dtmp[SKEY + 3*J3KEY]*dJ3[sXY]*ds[sXY]\
691 + ddg_dtmp[TARGKEY + 3*SKEY]*ds[sXY]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*TARGKEY]*dtarg[sXY]*dtarg[sXY]+ ddg_dtmp[TARGKEY + 3*J3KEY]*dJ3[sXY]*dtarg[sXY]\
692 + ddg_dtmp[J3KEY + 3*SKEY]*ds[sXY]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*TARGKEY]*dtarg[sXY]*dJ3[sXY]+ ddg_dtmp[J3KEY + 3*J3KEY]*dJ3[sXY]*dJ3[sXY];
693 
694 }
695 }
f
Double f
Definition: Headers.h:64
s
Double s
Definition: Headers.h:84
df
double df(double C, double b, double a, int q, int r)
Definition: analyticalSolutions.c:2209
phi
Double phi
Definition: Headers.h:76
c
Double c
Definition: Headers.h:54
mohrCoulomb
void mohrCoulomb(const double &phi, const double &psi, const double &c, const double *stress, double &f, double *df, double &g, double *r, double *dr)
Definition: mohrCoulomb.h:2
r
Double r
Definition: Headers.h:83
psi
Double psi
Definition: Headers.h:78