proteus  1.8.1
C/C++/Fortran libraries
tresca.h
Go to the documentation of this file.
1 
2 inline void tresca(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 = 1.0e-8 + 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  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;
120 
121  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;
122 
123  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;
124 
125  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;
126 
127  dJ3[sYZ] = -2*stress_yz*(-stress_yy/3 - stress_zz/3 + 2*stress_xx/3) + 2*stress_xy*stress_zx;
128 
129  dJ3[sZX] = -2*stress_zx*(-stress_xx/3 - stress_zz/3 + 2*stress_yy/3) + 2*stress_xy*stress_yz;
130 
131  dJ3[sXY] = -2*stress_xy*(-stress_xx/3 - stress_yy/3 + 2*stress_zz/3) + 2*stress_yz*stress_zx;
132 
133  ddJ3[sXX+ nSymTen*sXX] = -2*stress_yy/9 - 2*stress_zz/9 + 4*stress_xx/9;
134 
135  ddJ3[sXX+ nSymTen*sYY] = -2*stress_xx/9 - 2*stress_yy/9 + 4*stress_zz/9;
136 
137  ddJ3[sXX+ nSymTen*sZZ] = -2*stress_xx/9 - 2*stress_zz/9 + 4*stress_yy/9;
138 
139  ddJ3[sXX+ nSymTen*sYZ] = -4*stress_yz/3;
140 
141  ddJ3[sXX+ nSymTen*sZX] = 2*stress_zx/3;
142 
143  ddJ3[sXX+ nSymTen*sXY] = 2*stress_xy/3;
144 
145  ddJ3[sYY+ nSymTen*sXX] = -2*stress_xx/9 - 2*stress_yy/9 + 4*stress_zz/9;
146 
147  ddJ3[sYY+ nSymTen*sYY] = -2*stress_xx/9 - 2*stress_zz/9 + 4*stress_yy/9;
148 
149  ddJ3[sYY+ nSymTen*sZZ] = -2*stress_yy/9 - 2*stress_zz/9 + 4*stress_xx/9;
150 
151  ddJ3[sYY+ nSymTen*sYZ] = 2*stress_yz/3;
152 
153  ddJ3[sYY+ nSymTen*sZX] = -4*stress_zx/3;
154 
155  ddJ3[sYY+ nSymTen*sXY] = 2*stress_xy/3;
156 
157  ddJ3[sZZ+ nSymTen*sXX] = -2*stress_xx/9 - 2*stress_zz/9 + 4*stress_yy/9;
158 
159  ddJ3[sZZ+ nSymTen*sYY] = -2*stress_yy/9 - 2*stress_zz/9 + 4*stress_xx/9;
160 
161  ddJ3[sZZ+ nSymTen*sZZ] = -2*stress_xx/9 - 2*stress_yy/9 + 4*stress_zz/9;
162 
163  ddJ3[sZZ+ nSymTen*sYZ] = 2*stress_yz/3;
164 
165  ddJ3[sZZ+ nSymTen*sZX] = 2*stress_zx/3;
166 
167  ddJ3[sZZ+ nSymTen*sXY] = -4*stress_xy/3;
168 
169  ddJ3[sYZ+ nSymTen*sXX] = -4*stress_yz/3;
170 
171  ddJ3[sYZ+ nSymTen*sYY] = 2*stress_yz/3;
172 
173  ddJ3[sYZ+ nSymTen*sZZ] = 2*stress_yz/3;
174 
175  ddJ3[sYZ+ nSymTen*sYZ] = -4*stress_xx/3 + 2*stress_yy/3 + 2*stress_zz/3;
176 
177  ddJ3[sYZ+ nSymTen*sZX] = 2*stress_xy;
178 
179  ddJ3[sYZ+ nSymTen*sXY] = 2*stress_zx;
180 
181  ddJ3[sZX+ nSymTen*sXX] = 2*stress_zx/3;
182 
183  ddJ3[sZX+ nSymTen*sYY] = -4*stress_zx/3;
184 
185  ddJ3[sZX+ nSymTen*sZZ] = 2*stress_zx/3;
186 
187  ddJ3[sZX+ nSymTen*sYZ] = 2*stress_xy;
188 
189  ddJ3[sZX+ nSymTen*sZX] = -4*stress_yy/3 + 2*stress_xx/3 + 2*stress_zz/3;
190 
191  ddJ3[sZX+ nSymTen*sXY] = 2*stress_yz;
192 
193  ddJ3[sXY+ nSymTen*sXX] = 2*stress_xy/3;
194 
195  ddJ3[sXY+ nSymTen*sYY] = 2*stress_xy/3;
196 
197  ddJ3[sXY+ nSymTen*sZZ] = -4*stress_xy/3;
198 
199  ddJ3[sXY+ nSymTen*sYZ] = 2*stress_zx;
200 
201  ddJ3[sXY+ nSymTen*sZX] = 2*stress_yz;
202 
203  ddJ3[sXY+ nSymTen*sXY] = -4*stress_zz/3 + 2*stress_xx/3 + 2*stress_yy/3;
204 
205  theta = -asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3;
206 
207  f = -c + sqrt(6)*sqrt(targ)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/6;
208 
209  df_dtmp[SKEY] = 0;
210 
211  df_dtmp[TARGKEY] = sqrt(6)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(12*sqrt(targ)) + 9*J3*sqrt(3)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3)));
212 
213  df_dtmp[J3KEY] = -3*sqrt(3)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3)));
214 
215  df[sXX] = df_dtmp[SKEY]*ds[sXX] + df_dtmp[TARGKEY]*dtarg[sXX] + df_dtmp[J3KEY]*dJ3[sXX];
216 
217  df[sYY] = df_dtmp[SKEY]*ds[sYY] + df_dtmp[TARGKEY]*dtarg[sYY] + df_dtmp[J3KEY]*dJ3[sYY];
218 
219  df[sZZ] = df_dtmp[SKEY]*ds[sZZ] + df_dtmp[TARGKEY]*dtarg[sZZ] + df_dtmp[J3KEY]*dJ3[sZZ];
220 
221  df[sYZ] = df_dtmp[SKEY]*ds[sYZ] + df_dtmp[TARGKEY]*dtarg[sYZ] + df_dtmp[J3KEY]*dJ3[sYZ];
222 
223  df[sZX] = df_dtmp[SKEY]*ds[sZX] + df_dtmp[TARGKEY]*dtarg[sZX] + df_dtmp[J3KEY]*dJ3[sZX];
224 
225  df[sXY] = df_dtmp[SKEY]*ds[sXY] + df_dtmp[TARGKEY]*dtarg[sXY] + df_dtmp[J3KEY]*dJ3[sXY];
226 
227  g = -c + sqrt(6)*sqrt(targ)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/6;
228 
229  dg_dtmp[SKEY] = 0;
230 
231  dg_dtmp[TARGKEY] = sqrt(6)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(12*sqrt(targ)) + 9*J3*sqrt(3)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3)));
232 
233  dg_dtmp[J3KEY] = -3*sqrt(3)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3)));
234 
235  r[sXX] = dg_dtmp[SKEY]*ds[sXX] + dg_dtmp[TARGKEY]*dtarg[sXX] + dg_dtmp[J3KEY]*dJ3[sXX];
236 
237  r[sYY] = dg_dtmp[SKEY]*ds[sYY] + dg_dtmp[TARGKEY]*dtarg[sYY] + dg_dtmp[J3KEY]*dJ3[sYY];
238 
239  r[sZZ] = dg_dtmp[SKEY]*ds[sZZ] + dg_dtmp[TARGKEY]*dtarg[sZZ] + dg_dtmp[J3KEY]*dJ3[sZZ];
240 
241  r[sYZ] = dg_dtmp[SKEY]*ds[sYZ] + dg_dtmp[TARGKEY]*dtarg[sYZ] + dg_dtmp[J3KEY]*dJ3[sYZ];
242 
243  r[sZX] = dg_dtmp[SKEY]*ds[sZX] + dg_dtmp[TARGKEY]*dtarg[sZX] + dg_dtmp[J3KEY]*dJ3[sZX];
244 
245  r[sXY] = dg_dtmp[SKEY]*ds[sXY] + dg_dtmp[TARGKEY]*dtarg[sXY] + dg_dtmp[J3KEY]*dJ3[sXY];
246 
247  ddg_dtmp[SKEY+3*SKEY] = 0;
248 
249  ddg_dtmp[SKEY+3*TARGKEY] = 0;
250 
251  ddg_dtmp[SKEY+3*J3KEY] = 0;
252 
253  ddg_dtmp[TARGKEY+3*SKEY] = 0;
254 
255  ddg_dtmp[TARGKEY+3*TARGKEY] = -sqrt(6)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(24*pow(targ, 3.0/2.0)) - 19683*sqrt(3)*pow(J3, 3)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 6)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 243*sqrt(6)*pow(J3, 2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(4*pow(targ, 9.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 27*J3*sqrt(3)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(4*pow(targ, 3)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3)));
256 
257  ddg_dtmp[TARGKEY+3*J3KEY] = 3*sqrt(3)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6561*sqrt(3)*pow(J3, 2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 81*J3*sqrt(6)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3)));
258 
259  ddg_dtmp[J3KEY+3*SKEY] = 0;
260 
261  ddg_dtmp[J3KEY+3*TARGKEY] = 3*sqrt(3)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6561*sqrt(3)*pow(J3, 2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 81*J3*sqrt(6)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3)));
262 
263  ddg_dtmp[J3KEY+3*J3KEY] = -27*sqrt(6)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 5.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 4374*J3*sqrt(3)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 4)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0));
264 
265  dr[sXX+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sXX]\
266  + 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]\
267  + 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]\
268  + 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];
269 
270  dr[sXX+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sYY]\
271  + 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]\
272  + 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]\
273  + 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];
274 
275  dr[sXX+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sZZ]\
276  + 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]\
277  + 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]\
278  + 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];
279 
280  dr[sXX+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sYZ]\
281  + 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]\
282  + 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]\
283  + 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];
284 
285  dr[sXX+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sZX]\
286  + 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]\
287  + 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]\
288  + 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];
289 
290  dr[sXX+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sXY]\
291  + 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]\
292  + 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]\
293  + 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];
294 
295  dr[sYY+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sXX]\
296  + 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]\
297  + 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]\
298  + 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];
299 
300  dr[sYY+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sYY]\
301  + 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]\
302  + 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]\
303  + 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];
304 
305  dr[sYY+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sZZ]\
306  + 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]\
307  + 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]\
308  + 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];
309 
310  dr[sYY+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sYZ]\
311  + 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]\
312  + 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]\
313  + 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];
314 
315  dr[sYY+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sZX]\
316  + 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]\
317  + 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]\
318  + 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];
319 
320  dr[sYY+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sXY]\
321  + 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]\
322  + 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]\
323  + 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];
324 
325  dr[sZZ+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sXX]\
326  + 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]\
327  + 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]\
328  + 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];
329 
330  dr[sZZ+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sYY]\
331  + 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]\
332  + 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]\
333  + 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];
334 
335  dr[sZZ+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sZZ]\
336  + 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]\
337  + 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]\
338  + 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];
339 
340  dr[sZZ+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sYZ]\
341  + 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]\
342  + 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]\
343  + 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];
344 
345  dr[sZZ+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sZX]\
346  + 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]\
347  + 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]\
348  + 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];
349 
350  dr[sZZ+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sXY]\
351  + 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]\
352  + 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]\
353  + 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];
354 
355  dr[sYZ+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sXX]\
356  + 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]\
357  + 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]\
358  + 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];
359 
360  dr[sYZ+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sYY]\
361  + 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]\
362  + 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]\
363  + 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];
364 
365  dr[sYZ+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sZZ]\
366  + 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]\
367  + 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]\
368  + 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];
369 
370  dr[sYZ+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sYZ]\
371  + 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]\
372  + 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]\
373  + 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];
374 
375  dr[sYZ+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sZX]\
376  + 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]\
377  + 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]\
378  + 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];
379 
380  dr[sYZ+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sXY]\
381  + 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]\
382  + 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]\
383  + 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];
384 
385  dr[sZX+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sXX]\
386  + 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]\
387  + 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]\
388  + 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];
389 
390  dr[sZX+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sYY]\
391  + 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]\
392  + 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]\
393  + 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];
394 
395  dr[sZX+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sZZ]\
396  + 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]\
397  + 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]\
398  + 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];
399 
400  dr[sZX+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sYZ]\
401  + 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]\
402  + 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]\
403  + 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];
404 
405  dr[sZX+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sZX]\
406  + 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]\
407  + 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]\
408  + 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];
409 
410  dr[sZX+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sXY]\
411  + 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]\
412  + 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]\
413  + 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];
414 
415  dr[sXY+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sXX]\
416  + 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]\
417  + 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]\
418  + 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];
419 
420  dr[sXY+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sYY]\
421  + 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]\
422  + 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]\
423  + 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];
424 
425  dr[sXY+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sZZ]\
426  + 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]\
427  + 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]\
428  + 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];
429 
430  dr[sXY+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sYZ]\
431  + 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]\
432  + 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]\
433  + 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];
434 
435  dr[sXY+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sZX]\
436  + 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]\
437  + 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]\
438  + 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];
439 
440  dr[sXY+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sXY]\
441  + 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]\
442  + 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]\
443  + 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];
444 
445 }
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
tresca
void tresca(const double &phi, const double &psi, const double &c, const double *stress, double &f, double *df, double &g, double *r, double *dr)
Definition: tresca.h:2
r
Double r
Definition: Headers.h:83
psi
Double psi
Definition: Headers.h:78