proteus  1.8.1
C/C++/Fortran libraries
druckerPrager.h
Go to the documentation of this file.
1 
2 inline void druckerPrager(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],f_12,f_13,f_23,g_12,g_13,g_23,
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  double stress_1 = -sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + s*sqrt(3)/3;
208 
209  double stress_2 = -sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 + s*sqrt(3)/3;
210 
211  double stress_3 = sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + s*sqrt(3)/3;
212 
213  f = -2*c*sqrt(3)*cos(phi)/(3 + sin(phi)) + 2*sqrt(3)*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + s*sqrt(3))*sin(phi)/(3*(3 + sin(phi))) + sqrt(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6);
214 
215  df_dtmp[SKEY] = 2*sin(phi)/(3 + sin(phi));
216 
217  df_dtmp[TARGKEY] = ((-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12)/sqrt(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6) + 2*sqrt(3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(6*sqrt(targ)) - sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) + sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) + 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 9*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*sin(phi)/(3*(3 + sin(phi)));
218 
219  df_dtmp[J3KEY] = ((-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12 + (-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)/12 + (-12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12)/sqrt(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6) + 2*sqrt(3)*(-6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 6*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*sin(phi)/(3*(3 + sin(phi)));
220 
221  df[sXX] = df_dtmp[SKEY]*ds[sXX] + df_dtmp[TARGKEY]*dtarg[sXX] + df_dtmp[J3KEY]*dJ3[sXX];
222 
223  df[sYY] = df_dtmp[SKEY]*ds[sYY] + df_dtmp[TARGKEY]*dtarg[sYY] + df_dtmp[J3KEY]*dJ3[sYY];
224 
225  df[sZZ] = df_dtmp[SKEY]*ds[sZZ] + df_dtmp[TARGKEY]*dtarg[sZZ] + df_dtmp[J3KEY]*dJ3[sZZ];
226 
227  df[sYZ] = df_dtmp[SKEY]*ds[sYZ] + df_dtmp[TARGKEY]*dtarg[sYZ] + df_dtmp[J3KEY]*dJ3[sYZ];
228 
229  df[sZX] = df_dtmp[SKEY]*ds[sZX] + df_dtmp[TARGKEY]*dtarg[sZX] + df_dtmp[J3KEY]*dJ3[sZX];
230 
231  df[sXY] = df_dtmp[SKEY]*ds[sXY] + df_dtmp[TARGKEY]*dtarg[sXY] + df_dtmp[J3KEY]*dJ3[sXY];
232 
233  g = -2*c*sqrt(3)*cos(psi)/(3 + sin(psi)) + 2*sqrt(3)*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + s*sqrt(3))*sin(psi)/(3*(3 + sin(psi))) + sqrt(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6);
234 
235  dg_dtmp[SKEY] = 2*sin(psi)/(3 + sin(psi));
236 
237  dg_dtmp[TARGKEY] = ((-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12)/sqrt(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6) + 2*sqrt(3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(6*sqrt(targ)) - sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) + sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) + 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 9*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*sin(psi)/(3*(3 + sin(psi)));
238 
239  dg_dtmp[J3KEY] = ((-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12 + (-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)/12 + (-12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12)/sqrt(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6) + 2*sqrt(3)*(-6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 6*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*sin(psi)/(3*(3 + sin(psi)));
240 
241  r[sXX] = dg_dtmp[SKEY]*ds[sXX] + dg_dtmp[TARGKEY]*dtarg[sXX] + dg_dtmp[J3KEY]*dJ3[sXX];
242 
243  r[sYY] = dg_dtmp[SKEY]*ds[sYY] + dg_dtmp[TARGKEY]*dtarg[sYY] + dg_dtmp[J3KEY]*dJ3[sYY];
244 
245  r[sZZ] = dg_dtmp[SKEY]*ds[sZZ] + dg_dtmp[TARGKEY]*dtarg[sZZ] + dg_dtmp[J3KEY]*dJ3[sZZ];
246 
247  r[sYZ] = dg_dtmp[SKEY]*ds[sYZ] + dg_dtmp[TARGKEY]*dtarg[sYZ] + dg_dtmp[J3KEY]*dJ3[sYZ];
248 
249  r[sZX] = dg_dtmp[SKEY]*ds[sZX] + dg_dtmp[TARGKEY]*dtarg[sZX] + dg_dtmp[J3KEY]*dJ3[sZX];
250 
251  r[sXY] = dg_dtmp[SKEY]*ds[sXY] + dg_dtmp[TARGKEY]*dtarg[sXY] + dg_dtmp[J3KEY]*dJ3[sXY];
252 
253  ddg_dtmp[SKEY+3*SKEY] = 0;
254 
255  ddg_dtmp[SKEY+3*TARGKEY] = 0;
256 
257  ddg_dtmp[SKEY+3*J3KEY] = 0;
258 
259  ddg_dtmp[TARGKEY+3*SKEY] = 0;
260 
261  ddg_dtmp[TARGKEY+3*TARGKEY] = ((-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(6*pow(targ, 3.0/2.0)) + sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*pow(targ, 3.0/2.0)) - 39366*pow(J3, 3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 6)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 27*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 3)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 27*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 3)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 39366*pow(J3, 3)*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 6)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 243*sqrt(2)*pow(J3, 2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 9.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 243*sqrt(2)*pow(J3, 2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 9.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(6*pow(targ, 3.0/2.0)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*pow(targ, 3.0/2.0)) - 39366*pow(J3, 3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 6)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 27*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 3)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 27*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 3)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 39366*pow(J3, 3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 6)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 243*sqrt(2)*pow(J3, 2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 9.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 243*sqrt(2)*pow(J3, 2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 9.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*pow(targ, 3.0/2.0)) - sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*pow(targ, 3.0/2.0)) - 39366*pow(J3, 3)*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 6)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 27*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 3)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 27*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 3)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 39366*pow(J3, 3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 6)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 243*sqrt(2)*pow(J3, 2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 9.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 243*sqrt(2)*pow(J3, 2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 9.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(6*sqrt(targ)) - 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(6*sqrt(targ)) - sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) - 9*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) - 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 9*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12)/sqrt(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6) + (-(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 - (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 - (sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12)*((-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12)/pow(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6, 3.0/2.0) + 2*sqrt(3)*(-sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(12*pow(targ, 3.0/2.0)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(12*pow(targ, 3.0/2.0)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(12*pow(targ, 3.0/2.0)) - 19683*pow(J3, 3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 6)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 19683*pow(J3, 3)*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 6)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 19683*pow(J3, 3)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 6)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 27*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 3)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 27*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(2*pow(targ, 3)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 27*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(2*pow(targ, 3)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 243*sqrt(2)*pow(J3, 2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(2*pow(targ, 9.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 243*sqrt(2)*pow(J3, 2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(2*pow(targ, 9.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 243*sqrt(2)*pow(J3, 2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(2*pow(targ, 9.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))*sin(psi)/(3*(3 + sin(psi)));
262 
263  ddg_dtmp[TARGKEY+3*J3KEY] = ((-6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-6*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 26244*pow(J3, 2)*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 26244*pow(J3, 2)*cos(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)) - 162*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 162*J3*sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)*(-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 26244*pow(J3, 2)*cos(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)) + 26244*pow(J3, 2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 162*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 162*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 26244*pow(J3, 2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 26244*pow(J3, 2)*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 162*J3*sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 162*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12)/sqrt(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6) + (-(-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12 - (-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)/12 - (-12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12)*((-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12)/pow(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6, 3.0/2.0) + 2*sqrt(3)*(6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 13122*pow(J3, 2)*cos(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)) + 13122*pow(J3, 2)*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 13122*pow(J3, 2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 81*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 81*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 81*J3*sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))*sin(psi)/(3*(3 + sin(psi)));
264 
265  ddg_dtmp[J3KEY+3*SKEY] = 0;
266 
267  ddg_dtmp[J3KEY+3*TARGKEY] = ((-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(6*sqrt(targ)) - sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) - 9*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(6*sqrt(targ)) - 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(6*sqrt(targ)) - 9*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 9*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 26244*pow(J3, 2)*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 26244*pow(J3, 2)*cos(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)) - 162*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 162*J3*sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)*(-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 26244*pow(J3, 2)*cos(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)) + 26244*pow(J3, 2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 162*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 162*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 26244*pow(J3, 2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 26244*pow(J3, 2)*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 162*J3*sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 162*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12)/sqrt(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6) + (-(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 - (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)*(-sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 - (sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) + sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(3*sqrt(targ)) - 18*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 18*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12)*((-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12 + (-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)/12 + (-12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12)/pow(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6, 3.0/2.0) + 2*sqrt(3)*(6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 2)*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 13122*pow(J3, 2)*cos(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)) + 13122*pow(J3, 2)*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) + 13122*pow(J3, 2)*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 81*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 81*J3*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 81*J3*sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 7.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))*sin(psi)/(3*(3 + sin(psi)));
268 
269  ddg_dtmp[J3KEY+3*J3KEY] = ((-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-6*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 6*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))/12 + (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-17496*J3*cos(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)) + 108*sqrt(2)*sin(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))) + 108*sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 17496*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 4)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)))/12 + (-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)*(-17496*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 4)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 108*sqrt(2)*sin(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))) + 108*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 17496*J3*cos(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)))/12 + (sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)*(-17496*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 4)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 108*sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) - 108*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 17496*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 4)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)))/12)/sqrt(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6) + (-(-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12 - (-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)/12 - (-12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12)*((-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12 + (-12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3)/12 + (-12*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 12*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(targ*sqrt(1 - 1458*pow(J3, 2)/pow(targ, 3))))*(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3)/12)/pow(pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3 - sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6 + pow(-sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3)/3, 2)/6 + pow(sqrt(2)*sqrt(targ)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3 + sqrt(2)*sqrt(targ)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/3, 2)/6, 3.0/2.0) + 2*sqrt(3)*(-8748*J3*cos(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)) - 8748*J3*cos(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 4)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 8748*J3*cos(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 4)*pow(1 - 1458*pow(J3, 2)/pow(targ, 3), 3.0/2.0)) - 54*sqrt(2)*sin(-asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))) + 54*sqrt(2)*sin(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))) + 54*sqrt(2)*sin(asin(27*J3*sqrt(2)/pow(targ, 3.0/2.0))/3 + 2*M_PI/3)/(pow(targ, 5.0/2.0)*(1 - 1458*pow(J3, 2)/pow(targ, 3))))*sin(psi)/(3*(3 + sin(psi)));
270 
271  dr[sXX+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sXX]\
272  + 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]\
273  + 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]\
274  + 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];
275 
276  dr[sXX+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sYY]\
277  + 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]\
278  + 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]\
279  + 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];
280 
281  dr[sXX+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sZZ]\
282  + 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]\
283  + 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]\
284  + 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];
285 
286  dr[sXX+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sYZ]\
287  + 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]\
288  + 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]\
289  + 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];
290 
291  dr[sXX+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sZX]\
292  + 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]\
293  + 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]\
294  + 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];
295 
296  dr[sXX+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sXX+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sXX+nSymTen*sXY]\
297  + 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]\
298  + 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]\
299  + 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];
300 
301  dr[sYY+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sXX]\
302  + 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]\
303  + 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]\
304  + 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];
305 
306  dr[sYY+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sYY]\
307  + 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]\
308  + 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]\
309  + 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];
310 
311  dr[sYY+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sZZ]\
312  + 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]\
313  + 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]\
314  + 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];
315 
316  dr[sYY+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sYZ]\
317  + 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]\
318  + 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]\
319  + 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];
320 
321  dr[sYY+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sZX]\
322  + 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]\
323  + 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]\
324  + 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];
325 
326  dr[sYY+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sYY+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sYY+nSymTen*sXY]\
327  + 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]\
328  + 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]\
329  + 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];
330 
331  dr[sZZ+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sXX]\
332  + 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]\
333  + 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]\
334  + 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];
335 
336  dr[sZZ+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sYY]\
337  + 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]\
338  + 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]\
339  + 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];
340 
341  dr[sZZ+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sZZ]\
342  + 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]\
343  + 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]\
344  + 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];
345 
346  dr[sZZ+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sYZ]\
347  + 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]\
348  + 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]\
349  + 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];
350 
351  dr[sZZ+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sZX]\
352  + 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]\
353  + 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]\
354  + 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];
355 
356  dr[sZZ+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sZZ+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sZZ+nSymTen*sXY]\
357  + 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]\
358  + 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]\
359  + 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];
360 
361  dr[sYZ+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sXX]\
362  + 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]\
363  + 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]\
364  + 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];
365 
366  dr[sYZ+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sYY]\
367  + 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]\
368  + 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]\
369  + 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];
370 
371  dr[sYZ+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sZZ]\
372  + 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]\
373  + 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]\
374  + 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];
375 
376  dr[sYZ+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sYZ]\
377  + 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]\
378  + 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]\
379  + 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];
380 
381  dr[sYZ+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sZX]\
382  + 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]\
383  + 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]\
384  + 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];
385 
386  dr[sYZ+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sYZ+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sYZ+nSymTen*sXY]\
387  + 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]\
388  + 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]\
389  + 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];
390 
391  dr[sZX+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sXX]\
392  + 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]\
393  + 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]\
394  + 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];
395 
396  dr[sZX+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sYY]\
397  + 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]\
398  + 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]\
399  + 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];
400 
401  dr[sZX+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sZZ]\
402  + 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]\
403  + 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]\
404  + 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];
405 
406  dr[sZX+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sYZ]\
407  + 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]\
408  + 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]\
409  + 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];
410 
411  dr[sZX+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sZX]\
412  + 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]\
413  + 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]\
414  + 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];
415 
416  dr[sZX+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sZX+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sZX+nSymTen*sXY]\
417  + 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]\
418  + 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]\
419  + 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];
420 
421  dr[sXY+ nSymTen*sXX] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sXX] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sXX]\
422  + 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]\
423  + 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]\
424  + 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];
425 
426  dr[sXY+ nSymTen*sYY] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sYY] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sYY]\
427  + 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]\
428  + 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]\
429  + 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];
430 
431  dr[sXY+ nSymTen*sZZ] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sZZ] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sZZ]\
432  + 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]\
433  + 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]\
434  + 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];
435 
436  dr[sXY+ nSymTen*sYZ] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sYZ] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sYZ]\
437  + 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]\
438  + 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]\
439  + 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];
440 
441  dr[sXY+ nSymTen*sZX] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sZX] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sZX]\
442  + 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]\
443  + 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]\
444  + 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];
445 
446  dr[sXY+ nSymTen*sXY] = dg_dtmp[TARGKEY]*ddtarg[sXY+nSymTen*sXY] + dg_dtmp[J3KEY]*ddJ3[sXY+nSymTen*sXY]\
447  + 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]\
448  + 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]\
449  + 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];
450 
451 }
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
druckerPrager
void druckerPrager(const double &phi, const double &psi, const double &c, const double *stress, double &f, double *df, double &g, double *r, double *dr)
Definition: druckerPrager.h:2
c
Double c
Definition: Headers.h:54
r
Double r
Definition: Headers.h:83
psi
Double psi
Definition: Headers.h:78