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 /* <SIGMA DOT P i|OVLP |SIGMA DOT P SIGMA DOT P j> */
CINTgout1e_int1e_spspsp(double * gout,double * g,FINT * idx,CINTEnvVars * envs,FINT gout_empty)18 void CINTgout1e_int1e_spspsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
19 FINT nf = envs->nf;
20 FINT ix, iy, iz, n;
21 double *g0 = g;
22 double *g1 = g0 + envs->g_size * 3;
23 double *g2 = g1 + envs->g_size * 3;
24 double *g3 = g2 + envs->g_size * 3;
25 double *g4 = g3 + envs->g_size * 3;
26 double *g5 = g4 + envs->g_size * 3;
27 double *g6 = g5 + envs->g_size * 3;
28 double *g7 = g6 + envs->g_size * 3;
29 double s[27];
30 G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
31 G1E_D_J(g2, g0, envs->i_l+1, envs->j_l+1, 0);
32 G1E_D_J(g3, g2, envs->i_l+1, envs->j_l+0, 0);
33 G1E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0);
34 G1E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0);
35 G1E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0);
36 G1E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0);
37 for (n = 0; n < nf; n++) {
38 ix = idx[0+n*3];
39 iy = idx[1+n*3];
40 iz = idx[2+n*3];
41 s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0];
42 s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0];
43 s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0];
44 s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0];
45 s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0];
46 s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0];
47 s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0];
48 s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0];
49 s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0];
50 s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0];
51 s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0];
52 s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0];
53 s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0];
54 s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0];
55 s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0];
56 s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0];
57 s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0];
58 s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0];
59 s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0];
60 s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0];
61 s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0];
62 s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0];
63 s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0];
64 s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0];
65 s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0];
66 s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0];
67 s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0];
68 if (gout_empty) {
69 gout[n*4+0] = - s[0] - s[12] - s[24];
70 gout[n*4+1] = - s[1] - s[13] - s[25];
71 gout[n*4+2] = - s[2] - s[14] - s[26];
72 gout[n*4+3] = 0;
73 } else {
74 gout[n*4+0] += - s[0] - s[12] - s[24];
75 gout[n*4+1] += - s[1] - s[13] - s[25];
76 gout[n*4+2] += - s[2] - s[14] - s[26];
77 gout[n*4+3] += 0;
78 }}}
int1e_spspsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)79 void int1e_spspsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
80 FINT ng[] = {1, 2, 0, 0, 3, 4, 1, 1};
81 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
82 }
int1e_spspsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)83 CACHE_SIZE_T int1e_spspsp_cart(double *out, FINT *dims, FINT *shls,
84 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
85 FINT ng[] = {1, 2, 0, 0, 3, 4, 1, 1};
86 CINTEnvVars envs;
87 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
88 envs.f_gout = &CINTgout1e_int1e_spspsp;
89 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
90 } // int1e_spspsp_cart
int1e_spspsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)91 CACHE_SIZE_T int1e_spspsp_sph(double *out, FINT *dims, FINT *shls,
92 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
93 FINT ng[] = {1, 2, 0, 0, 3, 4, 1, 1};
94 CINTEnvVars envs;
95 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
96 envs.f_gout = &CINTgout1e_int1e_spspsp;
97 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
98 } // int1e_spspsp_sph
int1e_spspsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)99 CACHE_SIZE_T int1e_spspsp_spinor(double complex *out, FINT *dims, FINT *shls,
100 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
101 FINT ng[] = {1, 2, 0, 0, 3, 4, 1, 1};
102 CINTEnvVars envs;
103 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
104 envs.f_gout = &CINTgout1e_int1e_spspsp;
105 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 0);
106 } // int1e_spspsp_spinor
107 ALL_CINT1E(int1e_spspsp)
ALL_CINT1E_FORTRAN_(int1e_spspsp)108 ALL_CINT1E_FORTRAN_(int1e_spspsp)
109 /* <SIGMA DOT P i|NUC |j> */
110 void CINTgout1e_int1e_spnuc(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
111 FINT nf = envs->nf;
112 FINT nrys_roots = envs->nrys_roots;
113 FINT ix, iy, iz, n, i;
114 double *g0 = g;
115 double *g1 = g0 + envs->g_size * 3;
116 G2E_D_I(g1, g0, envs->i_l+0, envs->j_l, 0, 0);
117 double s[3];
118 for (n = 0; n < nf; n++) {
119 ix = idx[0+n*3];
120 iy = idx[1+n*3];
121 iz = idx[2+n*3];
122 for (i = 0; i < 3; i++) { s[i] = 0; }
123 for (i = 0; i < nrys_roots; i++) {
124 s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i];
125 s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i];
126 s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i];
127 }
128 if (gout_empty) {
129 gout[n*4+0] = + s[0];
130 gout[n*4+1] = + s[1];
131 gout[n*4+2] = + s[2];
132 gout[n*4+3] = 0;
133 } else {
134 gout[n*4+0] += + s[0];
135 gout[n*4+1] += + s[1];
136 gout[n*4+2] += + s[2];
137 gout[n*4+3] += 0;
138 }}}
int1e_spnuc_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)139 void int1e_spnuc_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
140 FINT ng[] = {1, 0, 0, 0, 1, 4, 0, 1};
141 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
142 }
int1e_spnuc_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)143 CACHE_SIZE_T int1e_spnuc_cart(double *out, FINT *dims, FINT *shls,
144 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
145 FINT ng[] = {1, 0, 0, 0, 1, 4, 0, 1};
146 CINTEnvVars envs;
147 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
148 envs.f_gout = &CINTgout1e_int1e_spnuc;
149 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
150 } // int1e_spnuc_cart
int1e_spnuc_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)151 CACHE_SIZE_T int1e_spnuc_sph(double *out, FINT *dims, FINT *shls,
152 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
153 FINT ng[] = {1, 0, 0, 0, 1, 4, 0, 1};
154 CINTEnvVars envs;
155 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
156 envs.f_gout = &CINTgout1e_int1e_spnuc;
157 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
158 } // int1e_spnuc_sph
int1e_spnuc_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)159 CACHE_SIZE_T int1e_spnuc_spinor(double complex *out, FINT *dims, FINT *shls,
160 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
161 FINT ng[] = {1, 0, 0, 0, 1, 4, 0, 1};
162 CINTEnvVars envs;
163 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
164 envs.f_gout = &CINTgout1e_int1e_spnuc;
165 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 2);
166 } // int1e_spnuc_spinor
167 ALL_CINT1E(int1e_spnuc)
ALL_CINT1E_FORTRAN_(int1e_spnuc)168 ALL_CINT1E_FORTRAN_(int1e_spnuc)
169 /* <k SIGMA DOT P i|R12 |j l> : i,j \in electron 1; k,l \in electron 2
170  * = (SIGMA DOT P i j|R12 |k l) */
171 void CINTgout2e_int2e_spv1(double *gout,
172 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
173 FINT nf = envs->nf;
174 FINT nrys_roots = envs->nrys_roots;
175 FINT ix, iy, iz, i, n;
176 double *g0 = g;
177 double *g1 = g0 + envs->g_size * 3;
178 G2E_D_I(g1, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
179 double s[3];
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 switch (nrys_roots) {
185 case 1:
186 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0];
187 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0];
188 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0];
189 break;
190 case 2:
191 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1];
192 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1];
193 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1];
194 break;
195 case 3:
196 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2];
197 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2];
198 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2];
199 break;
200 case 4:
201 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2]+ g1[ix+3]*g0[iy+3]*g0[iz+3];
202 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2]+ g0[ix+3]*g1[iy+3]*g0[iz+3];
203 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2]+ g0[ix+3]*g0[iy+3]*g1[iz+3];
204 break;
205 default:
206 for (i = 0; i < 3; i++) { s[i] = 0; }
207 for (i = 0; i < nrys_roots; i++) {
208 s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i];
209 s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i];
210 s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i];
211 } break;}
212 if (gout_empty) {
213 gout[n*4+0] = + s[0];
214 gout[n*4+1] = + s[1];
215 gout[n*4+2] = + s[2];
216 gout[n*4+3] = 0;
217 } else {
218 gout[n*4+0] += + s[0];
219 gout[n*4+1] += + s[1];
220 gout[n*4+2] += + s[2];
221 gout[n*4+3] += 0;
222 }}}
int2e_spv1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)223 void int2e_spv1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
224 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
225 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
226 }
int2e_spv1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)227 CACHE_SIZE_T int2e_spv1_cart(double *out, FINT *dims, FINT *shls,
228 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
229 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
230 CINTEnvVars envs;
231 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
232 envs.f_gout = &CINTgout2e_int2e_spv1;
233 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
234 } // int2e_spv1_cart
int2e_spv1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)235 CACHE_SIZE_T int2e_spv1_sph(double *out, FINT *dims, FINT *shls,
236 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
237 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
238 CINTEnvVars envs;
239 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
240 envs.f_gout = &CINTgout2e_int2e_spv1;
241 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
242 } // int2e_spv1_sph
int2e_spv1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)243 CACHE_SIZE_T int2e_spv1_spinor(double complex *out, FINT *dims, FINT *shls,
244 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
245 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
246 CINTEnvVars envs;
247 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
248 envs.f_gout = &CINTgout2e_int2e_spv1;
249 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_sf_2e2);
250 } // int2e_spv1_spinor
251 ALL_CINT(int2e_spv1)
ALL_CINT_FORTRAN_(int2e_spv1)252 ALL_CINT_FORTRAN_(int2e_spv1)
253 /* <k i|R12 |SIGMA DOT P j l> : i,j \in electron 1; k,l \in electron 2
254  * = (i SIGMA DOT P j|R12 |k l) */
255 void CINTgout2e_int2e_vsp1(double *gout,
256 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
257 FINT nf = envs->nf;
258 FINT nrys_roots = envs->nrys_roots;
259 FINT ix, iy, iz, i, n;
260 double *g0 = g;
261 double *g1 = g0 + envs->g_size * 3;
262 G2E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
263 double s[3];
264 for (n = 0; n < nf; n++) {
265 ix = idx[0+n*3];
266 iy = idx[1+n*3];
267 iz = idx[2+n*3];
268 switch (nrys_roots) {
269 case 1:
270 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0];
271 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0];
272 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0];
273 break;
274 case 2:
275 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1];
276 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1];
277 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1];
278 break;
279 case 3:
280 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2];
281 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2];
282 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2];
283 break;
284 case 4:
285 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0]+ g1[ix+1]*g0[iy+1]*g0[iz+1]+ g1[ix+2]*g0[iy+2]*g0[iz+2]+ g1[ix+3]*g0[iy+3]*g0[iz+3];
286 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0]+ g0[ix+1]*g1[iy+1]*g0[iz+1]+ g0[ix+2]*g1[iy+2]*g0[iz+2]+ g0[ix+3]*g1[iy+3]*g0[iz+3];
287 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0]+ g0[ix+1]*g0[iy+1]*g1[iz+1]+ g0[ix+2]*g0[iy+2]*g1[iz+2]+ g0[ix+3]*g0[iy+3]*g1[iz+3];
288 break;
289 default:
290 for (i = 0; i < 3; i++) { s[i] = 0; }
291 for (i = 0; i < nrys_roots; i++) {
292 s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i];
293 s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i];
294 s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i];
295 } break;}
296 if (gout_empty) {
297 gout[n*4+0] = - s[0];
298 gout[n*4+1] = - s[1];
299 gout[n*4+2] = - s[2];
300 gout[n*4+3] = 0;
301 } else {
302 gout[n*4+0] += - s[0];
303 gout[n*4+1] += - s[1];
304 gout[n*4+2] += - s[2];
305 gout[n*4+3] += 0;
306 }}}
int2e_vsp1_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)307 void int2e_vsp1_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
308 FINT ng[] = {0, 1, 0, 0, 1, 4, 1, 1};
309 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
310 }
int2e_vsp1_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)311 CACHE_SIZE_T int2e_vsp1_cart(double *out, FINT *dims, FINT *shls,
312 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
313 FINT ng[] = {0, 1, 0, 0, 1, 4, 1, 1};
314 CINTEnvVars envs;
315 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
316 envs.f_gout = &CINTgout2e_int2e_vsp1;
317 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
318 } // int2e_vsp1_cart
int2e_vsp1_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)319 CACHE_SIZE_T int2e_vsp1_sph(double *out, FINT *dims, FINT *shls,
320 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
321 FINT ng[] = {0, 1, 0, 0, 1, 4, 1, 1};
322 CINTEnvVars envs;
323 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
324 envs.f_gout = &CINTgout2e_int2e_vsp1;
325 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
326 } // int2e_vsp1_sph
int2e_vsp1_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)327 CACHE_SIZE_T int2e_vsp1_spinor(double complex *out, FINT *dims, FINT *shls,
328 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
329 FINT ng[] = {0, 1, 0, 0, 1, 4, 1, 1};
330 CINTEnvVars envs;
331 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
332 envs.f_gout = &CINTgout2e_int2e_vsp1;
333 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_sf_2e2);
334 } // int2e_vsp1_spinor
335 ALL_CINT(int2e_vsp1)
ALL_CINT_FORTRAN_(int2e_vsp1)336 ALL_CINT_FORTRAN_(int2e_vsp1)
337 /* <SIGMA DOT P k i|R12 |j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
338  * = (i j|R12 |SIGMA DOT P k SIGMA DOT P l) */
339 void CINTgout2e_int2e_spsp2(double *gout,
340 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
341 FINT nf = envs->nf;
342 FINT nrys_roots = envs->nrys_roots;
343 FINT ix, iy, iz, i, n;
344 double *g0 = g;
345 double *g1 = g0 + envs->g_size * 3;
346 double *g2 = g1 + envs->g_size * 3;
347 double *g3 = g2 + envs->g_size * 3;
348 G2E_D_L(g1, g0, envs->i_l+0, envs->j_l+0, envs->k_l+1, envs->l_l+0);
349 G2E_D_K(g2, g0, envs->i_l+0, envs->j_l+0, envs->k_l+0, envs->l_l);
350 G2E_D_K(g3, g1, envs->i_l+0, envs->j_l+0, envs->k_l+0, envs->l_l);
351 double s[9];
352 for (n = 0; n < nf; n++) {
353 ix = idx[0+n*3];
354 iy = idx[1+n*3];
355 iz = idx[2+n*3];
356 for (i = 0; i < 9; i++) { s[i] = 0; }
357 for (i = 0; i < nrys_roots; i++) {
358 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
359 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
360 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
361 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
362 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
363 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
364 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
365 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
366 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
367 }
368 if (gout_empty) {
369 gout[n*4+0] = + s[5] - s[7];
370 gout[n*4+1] = + s[6] - s[2];
371 gout[n*4+2] = + s[1] - s[3];
372 gout[n*4+3] = + s[0] + s[4] + s[8];
373 } else {
374 gout[n*4+0] += + s[5] - s[7];
375 gout[n*4+1] += + s[6] - s[2];
376 gout[n*4+2] += + s[1] - s[3];
377 gout[n*4+3] += + s[0] + s[4] + s[8];
378 }}}
int2e_spsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)379 void int2e_spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
380 FINT ng[] = {0, 0, 1, 1, 2, 1, 4, 1};
381 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
382 }
int2e_spsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)383 CACHE_SIZE_T int2e_spsp2_cart(double *out, FINT *dims, FINT *shls,
384 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
385 FINT ng[] = {0, 0, 1, 1, 2, 1, 4, 1};
386 CINTEnvVars envs;
387 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
388 envs.f_gout = &CINTgout2e_int2e_spsp2;
389 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
390 } // int2e_spsp2_cart
int2e_spsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)391 CACHE_SIZE_T int2e_spsp2_sph(double *out, FINT *dims, FINT *shls,
392 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
393 FINT ng[] = {0, 0, 1, 1, 2, 1, 4, 1};
394 CINTEnvVars envs;
395 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
396 envs.f_gout = &CINTgout2e_int2e_spsp2;
397 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
398 } // int2e_spsp2_sph
int2e_spsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)399 CACHE_SIZE_T int2e_spsp2_spinor(double complex *out, FINT *dims, FINT *shls,
400 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
401 FINT ng[] = {0, 0, 1, 1, 2, 1, 4, 1};
402 CINTEnvVars envs;
403 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
404 envs.f_gout = &CINTgout2e_int2e_spsp2;
405 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_2e1, &c2s_si_2e2);
406 } // int2e_spsp2_spinor
407 ALL_CINT(int2e_spsp2)
ALL_CINT_FORTRAN_(int2e_spsp2)408 ALL_CINT_FORTRAN_(int2e_spsp2)
409 /* <SIGMA DOT P k SIGMA DOT P i|R12 |j l> : i,j \in electron 1; k,l \in electron 2
410  * = (SIGMA DOT P i j|R12 |SIGMA DOT P k l) */
411 void CINTgout2e_int2e_spv1spv2(double *gout,
412 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
413 FINT nf = envs->nf;
414 FINT nrys_roots = envs->nrys_roots;
415 FINT ix, iy, iz, i, n;
416 double *g0 = g;
417 double *g1 = g0 + envs->g_size * 3;
418 double *g2 = g1 + envs->g_size * 3;
419 double *g3 = g2 + envs->g_size * 3;
420 G2E_D_K(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l);
421 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
422 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
423 double s[9];
424 for (n = 0; n < nf; n++) {
425 ix = idx[0+n*3];
426 iy = idx[1+n*3];
427 iz = idx[2+n*3];
428 for (i = 0; i < 9; i++) { s[i] = 0; }
429 for (i = 0; i < nrys_roots; i++) {
430 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
431 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
432 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
433 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
434 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
435 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
436 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
437 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
438 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
439 }
440 if (gout_empty) {
441 gout[n*16+0] = + s[0];
442 gout[n*16+1] = + s[3];
443 gout[n*16+2] = + s[6];
444 gout[n*16+3] = 0;
445 gout[n*16+4] = + s[1];
446 gout[n*16+5] = + s[4];
447 gout[n*16+6] = + s[7];
448 gout[n*16+7] = 0;
449 gout[n*16+8] = + s[2];
450 gout[n*16+9] = + s[5];
451 gout[n*16+10] = + s[8];
452 gout[n*16+11] = 0;
453 gout[n*16+12] = 0;
454 gout[n*16+13] = 0;
455 gout[n*16+14] = 0;
456 gout[n*16+15] = 0;
457 } else {
458 gout[n*16+0] += + s[0];
459 gout[n*16+1] += + s[3];
460 gout[n*16+2] += + s[6];
461 gout[n*16+3] += 0;
462 gout[n*16+4] += + s[1];
463 gout[n*16+5] += + s[4];
464 gout[n*16+6] += + s[7];
465 gout[n*16+7] += 0;
466 gout[n*16+8] += + s[2];
467 gout[n*16+9] += + s[5];
468 gout[n*16+10] += + s[8];
469 gout[n*16+11] += 0;
470 gout[n*16+12] += 0;
471 gout[n*16+13] += 0;
472 gout[n*16+14] += 0;
473 gout[n*16+15] += 0;
474 }}}
int2e_spv1spv2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)475 void int2e_spv1spv2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
476 FINT ng[] = {1, 0, 1, 0, 2, 4, 4, 1};
477 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
478 }
int2e_spv1spv2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)479 CACHE_SIZE_T int2e_spv1spv2_cart(double *out, FINT *dims, FINT *shls,
480 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
481 FINT ng[] = {1, 0, 1, 0, 2, 4, 4, 1};
482 CINTEnvVars envs;
483 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
484 envs.f_gout = &CINTgout2e_int2e_spv1spv2;
485 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
486 } // int2e_spv1spv2_cart
int2e_spv1spv2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)487 CACHE_SIZE_T int2e_spv1spv2_sph(double *out, FINT *dims, FINT *shls,
488 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
489 FINT ng[] = {1, 0, 1, 0, 2, 4, 4, 1};
490 CINTEnvVars envs;
491 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
492 envs.f_gout = &CINTgout2e_int2e_spv1spv2;
493 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
494 } // int2e_spv1spv2_sph
int2e_spv1spv2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)495 CACHE_SIZE_T int2e_spv1spv2_spinor(double complex *out, FINT *dims, FINT *shls,
496 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
497 FINT ng[] = {1, 0, 1, 0, 2, 4, 4, 1};
498 CINTEnvVars envs;
499 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
500 envs.f_gout = &CINTgout2e_int2e_spv1spv2;
501 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2);
502 } // int2e_spv1spv2_spinor
503 ALL_CINT(int2e_spv1spv2)
ALL_CINT_FORTRAN_(int2e_spv1spv2)504 ALL_CINT_FORTRAN_(int2e_spv1spv2)
505 /* <SIGMA DOT P k i|R12 |SIGMA DOT P j l> : i,j \in electron 1; k,l \in electron 2
506  * = (i SIGMA DOT P j|R12 |SIGMA DOT P k l) */
507 void CINTgout2e_int2e_vsp1spv2(double *gout,
508 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
509 FINT nf = envs->nf;
510 FINT nrys_roots = envs->nrys_roots;
511 FINT ix, iy, iz, i, n;
512 double *g0 = g;
513 double *g1 = g0 + envs->g_size * 3;
514 double *g2 = g1 + envs->g_size * 3;
515 double *g3 = g2 + envs->g_size * 3;
516 G2E_D_K(g1, g0, envs->i_l+0, envs->j_l+1, envs->k_l+0, envs->l_l);
517 G2E_D_J(g2, g0, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
518 G2E_D_J(g3, g1, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
519 double s[9];
520 for (n = 0; n < nf; n++) {
521 ix = idx[0+n*3];
522 iy = idx[1+n*3];
523 iz = idx[2+n*3];
524 for (i = 0; i < 9; i++) { s[i] = 0; }
525 for (i = 0; i < nrys_roots; i++) {
526 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
527 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
528 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
529 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
530 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
531 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
532 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
533 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
534 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
535 }
536 if (gout_empty) {
537 gout[n*16+0] = - s[0];
538 gout[n*16+1] = - s[3];
539 gout[n*16+2] = - s[6];
540 gout[n*16+3] = 0;
541 gout[n*16+4] = - s[1];
542 gout[n*16+5] = - s[4];
543 gout[n*16+6] = - s[7];
544 gout[n*16+7] = 0;
545 gout[n*16+8] = - s[2];
546 gout[n*16+9] = - s[5];
547 gout[n*16+10] = - s[8];
548 gout[n*16+11] = 0;
549 gout[n*16+12] = 0;
550 gout[n*16+13] = 0;
551 gout[n*16+14] = 0;
552 gout[n*16+15] = 0;
553 } else {
554 gout[n*16+0] += - s[0];
555 gout[n*16+1] += - s[3];
556 gout[n*16+2] += - s[6];
557 gout[n*16+3] += 0;
558 gout[n*16+4] += - s[1];
559 gout[n*16+5] += - s[4];
560 gout[n*16+6] += - s[7];
561 gout[n*16+7] += 0;
562 gout[n*16+8] += - s[2];
563 gout[n*16+9] += - s[5];
564 gout[n*16+10] += - s[8];
565 gout[n*16+11] += 0;
566 gout[n*16+12] += 0;
567 gout[n*16+13] += 0;
568 gout[n*16+14] += 0;
569 gout[n*16+15] += 0;
570 }}}
int2e_vsp1spv2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)571 void int2e_vsp1spv2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
572 FINT ng[] = {0, 1, 1, 0, 2, 4, 4, 1};
573 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
574 }
int2e_vsp1spv2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)575 CACHE_SIZE_T int2e_vsp1spv2_cart(double *out, FINT *dims, FINT *shls,
576 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
577 FINT ng[] = {0, 1, 1, 0, 2, 4, 4, 1};
578 CINTEnvVars envs;
579 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
580 envs.f_gout = &CINTgout2e_int2e_vsp1spv2;
581 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
582 } // int2e_vsp1spv2_cart
int2e_vsp1spv2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)583 CACHE_SIZE_T int2e_vsp1spv2_sph(double *out, FINT *dims, FINT *shls,
584 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
585 FINT ng[] = {0, 1, 1, 0, 2, 4, 4, 1};
586 CINTEnvVars envs;
587 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
588 envs.f_gout = &CINTgout2e_int2e_vsp1spv2;
589 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
590 } // int2e_vsp1spv2_sph
int2e_vsp1spv2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)591 CACHE_SIZE_T int2e_vsp1spv2_spinor(double complex *out, FINT *dims, FINT *shls,
592 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
593 FINT ng[] = {0, 1, 1, 0, 2, 4, 4, 1};
594 CINTEnvVars envs;
595 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
596 envs.f_gout = &CINTgout2e_int2e_vsp1spv2;
597 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2);
598 } // int2e_vsp1spv2_spinor
599 ALL_CINT(int2e_vsp1spv2)
ALL_CINT_FORTRAN_(int2e_vsp1spv2)600 ALL_CINT_FORTRAN_(int2e_vsp1spv2)
601 /* <k SIGMA DOT P i|R12 |j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
602  * = (SIGMA DOT P i j|R12 |k SIGMA DOT P l) */
603 void CINTgout2e_int2e_spv1vsp2(double *gout,
604 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
605 FINT nf = envs->nf;
606 FINT nrys_roots = envs->nrys_roots;
607 FINT ix, iy, iz, i, n;
608 double *g0 = g;
609 double *g1 = g0 + envs->g_size * 3;
610 double *g2 = g1 + envs->g_size * 3;
611 double *g3 = g2 + envs->g_size * 3;
612 G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l+0);
613 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
614 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
615 double s[9];
616 for (n = 0; n < nf; n++) {
617 ix = idx[0+n*3];
618 iy = idx[1+n*3];
619 iz = idx[2+n*3];
620 for (i = 0; i < 9; i++) { s[i] = 0; }
621 for (i = 0; i < nrys_roots; i++) {
622 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
623 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
624 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
625 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
626 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
627 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
628 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
629 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
630 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
631 }
632 if (gout_empty) {
633 gout[n*16+0] = - s[0];
634 gout[n*16+1] = - s[3];
635 gout[n*16+2] = - s[6];
636 gout[n*16+3] = 0;
637 gout[n*16+4] = - s[1];
638 gout[n*16+5] = - s[4];
639 gout[n*16+6] = - s[7];
640 gout[n*16+7] = 0;
641 gout[n*16+8] = - s[2];
642 gout[n*16+9] = - s[5];
643 gout[n*16+10] = - s[8];
644 gout[n*16+11] = 0;
645 gout[n*16+12] = 0;
646 gout[n*16+13] = 0;
647 gout[n*16+14] = 0;
648 gout[n*16+15] = 0;
649 } else {
650 gout[n*16+0] += - s[0];
651 gout[n*16+1] += - s[3];
652 gout[n*16+2] += - s[6];
653 gout[n*16+3] += 0;
654 gout[n*16+4] += - s[1];
655 gout[n*16+5] += - s[4];
656 gout[n*16+6] += - s[7];
657 gout[n*16+7] += 0;
658 gout[n*16+8] += - s[2];
659 gout[n*16+9] += - s[5];
660 gout[n*16+10] += - s[8];
661 gout[n*16+11] += 0;
662 gout[n*16+12] += 0;
663 gout[n*16+13] += 0;
664 gout[n*16+14] += 0;
665 gout[n*16+15] += 0;
666 }}}
int2e_spv1vsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)667 void int2e_spv1vsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
668 FINT ng[] = {1, 0, 0, 1, 2, 4, 4, 1};
669 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
670 }
int2e_spv1vsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)671 CACHE_SIZE_T int2e_spv1vsp2_cart(double *out, FINT *dims, FINT *shls,
672 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
673 FINT ng[] = {1, 0, 0, 1, 2, 4, 4, 1};
674 CINTEnvVars envs;
675 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
676 envs.f_gout = &CINTgout2e_int2e_spv1vsp2;
677 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
678 } // int2e_spv1vsp2_cart
int2e_spv1vsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)679 CACHE_SIZE_T int2e_spv1vsp2_sph(double *out, FINT *dims, FINT *shls,
680 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
681 FINT ng[] = {1, 0, 0, 1, 2, 4, 4, 1};
682 CINTEnvVars envs;
683 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
684 envs.f_gout = &CINTgout2e_int2e_spv1vsp2;
685 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
686 } // int2e_spv1vsp2_sph
int2e_spv1vsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)687 CACHE_SIZE_T int2e_spv1vsp2_spinor(double complex *out, FINT *dims, FINT *shls,
688 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
689 FINT ng[] = {1, 0, 0, 1, 2, 4, 4, 1};
690 CINTEnvVars envs;
691 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
692 envs.f_gout = &CINTgout2e_int2e_spv1vsp2;
693 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2);
694 } // int2e_spv1vsp2_spinor
695 ALL_CINT(int2e_spv1vsp2)
ALL_CINT_FORTRAN_(int2e_spv1vsp2)696 ALL_CINT_FORTRAN_(int2e_spv1vsp2)
697 /* <k i|R12 |SIGMA DOT P j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
698  * = (i SIGMA DOT P j|R12 |k SIGMA DOT P l) */
699 void CINTgout2e_int2e_vsp1vsp2(double *gout,
700 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
701 FINT nf = envs->nf;
702 FINT nrys_roots = envs->nrys_roots;
703 FINT ix, iy, iz, i, n;
704 double *g0 = g;
705 double *g1 = g0 + envs->g_size * 3;
706 double *g2 = g1 + envs->g_size * 3;
707 double *g3 = g2 + envs->g_size * 3;
708 G2E_D_L(g1, g0, envs->i_l+0, envs->j_l+1, envs->k_l+0, envs->l_l+0);
709 G2E_D_J(g2, g0, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
710 G2E_D_J(g3, g1, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
711 double s[9];
712 for (n = 0; n < nf; n++) {
713 ix = idx[0+n*3];
714 iy = idx[1+n*3];
715 iz = idx[2+n*3];
716 for (i = 0; i < 9; i++) { s[i] = 0; }
717 for (i = 0; i < nrys_roots; i++) {
718 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
719 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
720 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
721 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
722 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
723 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
724 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
725 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
726 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
727 }
728 if (gout_empty) {
729 gout[n*16+0] = + s[0];
730 gout[n*16+1] = + s[3];
731 gout[n*16+2] = + s[6];
732 gout[n*16+3] = 0;
733 gout[n*16+4] = + s[1];
734 gout[n*16+5] = + s[4];
735 gout[n*16+6] = + s[7];
736 gout[n*16+7] = 0;
737 gout[n*16+8] = + s[2];
738 gout[n*16+9] = + s[5];
739 gout[n*16+10] = + s[8];
740 gout[n*16+11] = 0;
741 gout[n*16+12] = 0;
742 gout[n*16+13] = 0;
743 gout[n*16+14] = 0;
744 gout[n*16+15] = 0;
745 } else {
746 gout[n*16+0] += + s[0];
747 gout[n*16+1] += + s[3];
748 gout[n*16+2] += + s[6];
749 gout[n*16+3] += 0;
750 gout[n*16+4] += + s[1];
751 gout[n*16+5] += + s[4];
752 gout[n*16+6] += + s[7];
753 gout[n*16+7] += 0;
754 gout[n*16+8] += + s[2];
755 gout[n*16+9] += + s[5];
756 gout[n*16+10] += + s[8];
757 gout[n*16+11] += 0;
758 gout[n*16+12] += 0;
759 gout[n*16+13] += 0;
760 gout[n*16+14] += 0;
761 gout[n*16+15] += 0;
762 }}}
int2e_vsp1vsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)763 void int2e_vsp1vsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
764 FINT ng[] = {0, 1, 0, 1, 2, 4, 4, 1};
765 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
766 }
int2e_vsp1vsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)767 CACHE_SIZE_T int2e_vsp1vsp2_cart(double *out, FINT *dims, FINT *shls,
768 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
769 FINT ng[] = {0, 1, 0, 1, 2, 4, 4, 1};
770 CINTEnvVars envs;
771 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
772 envs.f_gout = &CINTgout2e_int2e_vsp1vsp2;
773 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
774 } // int2e_vsp1vsp2_cart
int2e_vsp1vsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)775 CACHE_SIZE_T int2e_vsp1vsp2_sph(double *out, FINT *dims, FINT *shls,
776 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
777 FINT ng[] = {0, 1, 0, 1, 2, 4, 4, 1};
778 CINTEnvVars envs;
779 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
780 envs.f_gout = &CINTgout2e_int2e_vsp1vsp2;
781 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
782 } // int2e_vsp1vsp2_sph
int2e_vsp1vsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)783 CACHE_SIZE_T int2e_vsp1vsp2_spinor(double complex *out, FINT *dims, FINT *shls,
784 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
785 FINT ng[] = {0, 1, 0, 1, 2, 4, 4, 1};
786 CINTEnvVars envs;
787 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
788 envs.f_gout = &CINTgout2e_int2e_vsp1vsp2;
789 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2);
790 } // int2e_vsp1vsp2_spinor
791 ALL_CINT(int2e_vsp1vsp2)
ALL_CINT_FORTRAN_(int2e_vsp1vsp2)792 ALL_CINT_FORTRAN_(int2e_vsp1vsp2)
793 /* <SIGMA DOT P k SIGMA DOT P i|R12 |j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
794  * = (SIGMA DOT P i j|R12 |SIGMA DOT P k SIGMA DOT P l) */
795 void CINTgout2e_int2e_spv1spsp2(double *gout,
796 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
797 FINT nf = envs->nf;
798 FINT nrys_roots = envs->nrys_roots;
799 FINT ix, iy, iz, i, n;
800 double *g0 = g;
801 double *g1 = g0 + envs->g_size * 3;
802 double *g2 = g1 + envs->g_size * 3;
803 double *g3 = g2 + envs->g_size * 3;
804 double *g4 = g3 + envs->g_size * 3;
805 double *g5 = g4 + envs->g_size * 3;
806 double *g6 = g5 + envs->g_size * 3;
807 double *g7 = g6 + envs->g_size * 3;
808 G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+0, envs->k_l+1, envs->l_l+0);
809 G2E_D_K(g2, g0, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l);
810 G2E_D_K(g3, g1, envs->i_l+1, envs->j_l+0, envs->k_l+0, envs->l_l);
811 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
812 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
813 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
814 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, envs->k_l, envs->l_l);
815 double s[27];
816 for (n = 0; n < nf; n++) {
817 ix = idx[0+n*3];
818 iy = idx[1+n*3];
819 iz = idx[2+n*3];
820 for (i = 0; i < 27; i++) { s[i] = 0; }
821 for (i = 0; i < nrys_roots; i++) {
822 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
823 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
824 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
825 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
826 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
827 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
828 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
829 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
830 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
831 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
832 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
833 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
834 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
835 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
836 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
837 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
838 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
839 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
840 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
841 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
842 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
843 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
844 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
845 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
846 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
847 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
848 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
849 }
850 if (gout_empty) {
851 gout[n*16+0] = + s[5] - s[7];
852 gout[n*16+1] = + s[14] - s[16];
853 gout[n*16+2] = + s[23] - s[25];
854 gout[n*16+3] = 0;
855 gout[n*16+4] = + s[6] - s[2];
856 gout[n*16+5] = + s[15] - s[11];
857 gout[n*16+6] = + s[24] - s[20];
858 gout[n*16+7] = 0;
859 gout[n*16+8] = + s[1] - s[3];
860 gout[n*16+9] = + s[10] - s[12];
861 gout[n*16+10] = + s[19] - s[21];
862 gout[n*16+11] = 0;
863 gout[n*16+12] = + s[0] + s[4] + s[8];
864 gout[n*16+13] = + s[9] + s[13] + s[17];
865 gout[n*16+14] = + s[18] + s[22] + s[26];
866 gout[n*16+15] = 0;
867 } else {
868 gout[n*16+0] += + s[5] - s[7];
869 gout[n*16+1] += + s[14] - s[16];
870 gout[n*16+2] += + s[23] - s[25];
871 gout[n*16+3] += 0;
872 gout[n*16+4] += + s[6] - s[2];
873 gout[n*16+5] += + s[15] - s[11];
874 gout[n*16+6] += + s[24] - s[20];
875 gout[n*16+7] += 0;
876 gout[n*16+8] += + s[1] - s[3];
877 gout[n*16+9] += + s[10] - s[12];
878 gout[n*16+10] += + s[19] - s[21];
879 gout[n*16+11] += 0;
880 gout[n*16+12] += + s[0] + s[4] + s[8];
881 gout[n*16+13] += + s[9] + s[13] + s[17];
882 gout[n*16+14] += + s[18] + s[22] + s[26];
883 gout[n*16+15] += 0;
884 }}}
int2e_spv1spsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)885 void int2e_spv1spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
886 FINT ng[] = {1, 0, 1, 1, 3, 4, 4, 1};
887 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
888 }
int2e_spv1spsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)889 CACHE_SIZE_T int2e_spv1spsp2_cart(double *out, FINT *dims, FINT *shls,
890 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
891 FINT ng[] = {1, 0, 1, 1, 3, 4, 4, 1};
892 CINTEnvVars envs;
893 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
894 envs.f_gout = &CINTgout2e_int2e_spv1spsp2;
895 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
896 } // int2e_spv1spsp2_cart
int2e_spv1spsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)897 CACHE_SIZE_T int2e_spv1spsp2_sph(double *out, FINT *dims, FINT *shls,
898 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
899 FINT ng[] = {1, 0, 1, 1, 3, 4, 4, 1};
900 CINTEnvVars envs;
901 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
902 envs.f_gout = &CINTgout2e_int2e_spv1spsp2;
903 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
904 } // int2e_spv1spsp2_sph
int2e_spv1spsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)905 CACHE_SIZE_T int2e_spv1spsp2_spinor(double complex *out, FINT *dims, FINT *shls,
906 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
907 FINT ng[] = {1, 0, 1, 1, 3, 4, 4, 1};
908 CINTEnvVars envs;
909 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
910 envs.f_gout = &CINTgout2e_int2e_spv1spsp2;
911 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2);
912 } // int2e_spv1spsp2_spinor
913 ALL_CINT(int2e_spv1spsp2)
ALL_CINT_FORTRAN_(int2e_spv1spsp2)914 ALL_CINT_FORTRAN_(int2e_spv1spsp2)
915 /* <SIGMA DOT P k i|R12 |SIGMA DOT P j SIGMA DOT P l> : i,j \in electron 1; k,l \in electron 2
916  * = (i SIGMA DOT P j|R12 |SIGMA DOT P k SIGMA DOT P l) */
917 void CINTgout2e_int2e_vsp1spsp2(double *gout,
918 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
919 FINT nf = envs->nf;
920 FINT nrys_roots = envs->nrys_roots;
921 FINT ix, iy, iz, i, n;
922 double *g0 = g;
923 double *g1 = g0 + envs->g_size * 3;
924 double *g2 = g1 + envs->g_size * 3;
925 double *g3 = g2 + envs->g_size * 3;
926 double *g4 = g3 + envs->g_size * 3;
927 double *g5 = g4 + envs->g_size * 3;
928 double *g6 = g5 + envs->g_size * 3;
929 double *g7 = g6 + envs->g_size * 3;
930 G2E_D_L(g1, g0, envs->i_l+0, envs->j_l+1, envs->k_l+1, envs->l_l+0);
931 G2E_D_K(g2, g0, envs->i_l+0, envs->j_l+1, envs->k_l+0, envs->l_l);
932 G2E_D_K(g3, g1, envs->i_l+0, envs->j_l+1, envs->k_l+0, envs->l_l);
933 G2E_D_J(g4, g0, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
934 G2E_D_J(g5, g1, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
935 G2E_D_J(g6, g2, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
936 G2E_D_J(g7, g3, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
937 double s[27];
938 for (n = 0; n < nf; n++) {
939 ix = idx[0+n*3];
940 iy = idx[1+n*3];
941 iz = idx[2+n*3];
942 for (i = 0; i < 27; i++) { s[i] = 0; }
943 for (i = 0; i < nrys_roots; i++) {
944 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
945 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
946 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
947 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
948 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
949 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
950 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
951 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
952 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
953 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
954 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
955 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
956 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
957 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
958 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
959 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
960 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
961 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
962 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
963 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
964 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
965 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
966 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
967 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
968 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
969 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
970 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
971 }
972 if (gout_empty) {
973 gout[n*16+0] = - s[5] + s[7];
974 gout[n*16+1] = - s[14] + s[16];
975 gout[n*16+2] = - s[23] + s[25];
976 gout[n*16+3] = 0;
977 gout[n*16+4] = - s[6] + s[2];
978 gout[n*16+5] = - s[15] + s[11];
979 gout[n*16+6] = - s[24] + s[20];
980 gout[n*16+7] = 0;
981 gout[n*16+8] = - s[1] + s[3];
982 gout[n*16+9] = - s[10] + s[12];
983 gout[n*16+10] = - s[19] + s[21];
984 gout[n*16+11] = 0;
985 gout[n*16+12] = - s[0] - s[4] - s[8];
986 gout[n*16+13] = - s[9] - s[13] - s[17];
987 gout[n*16+14] = - s[18] - s[22] - s[26];
988 gout[n*16+15] = 0;
989 } else {
990 gout[n*16+0] += - s[5] + s[7];
991 gout[n*16+1] += - s[14] + s[16];
992 gout[n*16+2] += - s[23] + s[25];
993 gout[n*16+3] += 0;
994 gout[n*16+4] += - s[6] + s[2];
995 gout[n*16+5] += - s[15] + s[11];
996 gout[n*16+6] += - s[24] + s[20];
997 gout[n*16+7] += 0;
998 gout[n*16+8] += - s[1] + s[3];
999 gout[n*16+9] += - s[10] + s[12];
1000 gout[n*16+10] += - s[19] + s[21];
1001 gout[n*16+11] += 0;
1002 gout[n*16+12] += - s[0] - s[4] - s[8];
1003 gout[n*16+13] += - s[9] - s[13] - s[17];
1004 gout[n*16+14] += - s[18] - s[22] - s[26];
1005 gout[n*16+15] += 0;
1006 }}}
int2e_vsp1spsp2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1007 void int2e_vsp1spsp2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1008 FINT ng[] = {0, 1, 1, 1, 3, 4, 4, 1};
1009 CINTall_2e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1010 }
int2e_vsp1spsp2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1011 CACHE_SIZE_T int2e_vsp1spsp2_cart(double *out, FINT *dims, FINT *shls,
1012 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1013 FINT ng[] = {0, 1, 1, 1, 3, 4, 4, 1};
1014 CINTEnvVars envs;
1015 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1016 envs.f_gout = &CINTgout2e_int2e_vsp1spsp2;
1017 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_cart_2e1);
1018 } // int2e_vsp1spsp2_cart
int2e_vsp1spsp2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1019 CACHE_SIZE_T int2e_vsp1spsp2_sph(double *out, FINT *dims, FINT *shls,
1020 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1021 FINT ng[] = {0, 1, 1, 1, 3, 4, 4, 1};
1022 CINTEnvVars envs;
1023 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1024 envs.f_gout = &CINTgout2e_int2e_vsp1spsp2;
1025 return CINT2e_drv(out, dims, &envs, opt, cache, &c2s_sph_2e1);
1026 } // int2e_vsp1spsp2_sph
int2e_vsp1spsp2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1027 CACHE_SIZE_T int2e_vsp1spsp2_spinor(double complex *out, FINT *dims, FINT *shls,
1028 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1029 FINT ng[] = {0, 1, 1, 1, 3, 4, 4, 1};
1030 CINTEnvVars envs;
1031 CINTinit_int2e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1032 envs.f_gout = &CINTgout2e_int2e_vsp1spsp2;
1033 return CINT2e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_2e1, &c2s_si_2e2);
1034 } // int2e_vsp1spsp2_spinor
1035 ALL_CINT(int2e_vsp1spsp2)
1036 ALL_CINT_FORTRAN_(int2e_vsp1spsp2)
1037