1 /*
2  * Copyright (C) 2013-  Qiming Sun <osirpt.sun@gmail.com>
3  * Description: code generated by  gen-code.cl
4  */
5 #include <stdlib.h>
6 #include <stdio.h>
7 #include "cint_bas.h"
8 #include "cart2sph.h"
9 #include "g1e.h"
10 #include "g1e_grids.h"
11 #include "g2e.h"
12 #include "optimizer.h"
13 #include "cint1e.h"
14 #include "cint2e.h"
15 #include "misc.h"
16 #include "c2f.h"
17 /* <NABLA NABLA NABLA i|NUC |j> */
CINTgout1e_int1e_ipipipnuc(double * gout,double * g,FINT * idx,CINTEnvVars * envs,FINT gout_empty)18 void CINTgout1e_int1e_ipipipnuc(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
19 FINT nf = envs->nf;
20 FINT nrys_roots = envs->nrys_roots;
21 FINT ix, iy, iz, n, i;
22 double *g0 = g;
23 double *g1 = g0 + envs->g_size * 3;
24 double *g2 = g1 + envs->g_size * 3;
25 double *g3 = g2 + envs->g_size * 3;
26 double *g4 = g3 + envs->g_size * 3;
27 double *g5 = g4 + envs->g_size * 3;
28 double *g6 = g5 + envs->g_size * 3;
29 double *g7 = g6 + envs->g_size * 3;
30 G2E_D_I(g1, g0, envs->i_l+2, envs->j_l, 0, 0);
31 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0);
32 G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0);
33 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0);
34 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0);
35 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0);
36 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0);
37 double s[27];
38 for (n = 0; n < nf; n++) {
39 ix = idx[0+n*3];
40 iy = idx[1+n*3];
41 iz = idx[2+n*3];
42 for (i = 0; i < 27; i++) { s[i] = 0; }
43 for (i = 0; i < nrys_roots; i++) {
44 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
45 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
46 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
47 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
48 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
49 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
50 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
51 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
52 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
53 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
54 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
55 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
56 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
57 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
58 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
59 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
60 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
61 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
62 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
63 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
64 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
65 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
66 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
67 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
68 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
69 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
70 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
71 }
72 if (gout_empty) {
73 gout[n*27+0] = + s[0];
74 gout[n*27+1] = + s[9];
75 gout[n*27+2] = + s[18];
76 gout[n*27+3] = + s[3];
77 gout[n*27+4] = + s[12];
78 gout[n*27+5] = + s[21];
79 gout[n*27+6] = + s[6];
80 gout[n*27+7] = + s[15];
81 gout[n*27+8] = + s[24];
82 gout[n*27+9] = + s[1];
83 gout[n*27+10] = + s[10];
84 gout[n*27+11] = + s[19];
85 gout[n*27+12] = + s[4];
86 gout[n*27+13] = + s[13];
87 gout[n*27+14] = + s[22];
88 gout[n*27+15] = + s[7];
89 gout[n*27+16] = + s[16];
90 gout[n*27+17] = + s[25];
91 gout[n*27+18] = + s[2];
92 gout[n*27+19] = + s[11];
93 gout[n*27+20] = + s[20];
94 gout[n*27+21] = + s[5];
95 gout[n*27+22] = + s[14];
96 gout[n*27+23] = + s[23];
97 gout[n*27+24] = + s[8];
98 gout[n*27+25] = + s[17];
99 gout[n*27+26] = + s[26];
100 } else {
101 gout[n*27+0] += + s[0];
102 gout[n*27+1] += + s[9];
103 gout[n*27+2] += + s[18];
104 gout[n*27+3] += + s[3];
105 gout[n*27+4] += + s[12];
106 gout[n*27+5] += + s[21];
107 gout[n*27+6] += + s[6];
108 gout[n*27+7] += + s[15];
109 gout[n*27+8] += + s[24];
110 gout[n*27+9] += + s[1];
111 gout[n*27+10] += + s[10];
112 gout[n*27+11] += + s[19];
113 gout[n*27+12] += + s[4];
114 gout[n*27+13] += + s[13];
115 gout[n*27+14] += + s[22];
116 gout[n*27+15] += + s[7];
117 gout[n*27+16] += + s[16];
118 gout[n*27+17] += + s[25];
119 gout[n*27+18] += + s[2];
120 gout[n*27+19] += + s[11];
121 gout[n*27+20] += + s[20];
122 gout[n*27+21] += + s[5];
123 gout[n*27+22] += + s[14];
124 gout[n*27+23] += + s[23];
125 gout[n*27+24] += + s[8];
126 gout[n*27+25] += + s[17];
127 gout[n*27+26] += + s[26];
128 }}}
int1e_ipipipnuc_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)129 void int1e_ipipipnuc_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
130 FINT ng[] = {3, 0, 0, 0, 3, 1, 0, 27};
131 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
132 }
int1e_ipipipnuc_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)133 CACHE_SIZE_T int1e_ipipipnuc_cart(double *out, FINT *dims, FINT *shls,
134 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
135 FINT ng[] = {3, 0, 0, 0, 3, 1, 0, 27};
136 CINTEnvVars envs;
137 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
138 envs.f_gout = &CINTgout1e_int1e_ipipipnuc;
139 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
140 } // int1e_ipipipnuc_cart
int1e_ipipipnuc_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)141 CACHE_SIZE_T int1e_ipipipnuc_sph(double *out, FINT *dims, FINT *shls,
142 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
143 FINT ng[] = {3, 0, 0, 0, 3, 1, 0, 27};
144 CINTEnvVars envs;
145 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
146 envs.f_gout = &CINTgout1e_int1e_ipipipnuc;
147 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
148 } // int1e_ipipipnuc_sph
int1e_ipipipnuc_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)149 CACHE_SIZE_T int1e_ipipipnuc_spinor(double complex *out, FINT *dims, FINT *shls,
150 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
151 FINT ng[] = {3, 0, 0, 0, 3, 1, 0, 27};
152 CINTEnvVars envs;
153 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
154 envs.f_gout = &CINTgout1e_int1e_ipipipnuc;
155 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2);
156 } // int1e_ipipipnuc_spinor
157 ALL_CINT1E(int1e_ipipipnuc)
ALL_CINT1E_FORTRAN_(int1e_ipipipnuc)158 ALL_CINT1E_FORTRAN_(int1e_ipipipnuc)
159 /* <NABLA NABLA NABLA i|RINV |j> */
160 void CINTgout1e_int1e_ipipiprinv(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
161 FINT nf = envs->nf;
162 FINT nrys_roots = envs->nrys_roots;
163 FINT ix, iy, iz, n, i;
164 double *g0 = g;
165 double *g1 = g0 + envs->g_size * 3;
166 double *g2 = g1 + envs->g_size * 3;
167 double *g3 = g2 + envs->g_size * 3;
168 double *g4 = g3 + envs->g_size * 3;
169 double *g5 = g4 + envs->g_size * 3;
170 double *g6 = g5 + envs->g_size * 3;
171 double *g7 = g6 + envs->g_size * 3;
172 G2E_D_I(g1, g0, envs->i_l+2, envs->j_l, 0, 0);
173 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0);
174 G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0);
175 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0);
176 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0);
177 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0);
178 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0);
179 double s[27];
180 for (n = 0; n < nf; n++) {
181 ix = idx[0+n*3];
182 iy = idx[1+n*3];
183 iz = idx[2+n*3];
184 for (i = 0; i < 27; i++) { s[i] = 0; }
185 for (i = 0; i < nrys_roots; i++) {
186 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
187 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
188 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
189 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
190 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
191 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
192 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
193 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
194 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
195 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
196 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
197 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
198 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
199 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
200 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
201 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
202 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
203 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
204 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
205 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
206 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
207 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
208 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
209 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
210 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
211 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
212 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
213 }
214 if (gout_empty) {
215 gout[n*27+0] = + s[0];
216 gout[n*27+1] = + s[9];
217 gout[n*27+2] = + s[18];
218 gout[n*27+3] = + s[3];
219 gout[n*27+4] = + s[12];
220 gout[n*27+5] = + s[21];
221 gout[n*27+6] = + s[6];
222 gout[n*27+7] = + s[15];
223 gout[n*27+8] = + s[24];
224 gout[n*27+9] = + s[1];
225 gout[n*27+10] = + s[10];
226 gout[n*27+11] = + s[19];
227 gout[n*27+12] = + s[4];
228 gout[n*27+13] = + s[13];
229 gout[n*27+14] = + s[22];
230 gout[n*27+15] = + s[7];
231 gout[n*27+16] = + s[16];
232 gout[n*27+17] = + s[25];
233 gout[n*27+18] = + s[2];
234 gout[n*27+19] = + s[11];
235 gout[n*27+20] = + s[20];
236 gout[n*27+21] = + s[5];
237 gout[n*27+22] = + s[14];
238 gout[n*27+23] = + s[23];
239 gout[n*27+24] = + s[8];
240 gout[n*27+25] = + s[17];
241 gout[n*27+26] = + s[26];
242 } else {
243 gout[n*27+0] += + s[0];
244 gout[n*27+1] += + s[9];
245 gout[n*27+2] += + s[18];
246 gout[n*27+3] += + s[3];
247 gout[n*27+4] += + s[12];
248 gout[n*27+5] += + s[21];
249 gout[n*27+6] += + s[6];
250 gout[n*27+7] += + s[15];
251 gout[n*27+8] += + s[24];
252 gout[n*27+9] += + s[1];
253 gout[n*27+10] += + s[10];
254 gout[n*27+11] += + s[19];
255 gout[n*27+12] += + s[4];
256 gout[n*27+13] += + s[13];
257 gout[n*27+14] += + s[22];
258 gout[n*27+15] += + s[7];
259 gout[n*27+16] += + s[16];
260 gout[n*27+17] += + s[25];
261 gout[n*27+18] += + s[2];
262 gout[n*27+19] += + s[11];
263 gout[n*27+20] += + s[20];
264 gout[n*27+21] += + s[5];
265 gout[n*27+22] += + s[14];
266 gout[n*27+23] += + s[23];
267 gout[n*27+24] += + s[8];
268 gout[n*27+25] += + s[17];
269 gout[n*27+26] += + s[26];
270 }}}
int1e_ipipiprinv_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)271 void int1e_ipipiprinv_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
272 FINT ng[] = {3, 0, 0, 0, 3, 1, 0, 27};
273 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
274 }
int1e_ipipiprinv_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)275 CACHE_SIZE_T int1e_ipipiprinv_cart(double *out, FINT *dims, FINT *shls,
276 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
277 FINT ng[] = {3, 0, 0, 0, 3, 1, 0, 27};
278 CINTEnvVars envs;
279 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
280 envs.f_gout = &CINTgout1e_int1e_ipipiprinv;
281 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
282 } // int1e_ipipiprinv_cart
int1e_ipipiprinv_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)283 CACHE_SIZE_T int1e_ipipiprinv_sph(double *out, FINT *dims, FINT *shls,
284 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
285 FINT ng[] = {3, 0, 0, 0, 3, 1, 0, 27};
286 CINTEnvVars envs;
287 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
288 envs.f_gout = &CINTgout1e_int1e_ipipiprinv;
289 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
290 } // int1e_ipipiprinv_sph
int1e_ipipiprinv_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)291 CACHE_SIZE_T int1e_ipipiprinv_spinor(double complex *out, FINT *dims, FINT *shls,
292 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
293 FINT ng[] = {3, 0, 0, 0, 3, 1, 0, 27};
294 CINTEnvVars envs;
295 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
296 envs.f_gout = &CINTgout1e_int1e_ipipiprinv;
297 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1);
298 } // int1e_ipipiprinv_spinor
299 ALL_CINT1E(int1e_ipipiprinv)
ALL_CINT1E_FORTRAN_(int1e_ipipiprinv)300 ALL_CINT1E_FORTRAN_(int1e_ipipiprinv)
301 /* <NABLA NABLA i|NUC |NABLA j> */
302 void CINTgout1e_int1e_ipipnucip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
303 FINT nf = envs->nf;
304 FINT nrys_roots = envs->nrys_roots;
305 FINT ix, iy, iz, n, i;
306 double *g0 = g;
307 double *g1 = g0 + envs->g_size * 3;
308 double *g2 = g1 + envs->g_size * 3;
309 double *g3 = g2 + envs->g_size * 3;
310 double *g4 = g3 + envs->g_size * 3;
311 double *g5 = g4 + envs->g_size * 3;
312 double *g6 = g5 + envs->g_size * 3;
313 double *g7 = g6 + envs->g_size * 3;
314 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
315 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0);
316 G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0);
317 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0);
318 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0);
319 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0);
320 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0);
321 double s[27];
322 for (n = 0; n < nf; n++) {
323 ix = idx[0+n*3];
324 iy = idx[1+n*3];
325 iz = idx[2+n*3];
326 for (i = 0; i < 27; i++) { s[i] = 0; }
327 for (i = 0; i < nrys_roots; i++) {
328 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
329 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
330 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
331 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
332 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
333 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
334 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
335 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
336 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
337 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
338 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
339 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
340 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
341 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
342 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
343 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
344 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
345 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
346 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
347 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
348 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
349 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
350 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
351 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
352 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
353 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
354 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
355 }
356 if (gout_empty) {
357 gout[n*27+0] = + s[0];
358 gout[n*27+1] = + s[1];
359 gout[n*27+2] = + s[2];
360 gout[n*27+3] = + s[9];
361 gout[n*27+4] = + s[10];
362 gout[n*27+5] = + s[11];
363 gout[n*27+6] = + s[18];
364 gout[n*27+7] = + s[19];
365 gout[n*27+8] = + s[20];
366 gout[n*27+9] = + s[3];
367 gout[n*27+10] = + s[4];
368 gout[n*27+11] = + s[5];
369 gout[n*27+12] = + s[12];
370 gout[n*27+13] = + s[13];
371 gout[n*27+14] = + s[14];
372 gout[n*27+15] = + s[21];
373 gout[n*27+16] = + s[22];
374 gout[n*27+17] = + s[23];
375 gout[n*27+18] = + s[6];
376 gout[n*27+19] = + s[7];
377 gout[n*27+20] = + s[8];
378 gout[n*27+21] = + s[15];
379 gout[n*27+22] = + s[16];
380 gout[n*27+23] = + s[17];
381 gout[n*27+24] = + s[24];
382 gout[n*27+25] = + s[25];
383 gout[n*27+26] = + s[26];
384 } else {
385 gout[n*27+0] += + s[0];
386 gout[n*27+1] += + s[1];
387 gout[n*27+2] += + s[2];
388 gout[n*27+3] += + s[9];
389 gout[n*27+4] += + s[10];
390 gout[n*27+5] += + s[11];
391 gout[n*27+6] += + s[18];
392 gout[n*27+7] += + s[19];
393 gout[n*27+8] += + s[20];
394 gout[n*27+9] += + s[3];
395 gout[n*27+10] += + s[4];
396 gout[n*27+11] += + s[5];
397 gout[n*27+12] += + s[12];
398 gout[n*27+13] += + s[13];
399 gout[n*27+14] += + s[14];
400 gout[n*27+15] += + s[21];
401 gout[n*27+16] += + s[22];
402 gout[n*27+17] += + s[23];
403 gout[n*27+18] += + s[6];
404 gout[n*27+19] += + s[7];
405 gout[n*27+20] += + s[8];
406 gout[n*27+21] += + s[15];
407 gout[n*27+22] += + s[16];
408 gout[n*27+23] += + s[17];
409 gout[n*27+24] += + s[24];
410 gout[n*27+25] += + s[25];
411 gout[n*27+26] += + s[26];
412 }}}
int1e_ipipnucip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)413 void int1e_ipipnucip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
414 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 27};
415 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
416 }
int1e_ipipnucip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)417 CACHE_SIZE_T int1e_ipipnucip_cart(double *out, FINT *dims, FINT *shls,
418 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
419 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 27};
420 CINTEnvVars envs;
421 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
422 envs.f_gout = &CINTgout1e_int1e_ipipnucip;
423 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
424 } // int1e_ipipnucip_cart
int1e_ipipnucip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)425 CACHE_SIZE_T int1e_ipipnucip_sph(double *out, FINT *dims, FINT *shls,
426 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
427 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 27};
428 CINTEnvVars envs;
429 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
430 envs.f_gout = &CINTgout1e_int1e_ipipnucip;
431 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
432 } // int1e_ipipnucip_sph
int1e_ipipnucip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)433 CACHE_SIZE_T int1e_ipipnucip_spinor(double complex *out, FINT *dims, FINT *shls,
434 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
435 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 27};
436 CINTEnvVars envs;
437 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
438 envs.f_gout = &CINTgout1e_int1e_ipipnucip;
439 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2);
440 } // int1e_ipipnucip_spinor
441 ALL_CINT1E(int1e_ipipnucip)
ALL_CINT1E_FORTRAN_(int1e_ipipnucip)442 ALL_CINT1E_FORTRAN_(int1e_ipipnucip)
443 /* <NABLA NABLA i|RINV |NABLA j> */
444 void CINTgout1e_int1e_ipiprinvip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
445 FINT nf = envs->nf;
446 FINT nrys_roots = envs->nrys_roots;
447 FINT ix, iy, iz, n, i;
448 double *g0 = g;
449 double *g1 = g0 + envs->g_size * 3;
450 double *g2 = g1 + envs->g_size * 3;
451 double *g3 = g2 + envs->g_size * 3;
452 double *g4 = g3 + envs->g_size * 3;
453 double *g5 = g4 + envs->g_size * 3;
454 double *g6 = g5 + envs->g_size * 3;
455 double *g7 = g6 + envs->g_size * 3;
456 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
457 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0);
458 G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0);
459 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0);
460 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0);
461 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0);
462 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0);
463 double s[27];
464 for (n = 0; n < nf; n++) {
465 ix = idx[0+n*3];
466 iy = idx[1+n*3];
467 iz = idx[2+n*3];
468 for (i = 0; i < 27; i++) { s[i] = 0; }
469 for (i = 0; i < nrys_roots; i++) {
470 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
471 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
472 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
473 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
474 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
475 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
476 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
477 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
478 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
479 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
480 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
481 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
482 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
483 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
484 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
485 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
486 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
487 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
488 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
489 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
490 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
491 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
492 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
493 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
494 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
495 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
496 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
497 }
498 if (gout_empty) {
499 gout[n*27+0] = + s[0];
500 gout[n*27+1] = + s[1];
501 gout[n*27+2] = + s[2];
502 gout[n*27+3] = + s[9];
503 gout[n*27+4] = + s[10];
504 gout[n*27+5] = + s[11];
505 gout[n*27+6] = + s[18];
506 gout[n*27+7] = + s[19];
507 gout[n*27+8] = + s[20];
508 gout[n*27+9] = + s[3];
509 gout[n*27+10] = + s[4];
510 gout[n*27+11] = + s[5];
511 gout[n*27+12] = + s[12];
512 gout[n*27+13] = + s[13];
513 gout[n*27+14] = + s[14];
514 gout[n*27+15] = + s[21];
515 gout[n*27+16] = + s[22];
516 gout[n*27+17] = + s[23];
517 gout[n*27+18] = + s[6];
518 gout[n*27+19] = + s[7];
519 gout[n*27+20] = + s[8];
520 gout[n*27+21] = + s[15];
521 gout[n*27+22] = + s[16];
522 gout[n*27+23] = + s[17];
523 gout[n*27+24] = + s[24];
524 gout[n*27+25] = + s[25];
525 gout[n*27+26] = + s[26];
526 } else {
527 gout[n*27+0] += + s[0];
528 gout[n*27+1] += + s[1];
529 gout[n*27+2] += + s[2];
530 gout[n*27+3] += + s[9];
531 gout[n*27+4] += + s[10];
532 gout[n*27+5] += + s[11];
533 gout[n*27+6] += + s[18];
534 gout[n*27+7] += + s[19];
535 gout[n*27+8] += + s[20];
536 gout[n*27+9] += + s[3];
537 gout[n*27+10] += + s[4];
538 gout[n*27+11] += + s[5];
539 gout[n*27+12] += + s[12];
540 gout[n*27+13] += + s[13];
541 gout[n*27+14] += + s[14];
542 gout[n*27+15] += + s[21];
543 gout[n*27+16] += + s[22];
544 gout[n*27+17] += + s[23];
545 gout[n*27+18] += + s[6];
546 gout[n*27+19] += + s[7];
547 gout[n*27+20] += + s[8];
548 gout[n*27+21] += + s[15];
549 gout[n*27+22] += + s[16];
550 gout[n*27+23] += + s[17];
551 gout[n*27+24] += + s[24];
552 gout[n*27+25] += + s[25];
553 gout[n*27+26] += + s[26];
554 }}}
int1e_ipiprinvip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)555 void int1e_ipiprinvip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
556 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 27};
557 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
558 }
int1e_ipiprinvip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)559 CACHE_SIZE_T int1e_ipiprinvip_cart(double *out, FINT *dims, FINT *shls,
560 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
561 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 27};
562 CINTEnvVars envs;
563 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
564 envs.f_gout = &CINTgout1e_int1e_ipiprinvip;
565 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
566 } // int1e_ipiprinvip_cart
int1e_ipiprinvip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)567 CACHE_SIZE_T int1e_ipiprinvip_sph(double *out, FINT *dims, FINT *shls,
568 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
569 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 27};
570 CINTEnvVars envs;
571 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
572 envs.f_gout = &CINTgout1e_int1e_ipiprinvip;
573 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
574 } // int1e_ipiprinvip_sph
int1e_ipiprinvip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)575 CACHE_SIZE_T int1e_ipiprinvip_spinor(double complex *out, FINT *dims, FINT *shls,
576 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
577 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 27};
578 CINTEnvVars envs;
579 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
580 envs.f_gout = &CINTgout1e_int1e_ipiprinvip;
581 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1);
582 } // int1e_ipiprinvip_spinor
583 ALL_CINT1E(int1e_ipiprinvip)
584 ALL_CINT1E_FORTRAN_(int1e_ipiprinvip)
585