1 /* Automatically generated functional code: becke86
2 Maxima input:
3 >> BETA:0.00787;
4 >> GAMMA:0.004;
5 >> PI:3.14159265358979312;
6 >> PREF:3/4*(6/PI)^(1/3);
7 >> ra43:rhoa^(4/3);
8 >> rb43:rhob^(4/3);
9 >> denoma:1+GAMMA*xa*xa;
10 >> denomb:1+GAMMA*xb*xb;
11 >>
12 >> Exa: -PREF*ra43*(1 + BETA*xa*xa)/denoma;
13 >> Exb: -PREF*rb43*(1 + BETA*xb*xb)/denomb;
14 >>
15 >> K(rhoa,grada,rhob,gradb,gradab) := Exa + Exb;
16 */
17
18 // add "extern Functional becke86Functional;" to 'functionals.h'
19 // add "&becke86Functional," to 'functionals.c'
20 // add "fun-becke86.c" to 'Makefile.in'
21
22 #include <math.h>
23 #include <stddef.h>
24 #include "general.h"
25
26 #define __CVERSION__
27
28 #include "functionals.h"
29 #define LOG log
30 #define ABS fabs
31 #define ASINH asinh
32 #define SQRT sqrt
33
34 /* INTERFACE PART */
becke86_isgga(void)35 static integer becke86_isgga(void) {return 1;}
36 static integer becke86_read(const char* conf_line);
37 static real becke86_energy(const FunDensProp* dp);
38 static void becke86_first(FunFirstFuncDrv *ds, real factor,
39 const FunDensProp* dp);
40 static void becke86_second(FunSecondFuncDrv *ds, real factor,
41 const FunDensProp* dp);
42 static void becke86_third(FunThirdFuncDrv *ds, real factor,
43 const FunDensProp* dp);
44
45 static void becke86_fourth(FunFourthFuncDrv *ds, real factor,
46 const FunDensProp* dp);
47
48 //static integer fun_true(void) { return 1; }
49 Functional B86xFunctional = {
50 "B86x",
51 becke86_isgga,
52 3,
53 becke86_read,
54 NULL,
55 becke86_energy,
56 becke86_first,
57 becke86_second,
58 becke86_third,
59 becke86_fourth
60 };
61
62 /* IMPLEMENTATION PART */
63 static integer
becke86_read(const char * conf_line)64 becke86_read(const char* conf_line)
65 {
66 fun_set_hf_weight(0);
67 return 1;
68 }
69
70
71 static real
becke86_energy(const FunDensProp * dp)72 becke86_energy(const FunDensProp* dp)
73 {
74 real t[5],zk;
75 real rhoa = dp->rhoa;
76 real rhob = dp->rhob;
77 real grada = dp->grada;
78 real gradb = dp->gradb;
79 real gradab = dp->gradab;
80
81 t[1] = pow(grada,2.0);
82 t[2] = 1/pow(rhoa,2.666666666666667);
83 t[3] = pow(gradb,2.0);
84 t[4] = 1/pow(rhob,2.666666666666667);
85 zk = -0.9305257363491*(0.00787*t[3]*t[4]+1.0)*pow(rhob,1.333333333333333)/(0.004*t[3]*t[4]+1.0)-0.9305257363491*(0.00787*t[1]*t[2]+1.0)*pow(rhoa,1.333333333333333)/(0.004*t[1]*t[2]+1.0);
86 return zk;
87 }
88
89 static void
becke86_first(FunFirstFuncDrv * ds,real factor,const FunDensProp * dp)90 becke86_first(FunFirstFuncDrv *ds, real factor, const FunDensProp* dp)
91 {
92 real t[17];
93 real dfdra, dfdrb, dfdga, dfdgb, dfdab;
94 real rhoa = dp->rhoa;
95 real rhob = dp->rhob;
96 real grada = dp->grada;
97 real gradb = dp->gradb;
98 real gradab = dp->gradab;
99
100 t[1] = pow(grada,2.0);
101 t[2] = 1/pow(rhoa,2.666666666666667);
102 t[3] = 0.004*t[1]*t[2]+1.0;
103 t[4] = 1/t[3];
104 t[5] = 1/pow(rhoa,2.333333333333333);
105 t[6] = 1/pow(t[3],2.0);
106 t[7] = 0.00787*t[1]*t[2]+1.0;
107 t[8] = pow(gradb,2.0);
108 t[9] = 1/pow(rhob,2.666666666666667);
109 t[10] = 0.004*t[8]*t[9]+1.0;
110 t[11] = 1/t[10];
111 t[12] = 1/pow(rhob,2.333333333333333);
112 t[13] = 1/pow(t[10],2.0);
113 t[14] = 0.00787*t[8]*t[9]+1.0;
114 t[15] = 1/pow(rhoa,1.333333333333333);
115 t[16] = 1/pow(rhob,1.333333333333333);
116 dfdra = -1.2407009817988*t[4]*t[7]*pow(rhoa,.3333333333333333)-0.0099256078543904*t[1]*t[6]*t[7]*t[5]+.01952863345351311*t[1]*t[4]*t[5];
117 dfdrb = -1.2407009817988*t[11]*t[14]*pow(rhob,.3333333333333333)-0.0099256078543904*t[8]*t[13]*t[14]*t[12]+.01952863345351311*t[8]*t[11]*t[12];
118 dfdga = 0.0074442058907928*grada*t[6]*t[7]*t[15]-.01464647509013483*grada*t[4]*t[15];
119 dfdgb = 0.0074442058907928*gradb*t[13]*t[14]*t[16]-.01464647509013483*gradb*t[11]*t[16];
120 dfdab = 0.0;
121 ds->df1000 += factor*dfdra;
122 ds->df0100 += factor*dfdrb;
123 ds->df0010 += factor*dfdga;
124 ds->df0001 += factor*dfdgb;
125 ds->df00001 += factor*dfdab;
126 }
127
128 static void
becke86_second(FunSecondFuncDrv * ds,real factor,const FunDensProp * dp)129 becke86_second(FunSecondFuncDrv *ds, real factor, const FunDensProp* dp)
130 {
131 real t[31];
132 real dfdra, dfdrb, dfdga, dfdgb, dfdab;
133 real d2fdraga, d2fdrara, d2fdrarb, d2fdragb, d2fdrbrb;
134 real d2fdrbgb, d2fdgaga, d2fdgbgb, d2fdrbga;
135 real d2fdraab, d2fdrbab;
136 real d2fdgaab, d2fdgbab, d2fdabab, d2fdgagb;
137 real rhoa = dp->rhoa;
138 real rhob = dp->rhob;
139 real grada = dp->grada;
140 real gradb = dp->gradb;
141 real gradab = dp->gradab;
142
143 t[1] = pow(grada,2.0);
144 t[2] = 1/pow(rhoa,2.666666666666667);
145 t[3] = 0.004*t[1]*t[2]+1.0;
146 t[4] = 1/t[3];
147 t[5] = 1/pow(rhoa,2.333333333333333);
148 t[6] = 1/pow(t[3],2.0);
149 t[7] = 0.00787*t[1]*t[2]+1.0;
150 t[8] = pow(gradb,2.0);
151 t[9] = 1/pow(rhob,2.666666666666667);
152 t[10] = 0.004*t[8]*t[9]+1.0;
153 t[11] = 1/t[10];
154 t[12] = 1/pow(rhob,2.333333333333333);
155 t[13] = 1/pow(t[10],2.0);
156 t[14] = 0.00787*t[8]*t[9]+1.0;
157 t[15] = 1/pow(rhoa,1.333333333333333);
158 t[16] = 1/pow(rhob,1.333333333333333);
159 t[17] = pow(grada,4.0);
160 t[18] = 1/pow(rhoa,6.0);
161 t[19] = 1/pow(t[3],3.0);
162 t[20] = 1/pow(rhoa,3.333333333333333);
163 t[21] = pow(grada,3.0);
164 t[22] = 1/pow(rhoa,5.0);
165 t[23] = pow(gradb,4.0);
166 t[24] = 1/pow(rhob,6.0);
167 t[25] = 1/pow(t[10],3.0);
168 t[26] = 1/pow(rhob,3.333333333333333);
169 t[27] = pow(gradb,3.0);
170 t[28] = 1/pow(rhob,5.0);
171 t[29] = 1/pow(rhoa,4.0);
172 t[30] = 1/pow(rhob,4.0);
173 dfdra = -1.2407009817988*t[4]*t[7]*pow(rhoa,.3333333333333333)-0.0099256078543904*t[1]*t[6]*t[7]*t[5]+.01952863345351311*t[1]*t[4]*t[5];
174 dfdrb = -1.2407009817988*t[11]*t[14]*pow(rhob,.3333333333333333)-0.0099256078543904*t[8]*t[13]*t[14]*t[12]+.01952863345351311*t[8]*t[11]*t[12];
175 dfdga = 0.0074442058907928*grada*t[6]*t[7]*t[15]-.01464647509013483*grada*t[4]*t[15];
176 dfdgb = 0.0074442058907928*gradb*t[13]*t[14]*t[16]-.01464647509013483*gradb*t[11]*t[16];
177 dfdab = 0.0;
178 d2fdrara = -.4135669939329333*t[4]*t[7]/pow(rhoa,.6666666666666666)+.009925607854390403*t[1]*t[6]*t[7]*t[20]-.01952863345351312*t[1]*t[4]*t[20]-2.1174630089366187E-4*t[17]*t[19]*t[7]*t[18]+4.166108470082797E-4*t[17]*t[6]*t[18];
179 d2fdrarb = 0.0;
180 d2fdraga = -0.0099256078543904*grada*t[6]*t[7]*t[5]+.01952863345351311*grada*t[4]*t[5]+1.588097256702464E-4*t[21]*t[19]*t[7]*t[22]-3.124581352562098E-4*t[21]*t[6]*t[22];
181 d2fdragb = 0.0;
182 d2fdraab = 0.0;
183 d2fdrbrb = -.4135669939329333*t[11]*t[14]/pow(rhob,.6666666666666666)+.009925607854390403*t[8]*t[13]*t[14]*t[26]-.01952863345351312*t[8]*t[11]*t[26]-2.1174630089366187E-4*t[23]*t[25]*t[14]*t[24]+4.166108470082797E-4*t[23]*t[13]*t[24];
184 d2fdrbga = 0.0;
185 d2fdrbgb = -0.0099256078543904*gradb*t[13]*t[14]*t[12]+.01952863345351311*gradb*t[11]*t[12]+1.588097256702464E-4*t[27]*t[25]*t[14]*t[28]-3.124581352562098E-4*t[27]*t[13]*t[28];
186 d2fdrbab = 0.0;
187 d2fdgaga = 0.0074442058907928*t[6]*t[7]*t[15]-.01464647509013483*t[4]*t[15]-1.1910729425268479E-4*t[1]*t[19]*t[7]*t[29]+2.3434360144215735E-4*t[1]*t[6]*t[29];
188 d2fdgagb = 0.0;
189 d2fdgaab = 0.0;
190 d2fdgbgb = 0.0074442058907928*t[13]*t[14]*t[16]-.01464647509013483*t[11]*t[16]-1.1910729425268479E-4*t[8]*t[25]*t[14]*t[30]+2.3434360144215735E-4*t[8]*t[13]*t[30];
191 d2fdgbab = 0.0;
192 d2fdabab = 0.0;
193 ds->df1000 += factor*dfdra;
194 ds->df0100 += factor*dfdrb;
195 ds->df0010 += factor*dfdga;
196 ds->df0001 += factor*dfdgb;
197 ds->df00001 += factor*dfdab;
198 ds->df2000 += factor*d2fdrara;
199 ds->df1100 += factor*d2fdrarb;
200 ds->df1010 += factor*d2fdraga;
201 ds->df1001 += factor*d2fdragb;
202 ds->df10001 += factor*d2fdraab;
203 ds->df0200 += factor*d2fdrbrb;
204 ds->df0110 += factor*d2fdrbga;
205 ds->df0101 += factor*d2fdrbgb;
206 ds->df01001 += factor*d2fdrbab;
207 ds->df0020 += factor*d2fdgaga;
208 ds->df0011 += factor*d2fdgagb;
209 ds->df00101+= factor*d2fdgaab;
210 ds->df0002 += factor*d2fdgbgb;
211 ds->df00011+= factor*d2fdgbab;
212 ds->df00002+= factor*d2fdabab;
213 }
214
215 static void
becke86_third(FunThirdFuncDrv * ds,real factor,const FunDensProp * dp)216 becke86_third(FunThirdFuncDrv *ds, real factor, const FunDensProp* dp)
217 {
218 real t[49];
219 real dfdra, dfdrb, dfdga, dfdgb, dfdab;
220 real d2fdrara , d2fdrarb , d2fdraga , d2fdragb ;
221 real d2fdraab , d2fdrbrb , d2fdrbga , d2fdrbgb ;
222 real d2fdrbab , d2fdgaga , d2fdgagb , d2fdgaab ;
223 real d2fdgbgb , d2fdgbab , d2fdabab ;
224 real d3fdrarara , d3fdrararb , d3fdraraga , d3fdraragb ;
225 real d3fdraraab , d3fdrarbrb , d3fdrarbga , d3fdrarbgb ;
226 real d3fdrarbab , d3fdragaga , d3fdragagb , d3fdragaab ;
227 real d3fdragbgb , d3fdragbab , d3fdraabab , d3fdrbrbrb ;
228 real d3fdrbrbga , d3fdrbrbgb , d3fdrbrbab , d3fdrbgaga ;
229 real d3fdrbgagb , d3fdrbgaab , d3fdrbgbgb , d3fdrbgbab ;
230 real d3fdrbabab , d3fdgagaga , d3fdgagagb , d3fdgagaab ;
231 real d3fdgagbgb , d3fdgagbab , d3fdgaabab , d3fdgbgbgb ;
232 real d3fdgbgbab , d3fdgbabab , d3fdababab ;
233 real rhoa = dp->rhoa;
234 real rhob = dp->rhob;
235 real grada = dp->grada;
236 real gradb = dp->gradb;
237 real gradab = dp->gradab;
238
239 t[1] = pow(grada,2.0);
240 t[2] = 1/pow(rhoa,2.666666666666667);
241 t[3] = 0.004*t[1]*t[2]+1.0;
242 t[4] = 1/t[3];
243 t[5] = 1/pow(rhoa,2.333333333333333);
244 t[6] = 1/pow(t[3],2.0);
245 t[7] = 0.00787*t[1]*t[2]+1.0;
246 t[8] = pow(gradb,2.0);
247 t[9] = 1/pow(rhob,2.666666666666667);
248 t[10] = 0.004*t[8]*t[9]+1.0;
249 t[11] = 1/t[10];
250 t[12] = 1/pow(rhob,2.333333333333333);
251 t[13] = 1/pow(t[10],2.0);
252 t[14] = 0.00787*t[8]*t[9]+1.0;
253 t[15] = 1/pow(rhoa,1.333333333333333);
254 t[16] = 1/pow(rhob,1.333333333333333);
255 t[17] = pow(grada,4.0);
256 t[18] = 1/pow(rhoa,6.0);
257 t[19] = 1/pow(t[3],3.0);
258 t[20] = 1/pow(rhoa,3.333333333333333);
259 t[21] = pow(grada,3.0);
260 t[22] = 1/pow(rhoa,5.0);
261 t[23] = pow(gradb,4.0);
262 t[24] = 1/pow(rhob,6.0);
263 t[25] = 1/pow(t[10],3.0);
264 t[26] = 1/pow(rhob,3.333333333333333);
265 t[27] = pow(gradb,3.0);
266 t[28] = 1/pow(rhob,5.0);
267 t[29] = 1/pow(rhoa,4.0);
268 t[30] = 1/pow(rhob,4.0);
269 t[31] = pow(grada,6.0);
270 t[32] = 1/pow(rhoa,9.666666666666666);
271 t[33] = 1/pow(t[3],4.0);
272 t[34] = 1/pow(rhoa,7.0);
273 t[35] = 1/pow(rhoa,4.333333333333333);
274 t[36] = pow(grada,5.0);
275 t[37] = 1/pow(rhoa,8.666666666666666);
276 t[38] = 1/pow(rhoa,7.666666666666667);
277 t[39] = pow(gradb,6.0);
278 t[40] = 1/pow(rhob,9.666666666666666);
279 t[41] = 1/pow(t[10],4.0);
280 t[42] = 1/pow(rhob,7.0);
281 t[43] = 1/pow(rhob,4.333333333333333);
282 t[44] = pow(gradb,5.0);
283 t[45] = 1/pow(rhob,8.666666666666666);
284 t[46] = 1/pow(rhob,7.666666666666667);
285 t[47] = 1/pow(rhoa,6.666666666666667);
286 t[48] = 1/pow(rhob,6.666666666666667);
287 dfdra = -1.2407009817988*t[4]*t[7]*pow(rhoa,.3333333333333333)-0.0099256078543904*t[1]*t[6]*t[7]*t[5]+.01952863345351311*t[1]*t[4]*t[5];
288 dfdrb = -1.2407009817988*t[11]*t[14]*pow(rhob,.3333333333333333)-0.0099256078543904*t[8]*t[13]*t[14]*t[12]+.01952863345351311*t[8]*t[11]*t[12];
289 dfdga = 0.0074442058907928*grada*t[6]*t[7]*t[15]-.01464647509013483*grada*t[4]*t[15];
290 dfdgb = 0.0074442058907928*gradb*t[13]*t[14]*t[16]-.01464647509013483*gradb*t[11]*t[16];
291 dfdab = 0.0;
292 d2fdrara = -.4135669939329333*t[4]*t[7]/pow(rhoa,.6666666666666666)+.009925607854390403*t[1]*t[6]*t[7]*t[20]-.01952863345351312*t[1]*t[4]*t[20]-2.1174630089366187E-4*t[17]*t[19]*t[7]*t[18]+4.166108470082797E-4*t[17]*t[6]*t[18];
293 d2fdrarb = 0.0;
294 d2fdraga = -0.0099256078543904*grada*t[6]*t[7]*t[5]+.01952863345351311*grada*t[4]*t[5]+1.588097256702464E-4*t[21]*t[19]*t[7]*t[22]-3.124581352562098E-4*t[21]*t[6]*t[22];
295 d2fdragb = 0.0;
296 d2fdraab = 0.0;
297 d2fdrbrb = -.4135669939329333*t[11]*t[14]/pow(rhob,.6666666666666666)+.009925607854390403*t[8]*t[13]*t[14]*t[26]-.01952863345351312*t[8]*t[11]*t[26]-2.1174630089366187E-4*t[23]*t[25]*t[14]*t[24]+4.166108470082797E-4*t[23]*t[13]*t[24];
298 d2fdrbga = 0.0;
299 d2fdrbgb = -0.0099256078543904*gradb*t[13]*t[14]*t[12]+.01952863345351311*gradb*t[11]*t[12]+1.588097256702464E-4*t[27]*t[25]*t[14]*t[28]-3.124581352562098E-4*t[27]*t[13]*t[28];
300 d2fdrbab = 0.0;
301 d2fdgaga = 0.0074442058907928*t[6]*t[7]*t[15]-.01464647509013483*t[4]*t[15]-1.1910729425268479E-4*t[1]*t[19]*t[7]*t[29]+2.3434360144215735E-4*t[1]*t[6]*t[29];
302 d2fdgagb = 0.0;
303 d2fdgaab = 0.0;
304 d2fdgbgb = 0.0074442058907928*t[13]*t[14]*t[16]-.01464647509013483*t[11]*t[16]-1.1910729425268479E-4*t[8]*t[25]*t[14]*t[30]+2.3434360144215735E-4*t[8]*t[13]*t[30];
305 d2fdgbab = 0.0;
306 d2fdabab = 0.0;
307 d3fdrarara= .2757113292886222*t[4]*t[7]/pow(rhoa,1.666666666666667)-.03749674078325263*t[1]*t[6]*t[7]*t[35]+.07377483749104954*t[1]*t[4]*t[35]+.001482224106255633*t[17]*t[19]*t[7]*t[34]-.002916275929057958*t[17]*t[6]*t[34]-6.77588162859718E-6*t[31]*t[33]*t[7]*t[32]+1.333154710426495E-5*t[31]*t[19]*t[32];
308 d3fdrararb = 0.0;
309 d3fdraraga = .02315975166024427*grada*t[6]*t[7]*t[20]-0.0455668113915306*grada*t[4]*t[20]-.001005794929244894*t[21]*t[19]*t[7]*t[18]+.001978901523289329*t[21]*t[6]*t[18]+5.081911221447886E-6*t[36]*t[33]*t[7]*t[37]-9.998660328198714E-6*t[36]*t[19]*t[37];
310 d3fdraragb = 0.0;
311 d3fdraraab = 0.0;
312 d3fdrarbrb = 0.0;
313 d3fdrarbga = 0.0;
314 d3fdrarbgb = 0.0;
315 d3fdrarbab = 0.0;
316 d3fdragaga = -0.0099256078543904*t[6]*t[7]*t[5]+.01952863345351311*t[4]*t[5]+6.352389026809856E-4*t[1]*t[19]*t[7]*t[22]-.001249832541024839*t[1]*t[6]*t[22]-3.8114334160859137E-6*t[17]*t[33]*t[7]*t[38]+7.498995246149036E-6*t[17]*t[19]*t[38];
317 d3fdragagb = 0.0;
318 d3fdragaab = 0.0;
319 d3fdragbgb = 0.0;
320 d3fdragbab = 0.0;
321 d3fdraabab = 0.0;
322 d3fdrbrbrb = .2757113292886222*t[11]*t[14]/pow(rhob,1.666666666666667)-.03749674078325263*t[8]*t[13]*t[14]*t[43]+.07377483749104954*t[8]*t[11]*t[43]+.001482224106255633*t[23]*t[25]*t[14]*t[42]-.002916275929057958*t[23]*t[13]*t[42]+1.333154710426495E-5*t[39]*t[25]*t[40]-6.77588162859718E-6*t[39]*t[41]*t[14]*t[40];
323 d3fdrbrbga = 0.0;
324 d3fdrbrbgb = .02315975166024427*gradb*t[13]*t[14]*t[26]-0.0455668113915306*gradb*t[11]*t[26]-.001005794929244894*t[27]*t[25]*t[14]*t[24]+.001978901523289329*t[27]*t[13]*t[24]+5.081911221447886E-6*t[44]*t[41]*t[14]*t[45]-9.998660328198714E-6*t[44]*t[25]*t[45];
325 d3fdrbrbab = 0.0;
326 d3fdrbgaga= 0.0;
327 d3fdrbgagb = 0.0;
328 d3fdrbgaab = 0.0;
329 d3fdrbgbgb = -0.0099256078543904*t[13]*t[14]*t[12]+.01952863345351311*t[11]*t[12]+6.352389026809856E-4*t[8]*t[25]*t[14]*t[28]-.001249832541024839*t[8]*t[13]*t[28]-3.8114334160859137E-6*t[23]*t[41]*t[14]*t[46]+7.498995246149036E-6*t[23]*t[25]*t[46];
330 d3fdrbgbab = 0.0;
331 d3fdrbabab = 0.0;
332 d3fdgagaga = -3.573218827580544E-4*grada*t[19]*t[7]*t[29]+7.030308043264719E-4*grada*t[6]*t[29]+2.858575062064435E-6*t[21]*t[33]*t[7]*t[47]-5.624246434611776E-6*t[21]*t[19]*t[47];
333 d3fdgagagb = 0.0;
334 d3fdgagaab = 0.0;
335 d3fdgagbgb = 0.0;
336 d3fdgagbab = 0.0;
337 d3fdgaabab = 0.0;
338 d3fdgbgbgb = -3.573218827580544E-4*gradb*t[25]*t[14]*t[30]+7.030308043264719E-4*gradb*t[13]*t[30]+2.858575062064435E-6*t[27]*t[41]*t[14]*t[48]-5.624246434611776E-6*t[27]*t[25]*t[48];
339 d3fdgbgbab = 0.0;
340 d3fdgbabab = 0.0;
341 d3fdababab = 0.0;
342 ds->df1000 += factor*dfdra;
343 ds->df0100 += factor*dfdrb;
344 ds->df0010 += factor*dfdga;
345 ds->df0001 += factor*dfdgb;
346 ds->df00001 += factor*dfdab;
347 ds->df2000 += factor*d2fdrara;
348 ds->df1100 += factor*d2fdrarb;
349 ds->df1010 += factor*d2fdraga;
350 ds->df1001 += factor*d2fdragb;
351 ds->df10001 += factor*d2fdraab;
352 ds->df0200 += factor*d2fdrbrb;
353 ds->df0110 += factor*d2fdrbga;
354 ds->df0101 += factor*d2fdrbgb;
355 ds->df01001 += factor*d2fdrbab;
356 ds->df0020 += factor*d2fdgaga;
357 ds->df0011 += factor*d2fdgagb;
358 ds->df00101+= factor*d2fdgaab;
359 ds->df0002 += factor*d2fdgbgb;
360 ds->df00011+= factor*d2fdgbab;
361 ds->df00002+= factor*d2fdabab;
362 ds->df3000 += factor*d3fdrarara;
363 ds->df2100 += factor*d3fdrararb;
364 ds->df2010 += factor*d3fdraraga;
365 ds->df2001 += factor*d3fdraragb;
366 ds->df20001 += factor*d3fdraraab;
367 ds->df1200 += factor*d3fdrarbrb;
368 ds->df1110 += factor*d3fdrarbga;
369 ds->df1101 += factor*d3fdrarbgb;
370 ds->df11001 += factor*d3fdrarbab;
371 ds->df1020 += factor*d3fdragaga;
372 ds->df1011 += factor*d3fdragagb;
373 ds->df10101+= factor*d3fdragaab;
374 ds->df1002 += factor*d3fdragbgb;
375 ds->df10011+= factor*d3fdragbab;
376 ds->df10002+= factor*d3fdraabab;
377 ds->df0300 += factor*d3fdrbrbrb;
378 ds->df0210 += factor*d3fdrbrbga;
379 ds->df0201 += factor*d3fdrbrbgb;
380 ds->df02001 += factor*d3fdrbrbab;
381 ds->df0120 += factor*d3fdrbgaga;
382 ds->df0111 += factor*d3fdrbgagb;
383 ds->df01101+= factor*d3fdrbgaab;
384 ds->df0102 += factor*d3fdrbgbgb;
385 ds->df01011+= factor*d3fdrbgbab;
386 ds->df01002+= factor*d3fdrbgbab;
387 ds->df0030 += factor*d3fdgagaga;
388 ds->df0021 += factor*d3fdgagagb;
389 ds->df00201+= factor*d3fdgagaab;
390 ds->df0012 += factor*d3fdgagbgb;
391 ds->df00111+= factor*d3fdgagbab;
392 ds->df00102+= factor*d3fdgaabab;
393 ds->df0003 += factor*d3fdgbgbgb;
394 ds->df00021+= factor*d3fdgbgbab;
395 ds->df00012+= factor*d3fdgbabab;
396 ds->df00003+= factor*d3fdababab;
397 }
398
399 static void
becke86_fourth(FunFourthFuncDrv * ds,real factor,const FunDensProp * dp)400 becke86_fourth(FunFourthFuncDrv *ds, real factor, const FunDensProp* dp)
401 {
402 real t[71];
403 real dfdra, dfdrb, dfdga, dfdgb, dfdab;
404 real d2fdrara , d2fdrarb , d2fdraga , d2fdragb ;
405 real d2fdraab , d2fdrbrb , d2fdrbga , d2fdrbgb ;
406 real d2fdrbab , d2fdgaga , d2fdgagb , d2fdgaab ;
407 real d2fdgbgb , d2fdgbab , d2fdabab ;
408 real d3fdrarara , d3fdrararb , d3fdraraga , d3fdraragb ;
409 real d3fdraraab , d3fdrarbrb , d3fdrarbga , d3fdrarbgb ;
410 real d3fdrarbab , d3fdragaga , d3fdragagb , d3fdragaab ;
411 real d3fdragbgb , d3fdragbab , d3fdraabab , d3fdrbrbrb ;
412 real d3fdrbrbga , d3fdrbrbgb , d3fdrbrbab , d3fdrbgaga ;
413 real d3fdrbgagb , d3fdrbgaab , d3fdrbgbgb , d3fdrbgbab ;
414 real d3fdrbabab , d3fdgagaga , d3fdgagagb , d3fdgagaab ;
415 real d3fdgagbgb , d3fdgagbab , d3fdgaabab , d3fdgbgbgb ;
416 real d3fdgbgbab , d3fdgbabab , d3fdababab ;
417 real d4fdrararara , d4fdrarararb , d4fdrararaga , d4fdrararagb ;
418 real d4fdrararaab , d4fdrararbrb , d4fdrararbga , d4fdrararbgb ;
419 real d4fdrararbab , d4fdraragaga , d4fdraragagb , d4fdraragaab ;
420 real d4fdraragbgb , d4fdraragbab , d4fdraraabab , d4fdrarbrbrb ;
421 real d4fdrarbrbga , d4fdrarbrbgb , d4fdrarbrbab , d4fdrarbgaga ;
422 real d4fdrarbgagb , d4fdrarbgaab , d4fdrarbgbgb , d4fdrarbgbab ;
423 real d4fdrarbabab , d4fdragagaga , d4fdragagagb , d4fdragagaab ;
424 real d4fdragagbgb , d4fdragagbab , d4fdragaabab , d4fdragbgbgb ;
425 real d4fdragbgbab , d4fdragbabab , d4fdraababab , d4fdrbrbrbrb ;
426 real d4fdrbrbrbga , d4fdrbrbrbgb , d4fdrbrbrbab , d4fdrbrbgaga ;
427 real d4fdrbrbgagb , d4fdrbrbgaab , d4fdrbrbgbgb , d4fdrbrbgbab ;
428 real d4fdrbrbabab , d4fdrbgagaga , d4fdrbgagagb , d4fdrbgagaab ;
429 real d4fdrbgagbgb , d4fdrbgagbab , d4fdrbgaabab , d4fdrbgbgbgb ;
430 real d4fdrbgbgbab , d4fdrbgbabab , d4fdrbababab , d4fdgagagaga ;
431 real d4fdgagagagb , d4fdgagagaab , d4fdgagagbgb , d4fdgagagbab ;
432 real d4fdgagaabab , d4fdgagbgbgb , d4fdgagbgbab , d4fdgagbabab ;
433 real d4fdgaababab , d4fdgbgbgbgb , d4fdgbgbgbab , d4fdgbgbabab ;
434 real d4fdgbababab , d4fdabababab ;
435 real rhoa = dp->rhoa;
436 real rhob = dp->rhob;
437 real grada = dp->grada;
438 real gradb = dp->gradb;
439 real gradab = dp->gradab;
440
441 t[1] = pow(grada,2.0);
442 t[2] = 1/pow(rhoa,2.666666666666667);
443 t[3] = 0.004*t[1]*t[2]+1.0;
444 t[4] = 1/t[3];
445 t[5] = 1/pow(rhoa,2.333333333333333);
446 t[6] = 1/pow(t[3],2.0);
447 t[7] = 0.00787*t[1]*t[2]+1.0;
448 t[8] = pow(gradb,2.0);
449 t[9] = 1/pow(rhob,2.666666666666667);
450 t[10] = 0.004*t[8]*t[9]+1.0;
451 t[11] = 1/t[10];
452 t[12] = 1/pow(rhob,2.333333333333333);
453 t[13] = 1/pow(t[10],2.0);
454 t[14] = 0.00787*t[8]*t[9]+1.0;
455 t[15] = 1/pow(rhoa,1.333333333333333);
456 t[16] = 1/pow(rhob,1.333333333333333);
457 t[17] = pow(grada,4.0);
458 t[18] = 1/pow(rhoa,6.0);
459 t[19] = 1/pow(t[3],3.0);
460 t[20] = 1/pow(rhoa,3.333333333333333);
461 t[21] = pow(grada,3.0);
462 t[22] = 1/pow(rhoa,5.0);
463 t[23] = pow(gradb,4.0);
464 t[24] = 1/pow(rhob,6.0);
465 t[25] = 1/pow(t[10],3.0);
466 t[26] = 1/pow(rhob,3.333333333333333);
467 t[27] = pow(gradb,3.0);
468 t[28] = 1/pow(rhob,5.0);
469 t[29] = 1/pow(rhoa,4.0);
470 t[30] = 1/pow(rhob,4.0);
471 t[31] = pow(grada,6.0);
472 t[32] = 1/pow(rhoa,9.666666666666666);
473 t[33] = 1/pow(t[3],4.0);
474 t[34] = 1/pow(rhoa,7.0);
475 t[35] = 1/pow(rhoa,4.333333333333333);
476 t[36] = pow(grada,5.0);
477 t[37] = 1/pow(rhoa,8.666666666666666);
478 t[38] = 1/pow(rhoa,7.666666666666667);
479 t[39] = pow(gradb,6.0);
480 t[40] = 1/pow(rhob,9.666666666666666);
481 t[41] = 1/pow(t[10],4.0);
482 t[42] = 1/pow(rhob,7.0);
483 t[43] = 1/pow(rhob,4.333333333333333);
484 t[44] = pow(gradb,5.0);
485 t[45] = 1/pow(rhob,8.666666666666666);
486 t[46] = 1/pow(rhob,7.666666666666667);
487 t[47] = 1/pow(rhoa,6.666666666666667);
488 t[48] = 1/pow(rhob,6.666666666666667);
489 t[49] = pow(grada,8.0);
490 t[50] = 1/pow(rhoa,13.33333333333333);
491 t[51] = 1/pow(t[3],5.0);
492 t[52] = 1/pow(rhoa,10.66666666666667);
493 t[53] = 1/pow(rhoa,8.0);
494 t[54] = 1/pow(rhoa,5.333333333333333);
495 t[55] = pow(grada,7.0);
496 t[56] = 1/pow(rhoa,12.33333333333333);
497 t[57] = 1/pow(rhoa,11.33333333333333);
498 t[58] = 1/pow(rhoa,10.33333333333333);
499 t[59] = pow(gradb,8.0);
500 t[60] = 1/pow(rhob,13.33333333333333);
501 t[61] = 1/pow(t[10],5.0);
502 t[62] = 1/pow(rhob,10.66666666666667);
503 t[63] = 1/pow(rhob,8.0);
504 t[64] = 1/pow(rhob,5.333333333333333);
505 t[65] = pow(gradb,7.0);
506 t[66] = 1/pow(rhob,12.33333333333333);
507 t[67] = 1/pow(rhob,11.33333333333333);
508 t[68] = 1/pow(rhob,10.33333333333333);
509 t[69] = 1/pow(rhoa,9.333333333333334);
510 t[70] = 1/pow(rhob,9.333333333333334);
511 dfdra = -1.2407009817988*t[4]*t[7]*pow(rhoa,.3333333333333333)-0.0099256078543904*t[1]*t[6]*t[7]*t[5]+.01952863345351311*t[1]*t[4]*t[5];
512 dfdrb = -1.2407009817988*t[11]*t[14]*pow(rhob,.3333333333333333)-0.0099256078543904*t[8]*t[13]*t[14]*t[12]+.01952863345351311*t[8]*t[11]*t[12];
513 dfdga = 0.0074442058907928*grada*t[6]*t[7]*t[15]-.01464647509013483*grada*t[4]*t[15];
514 dfdgb = 0.0074442058907928*gradb*t[13]*t[14]*t[16]-.01464647509013483*gradb*t[11]*t[16];
515 dfdab = 0.0;
516 d2fdrara = -.4135669939329333*t[4]*t[7]/pow(rhoa,.6666666666666666)+.009925607854390403*t[1]*t[6]*t[7]*t[20]-.01952863345351312*t[1]*t[4]*t[20]-2.1174630089366187E-4*t[17]*t[19]*t[7]*t[18]+4.166108470082797E-4*t[17]*t[6]*t[18];
517 d2fdrarb = 0.0;
518 d2fdraga = -0.0099256078543904*grada*t[6]*t[7]*t[5]+.01952863345351311*grada*t[4]*t[5]+1.588097256702464E-4*t[21]*t[19]*t[7]*t[22]-3.124581352562098E-4*t[21]*t[6]*t[22];
519 d2fdragb = 0.0;
520 d2fdraab = 0.0;
521 d2fdrbrb =-.4135669939329333*t[11]*t[14]/pow(rhob,.6666666666666666)+.009925607854390403*t[8]*t[13]*t[14]*t[26]-.01952863345351312*t[8]*t[11]*t[26]-2.1174630089366187E-4*t[23]*t[25]*t[14]*t[24]+4.166108470082797E-4*t[23]*t[13]*t[24];
522 d2fdrbga = 0.0;
523 d2fdrbgb = -0.0099256078543904*gradb*t[13]*t[14]*t[12]+.01952863345351311*gradb*t[11]*t[12]+1.588097256702464E-4*t[27]*t[25]*t[14]*t[28]-3.124581352562098E-4*t[27]*t[13]*t[28];
524 d2fdrbab = 0.0;
525 d2fdgaga = 0.0074442058907928*t[6]*t[7]*t[15]-.01464647509013483*t[4]*t[15]-1.1910729425268479E-4*t[1]*t[19]*t[7]*t[29]+2.3434360144215735E-4*t[1]*t[6]*t[29];
526 d2fdgagb = 0.0;
527 d2fdgaab = 0.0;
528 d2fdgbgb= 0.0074442058907928*t[13]*t[14]*t[16]-.01464647509013483*t[11]*t[16]-1.1910729425268479E-4*t[8]*t[25]*t[14]*t[30]+2.3434360144215735E-4*t[8]*t[13]*t[30];
529 d2fdgbab = 0.0;
530 d2fdabab =0.0;
531 d3fdrarara = .2757113292886222*t[4]*t[7]/pow(rhoa,1.666666666666667)-.03749674078325263*t[1]*t[6]*t[7]*t[35]+.07377483749104954*t[1]*t[4]*t[35]+.001482224106255633*t[17]*t[19]*t[7]*t[34]-.002916275929057958*t[17]*t[6]*t[34]-6.77588162859718E-6*t[31]*t[33]*t[7]*t[32]+1.333154710426495E-5*t[31]*t[19]*t[32];
532 d3fdrararb = 0.0;
533 d3fdraraga = .02315975166024427*grada*t[6]*t[7]*t[20]-0.0455668113915306*grada*t[4]*t[20]-.001005794929244894*t[21]*t[19]*t[7]*t[18]+.001978901523289329*t[21]*t[6]*t[18]+5.081911221447886E-6*t[36]*t[33]*t[7]*t[37]-9.998660328198714E-6*t[36]*t[19]*t[37];
534 d3fdraragb = 0.0;
535 d3fdraraab = 0.0;
536 d3fdrarbrb = 0.0;
537 d3fdrarbga = 0.0;
538 d3fdrarbgb = 0.0;
539 d3fdrarbab = 0.0;
540 d3fdragaga = -0.0099256078543904*t[6]*t[7]*t[5]+.01952863345351311*t[4]*t[5]+6.352389026809856E-4*t[1]*t[19]*t[7]*t[22]-.001249832541024839*t[1]*t[6]*t[22]-3.8114334160859137E-6*t[17]*t[33]*t[7]*t[38]+7.498995246149036E-6*t[17]*t[19]*t[38];
541 d3fdragagb = 0.0;
542 d3fdragaab = 0.0;
543 d3fdragbgb = 0.0;
544 d3fdragbab = 0.0;
545 d3fdraabab = 0.0;
546 d3fdrbrbrb = .2757113292886222*t[11]*t[14]/pow(rhob,1.666666666666667)-.03749674078325263*t[8]*t[13]*t[14]*t[43]+.07377483749104954*t[8]*t[11]*t[43]+.001482224106255633*t[23]*t[25]*t[14]*t[42]-.002916275929057958*t[23]*t[13]*t[42]+1.333154710426495E-5*t[39]*t[25]*t[40]-6.77588162859718E-6*t[39]*t[41]*t[14]*t[40];
547 d3fdrbrbga = 0.0;
548 d3fdrbrbgb = .02315975166024427*gradb*t[13]*t[14]*t[26]-0.0455668113915306*gradb*t[11]*t[26]-.001005794929244894*t[27]*t[25]*t[14]*t[24]+.001978901523289329*t[27]*t[13]*t[24]+5.081911221447886E-6*t[44]*t[41]*t[14]*t[45]-9.998660328198714E-6*t[44]*t[25]*t[45];
549 d3fdrbrbab =0.0;
550 d3fdrbgaga = 0.0;
551 d3fdrbgagb = 0.0;
552 d3fdrbgaab = 0.0;
553 d3fdrbgbgb = -0.0099256078543904*t[13]*t[14]*t[12]+.01952863345351311*t[11]*t[12]+6.352389026809856E-4*t[8]*t[25]*t[14]*t[28]-.001249832541024839*t[8]*t[13]*t[28]-3.8114334160859137E-6*t[23]*t[41]*t[14]*t[46]+7.498995246149036E-6*t[23]*t[25]*t[46];
554 d3fdrbgbab = 0.0;
555 d3fdrbabab = 0.0;
556 d3fdgagaga =-3.573218827580544E-4*grada*t[19]*t[7]*t[29]+7.030308043264719E-4*grada*t[6]*t[29]+2.858575062064435E-6*t[21]*t[33]*t[7]*t[47]-5.624246434611776E-6*t[21]*t[19]*t[47];
557 d3fdgagagb = 0.0;
558 d3fdgagaab = 0.0;
559 d3fdgagbgb = 0.0;
560 d3fdgagbab = 0.0;
561 d3fdgaabab = 0.0;
562 d3fdgbgbgb = -3.573218827580544E-4*gradb*t[25]*t[14]*t[30]+7.030308043264719E-4*gradb*t[13]*t[30]+2.858575062064435E-6*t[27]*t[41]*t[14]*t[48]-5.624246434611776E-6*t[27]*t[25]*t[48];
563 d3fdgbgbab = 0.0;
564 d3fdgbabab = 0.0;
565 d3fdababab = 0.0;
566 d4fdrararara = -.4595188821477036*t[4]*t[7]*t[2]+.1654267975731734*t[1]*t[6]*t[7]*t[54]-.3254772242252185*t[1]*t[4]*t[54]-.01117549921383215*t[17]*t[19]*t[7]*t[53]+.02198779470321477*t[17]*t[6]*t[53]+1.1293136047661967E-4*t[31]*t[33]*t[7]*t[52]-2.2219245173774915E-4*t[31]*t[19]*t[52]-2.891042828201464E-7*t[49]*t[51]*t[7]*t[50]+5.68812676448638E-7*t[49]*t[33]*t[50];
567 d4fdrarararb = 0.0;
568 d4fdrararaga = -.07719917220081424*grada*t[6]*t[7]*t[35]+0.151889371305102*grada*t[4]*t[35]+.006528844277554575*t[21]*t[19]*t[7]*t[34]-.01284550111608863*t[21]*t[6]*t[34]-7.622866832171827E-5*t[36]*t[33]*t[7]*t[32]+1.499799049229807E-4*t[36]*t[19]*t[32]+2.1682821211510975E-7*t[55]*t[51]*t[7]*t[56]-4.2660950733647846E-7*t[55]*t[33]*t[56];
569 d4fdrararagb = 0.0;
570 d4fdrararaab = 0.0;
571 d4fdrararbrb = 0.0;
572 d4fdrararbga = 0.0;
573 d4fdrararbgb = 0.0;
574 d4fdrararbab = 0.0;
575 d4fdraragaga = .02315975166024427*t[6]*t[7]*t[20]-0.0455668113915306*t[4]*t[20]-0.00338794081429859*t[1]*t[19]*t[7]*t[18]+.006665773552132477*t[1]*t[6]*t[18]+4.954863440911688E-5*t[17]*t[33]*t[7]*t[37]-9.748693819993747E-5*t[17]*t[19]*t[37]-1.6262115908633232E-7*t[31]*t[51]*t[7]*t[57]+3.1995713050235886E-7*t[31]*t[33]*t[57];
576 d4fdraragagb = 0.0;
577 d4fdraragaab = 0.0;
578 d4fdraragbgb = 0.0;
579 d4fdraragbab = 0.0;
580 d4fdraraabab = 0.0;
581 d4fdrarbrbrb = 0.0;
582 d4fdrarbrbga = 0.0;
583 d4fdrarbrbgb = 0.0;
584 d4fdrarbrbab = 0.0;
585 d4fdrarbgaga = 0.0;
586 d4fdrarbgagb= 0.0;
587 d4fdrarbgaab = 0.0;
588 d4fdrarbgbgb = 0.0;
589 d4fdrarbgbab = 0.0;
590 d4fdrarbabab =0.0;
591 d4fdragagaga = .001429287531032218*grada*t[19]*t[7]*t[22]-.002812123217305888*grada*t[6]*t[22]-3.049146732868731E-5*t[21]*t[33]*t[7]*t[38]+5.99919619691923E-5*t[21]*t[19]*t[38]+1.2196586931474923E-7*t[36]*t[51]*t[7]*t[58]-2.399678478767691E-7*t[36]*t[33]*t[58];
592 d4fdragagagb = 0.0;
593 d4fdragagaab = 0.0;
594 d4fdragagbgb = 0.0;
595 d4fdragagbab = 0.0;
596 d4fdragaabab = 0.0;
597 d4fdragbgbgb = 0.0;
598 d4fdragbgbab = 0.0;
599 d4fdragbabab = 0.0;
600 d4fdraababab = 0.0;
601 d4fdrbrbrbrb = -.4595188821477036*t[11]*t[14]*t[9]+.1654267975731734*t[8]*t[13]*t[14]*t[64]-.3254772242252185*t[8]*t[11]*t[64]-.01117549921383215*t[23]*t[25]*t[14]*t[63]+.02198779470321477*t[23]*t[13]*t[63]+1.1293136047661967E-4*t[39]*t[41]*t[14]*t[62]-2.2219245173774915E-4*t[39]*t[25]*t[62]-2.891042828201464E-7*t[59]*t[61]*t[14]*t[60]+5.68812676448638E-7*t[59]*t[41]*t[60];
602 d4fdrbrbrbga = 0.0;
603 d4fdrbrbrbgb = -.07719917220081424*gradb*t[13]*t[14]*t[43]+0.151889371305102*gradb*t[11]*t[43]+.006528844277554575*t[27]*t[25]*t[14]*t[42]-.01284550111608863*t[27]*t[13]*t[42]-7.622866832171827E-5*t[44]*t[41]*t[14]*t[40]+1.499799049229807E-4*t[44]*t[25]*t[40]+2.1682821211510975E-7*t[65]*t[61]*t[14]*t[66]-4.2660950733647846E-7*t[65]*t[41]*t[66];
604 d4fdrbrbrbab = 0.0;
605 d4fdrbrbgaga = 0.0;
606 d4fdrbrbgagb = 0.0;
607 d4fdrbrbgaab = 0.0;
608 d4fdrbrbgbgb = .02315975166024427*t[13]*t[14]*t[26]-0.0455668113915306*t[11]*t[26]-0.00338794081429859*t[8]*t[25]*t[14]*t[24]+.006665773552132477*t[8]*t[13]*t[24]+4.954863440911688E-5*t[23]*t[41]*t[14]*t[45]-9.748693819993747E-5*t[23]*t[25]*t[45]-1.6262115908633232E-7*t[39]*t[61]*t[14]*t[67]+3.1995713050235886E-7*t[39]*t[41]*t[67];
609 d4fdrbrbgbab = 0.0;
610 d4fdrbrbabab = 0.0;
611 d4fdrbgagaga = 0.0;
612 d4fdrbgagagb = 0.0;
613 d4fdrbgagaab = 0.0;
614 d4fdrbgagbgb = 0.0;
615 d4fdrbgagbab = 0.0;
616 d4fdrbgaabab = 0.0;
617 d4fdrbgbgbgb = .001429287531032218*gradb*t[25]*t[14]*t[28]-.002812123217305888*gradb*t[13]*t[28]-3.049146732868731E-5*t[27]*t[41]*t[14]*t[46]+5.99919619691923E-5*t[27]*t[25]*t[46]+1.2196586931474923E-7*t[44]*t[61]*t[14]*t[68]-2.399678478767691E-7*t[44]*t[41]*t[68];
618 d4fdrbgbgbab = 0.0;
619 d4fdrbgbabab = 0.0;
620 d4fdrbababab = 0.0;
621 d4fdgagagaga = -3.573218827580544E-4*t[19]*t[7]*t[29]+7.030308043264719E-4*t[6]*t[29]+1.715145037238661E-5*t[1]*t[33]*t[7]*t[47]-3.3745478607670654E-5*t[1]*t[19]*t[47]-9.147440198606192E-8*t[17]*t[51]*t[7]*t[69]+1.7997588590757682E-7*t[17]*t[33]*t[69];
622 d4fdgagagagb = 0.0;
623 d4fdgagagaab = 0.0;
624 d4fdgagagbgb = 0.0;
625 d4fdgagagbab = 0.0;
626 d4fdgagaabab = 0.0;
627 d4fdgagbgbgb = 0.0;
628 d4fdgagbgbab = 0.0;
629 d4fdgagbabab = 0.0;
630 d4fdgaababab = 0.0;
631 d4fdgbgbgbgb = -3.573218827580544E-4*t[25]*t[14]*t[30]+7.030308043264719E-4*t[13]*t[30]+1.715145037238661E-5*t[8]*t[41]*t[14]*t[48]-3.3745478607670654E-5*t[8]*t[25]*t[48]-9.147440198606192E-8*t[23]*t[61]*t[14]*t[70]+1.7997588590757682E-7*t[23]*t[41]*t[70];
632 d4fdgbgbgbab = 0.0;
633 d4fdgbgbabab = 0.0;
634 d4fdgbababab = 0.0;
635 d4fdabababab = 0.0;
636 ds->df1000 += factor*dfdra;
637 ds->df0100 += factor*dfdrb;
638 ds->df0010 += factor*dfdga;
639 ds->df0001 += factor*dfdgb;
640 ds->df00001 += factor*dfdab;
641 ds->df2000 += factor*d2fdrara;
642 ds->df1100 += factor*d2fdrarb;
643 ds->df1010 += factor*d2fdraga;
644 ds->df1001 += factor*d2fdragb;
645 ds->df10001 += factor*d2fdraab;
646 ds->df0200 += factor*d2fdrbrb;
647 ds->df0110 += factor*d2fdrbga;
648 ds->df0101 += factor*d2fdrbgb;
649 ds->df01001 += factor*d2fdrbab;
650 ds->df0020 += factor*d2fdgaga;
651 ds->df0011 += factor*d2fdgagb;
652 ds->df00101 += factor*d2fdgaab;
653 ds->df0002 += factor*d2fdgbgb;
654 ds->df00011 += factor*d2fdgbab;
655 ds->df00002 += factor*d2fdabab;
656 ds->df3000 += factor*d3fdrarara;
657 ds->df2100 += factor*d3fdrararb;
658 ds->df2010 += factor*d3fdraraga;
659 ds->df2001 += factor*d3fdraragb;
660 ds->df20001 += factor*d3fdraraab;
661 ds->df1200 += factor*d3fdrarbrb;
662 ds->df1110 += factor*d3fdrarbga;
663 ds->df1101 += factor*d3fdrarbgb;
664 ds->df11001 += factor*d3fdrarbab;
665 ds->df1020 += factor*d3fdragaga;
666 ds->df1011 += factor*d3fdragagb;
667 ds->df10101 += factor*d3fdragaab;
668 ds->df1002 += factor*d3fdragbgb;
669 ds->df10011 += factor*d3fdragbab;
670 ds->df10002 += factor*d3fdraabab;
671 ds->df0300 += factor*d3fdrbrbrb;
672 ds->df0210 += factor*d3fdrbrbga;
673 ds->df0201 += factor*d3fdrbrbgb;
674 ds->df02001 += factor*d3fdrbrbab;
675 ds->df0120 += factor*d3fdrbgaga;
676 ds->df0111 += factor*d3fdrbgagb;
677 ds->df01101 += factor*d3fdrbgaab;
678 ds->df0102 += factor*d3fdrbgbgb;
679 ds->df01011 += factor*d3fdrbgbab;
680 ds->df01002 += factor*d3fdrbabab;
681 ds->df0030 += factor*d3fdgagaga;
682 ds->df0021 += factor*d3fdgagagb;
683 ds->df00201 += factor*d3fdgagaab;
684 ds->df0012 += factor*d3fdgagbgb;
685 ds->df00111 += factor*d3fdgagbab;
686 ds->df00102 += factor*d3fdgaabab;
687 ds->df0003 += factor*d3fdgbgbgb;
688 ds->df00021 += factor*d3fdgbgbab;
689 ds->df00012 += factor*d3fdgbabab;
690 ds->df00003 += factor*d3fdababab;
691 ds->df4000 += factor*d4fdrararara;
692 ds->df3100 += factor*d4fdrarararb;
693 ds->df3010 += factor*d4fdrararaga;
694 ds->df3001 += factor*d4fdrararagb;
695 ds->df30001 += factor*d4fdrararaab;
696 ds->df2200 += factor*d4fdrararbrb;
697 ds->df2110 += factor*d4fdrararbga;
698 ds->df2101 += factor*d4fdrararbgb;
699 ds->df21001 += factor*d4fdrararbab;
700 ds->df2020 += factor*d4fdraragaga;
701 ds->df2011 += factor*d4fdraragagb;
702 ds->df20101 += factor*d4fdraragaab;
703 ds->df2002 += factor*d4fdraragbgb;
704 ds->df20011 += factor*d4fdraragbab;
705 ds->df20002 += factor*d4fdraraabab;
706 ds->df1300 += factor*d4fdrarbrbrb;
707 ds->df1210 += factor*d4fdrarbrbga;
708 ds->df1201 += factor*d4fdrarbrbgb;
709 ds->df12001 += factor*d4fdrarbrbab;
710 ds->df1120 += factor*d4fdrarbgaga;
711 ds->df1111 += factor*d4fdrarbgagb;
712 ds->df11101 += factor*d4fdrarbgaab;
713 ds->df1102 += factor*d4fdrarbgbgb;
714 ds->df11011 += factor*d4fdrarbgbab;
715 ds->df11002 += factor*d4fdrarbabab;
716 ds->df1030 += factor*d4fdragagaga;
717 ds->df1021 += factor*d4fdragagagb;
718 ds->df10201 += factor*d4fdragagaab;
719 ds->df1012 += factor*d4fdragagbgb;
720 ds->df10111 += factor*d4fdragagbab;
721 ds->df10102 += factor*d4fdragaabab;
722 ds->df1003 += factor*d4fdragbgbgb;
723 ds->df10021 += factor*d4fdragbgbab;
724 ds->df10012 += factor*d4fdragbabab;
725 ds->df10003 += factor*d4fdraababab;
726 ds->df0400 += factor*d4fdrbrbrbrb;
727 ds->df0310 += factor*d4fdrbrbrbga;
728 ds->df0301 += factor*d4fdrbrbrbgb;
729 ds->df03001 += factor*d4fdrbrbrbab;
730 ds->df0220 += factor*d4fdrbrbgaga;
731 ds->df0211 += factor*d4fdrbrbgagb;
732 ds->df02101 += factor*d4fdrbrbgaab;
733 ds->df0202 += factor*d4fdrbrbgbgb;
734 ds->df02011 += factor*d4fdrbrbgbab;
735 ds->df02002 += factor*d4fdrbrbabab;
736 ds->df0130 += factor*d4fdrbgagaga;
737 ds->df0121 += factor*d4fdrbgagagb;
738 ds->df01201 += factor*d4fdrbgagaab;
739 ds->df0112 += factor*d4fdrbgagbgb;
740 ds->df01111 += factor*d4fdrbgagbab;
741 ds->df01102 += factor*d4fdrbgaabab;
742 ds->df0103 += factor*d4fdrbgbgbgb;
743 ds->df01021 += factor*d4fdrbgbgbab;
744 ds->df01012 += factor*d4fdrbgbabab;
745 ds->df01003 += factor*d4fdrbababab;
746 ds->df0040 += factor*d4fdgagagaga;
747 ds->df0031 += factor*d4fdgagagagb;
748 ds->df00301 += factor*d4fdgagagaab;
749 ds->df0022 += factor*d4fdgagagbgb;
750 ds->df00211 += factor*d4fdgagagbab;
751 ds->df00202 += factor*d4fdgagaabab;
752 ds->df0013 += factor*d4fdgagbgbgb;
753 ds->df00121 += factor*d4fdgagbgbab;
754 ds->df00112 += factor*d4fdgagbabab;
755 ds->df00103 += factor*d4fdgaababab;
756 ds->df0004 += factor*d4fdgbgbgbgb;
757 ds->df00031 += factor*d4fdgbgbgbab;
758 ds->df00022 += factor*d4fdgbgbabab;
759 ds->df00013 += factor*d4fdgbababab;
760 ds->df00004 += factor*d4fdabababab;
761 }
762