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 /* <i|OVLP |SIGMA j> */
CINTgout1e_int1e_sigma(double * gout,double * g,FINT * idx,CINTEnvVars * envs,FINT gout_empty)18 void CINTgout1e_int1e_sigma(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 s[1];
23 for (n = 0; n < nf; n++) {
24 ix = idx[0+n*3];
25 iy = idx[1+n*3];
26 iz = idx[2+n*3];
27 s[0] = + g0[ix+0]*g0[iy+0]*g0[iz+0];
28 if (gout_empty) {
29 gout[n*12+0] = - s[0];
30 gout[n*12+1] = 0;
31 gout[n*12+2] = 0;
32 gout[n*12+3] = 0;
33 gout[n*12+4] = 0;
34 gout[n*12+5] = - s[0];
35 gout[n*12+6] = 0;
36 gout[n*12+7] = 0;
37 gout[n*12+8] = 0;
38 gout[n*12+9] = 0;
39 gout[n*12+10] = - s[0];
40 gout[n*12+11] = 0;
41 } else {
42 gout[n*12+0] += - s[0];
43 gout[n*12+1] += 0;
44 gout[n*12+2] += 0;
45 gout[n*12+3] += 0;
46 gout[n*12+4] += 0;
47 gout[n*12+5] += - s[0];
48 gout[n*12+6] += 0;
49 gout[n*12+7] += 0;
50 gout[n*12+8] += 0;
51 gout[n*12+9] += 0;
52 gout[n*12+10] += - s[0];
53 gout[n*12+11] += 0;
54 }}}
int1e_sigma_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)55 void int1e_sigma_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
56 FINT ng[] = {0, 0, 0, 0, 0, 4, 1, 3};
57 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
58 }
int1e_sigma_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)59 CACHE_SIZE_T int1e_sigma_cart(double *out, FINT *dims, FINT *shls,
60 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
61 FINT ng[] = {0, 0, 0, 0, 0, 4, 1, 3};
62 CINTEnvVars envs;
63 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
64 envs.f_gout = &CINTgout1e_int1e_sigma;
65 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
66 } // int1e_sigma_cart
int1e_sigma_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)67 CACHE_SIZE_T int1e_sigma_sph(double *out, FINT *dims, FINT *shls,
68 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
69 FINT ng[] = {0, 0, 0, 0, 0, 4, 1, 3};
70 CINTEnvVars envs;
71 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
72 envs.f_gout = &CINTgout1e_int1e_sigma;
73 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
74 } // int1e_sigma_sph
int1e_sigma_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)75 CACHE_SIZE_T int1e_sigma_spinor(double complex *out, FINT *dims, FINT *shls,
76 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
77 FINT ng[] = {0, 0, 0, 0, 0, 4, 1, 3};
78 CINTEnvVars envs;
79 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
80 envs.f_gout = &CINTgout1e_int1e_sigma;
81 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1ei, 0);
82 } // int1e_sigma_spinor
83 ALL_CINT1E(int1e_sigma)
ALL_CINT1E_FORTRAN_(int1e_sigma)84 ALL_CINT1E_FORTRAN_(int1e_sigma)
85 /* <SIGMA DOT P i|OVLP |SIGMA SIGMA DOT P j> */
86 void CINTgout1e_int1e_spsigmasp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
87 FINT nf = envs->nf;
88 FINT ix, iy, iz, n;
89 double *g0 = g;
90 double *g1 = g0 + envs->g_size * 3;
91 double *g2 = g1 + envs->g_size * 3;
92 double *g3 = g2 + envs->g_size * 3;
93 double s[9];
94 G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
95 G1E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0);
96 G1E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0);
97 for (n = 0; n < nf; n++) {
98 ix = idx[0+n*3];
99 iy = idx[1+n*3];
100 iz = idx[2+n*3];
101 s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0];
102 s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0];
103 s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0];
104 s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0];
105 s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0];
106 s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0];
107 s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0];
108 s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0];
109 s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0];
110 if (gout_empty) {
111 gout[n*12+0] = - s[0] + s[8] + s[4];
112 gout[n*12+1] = -2*s[3];
113 gout[n*12+2] = -2*s[6];
114 gout[n*12+3] = 0;
115 gout[n*12+4] = -2*s[1];
116 gout[n*12+5] = - s[4] + s[0] + s[8];
117 gout[n*12+6] = -2*s[7];
118 gout[n*12+7] = 0;
119 gout[n*12+8] = -2*s[2];
120 gout[n*12+9] = -2*s[5];
121 gout[n*12+10] = - s[8] + s[4] + s[0];
122 gout[n*12+11] = 0;
123 } else {
124 gout[n*12+0] += - s[0] + s[8] + s[4];
125 gout[n*12+1] += -2*s[3];
126 gout[n*12+2] += -2*s[6];
127 gout[n*12+3] += 0;
128 gout[n*12+4] += -2*s[1];
129 gout[n*12+5] += - s[4] + s[0] + s[8];
130 gout[n*12+6] += -2*s[7];
131 gout[n*12+7] += 0;
132 gout[n*12+8] += -2*s[2];
133 gout[n*12+9] += -2*s[5];
134 gout[n*12+10] += - s[8] + s[4] + s[0];
135 gout[n*12+11] += 0;
136 }}}
int1e_spsigmasp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)137 void int1e_spsigmasp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
138 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
139 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
140 }
int1e_spsigmasp_cart(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_spsigmasp_cart(double *out, FINT *dims, FINT *shls,
142 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
143 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
144 CINTEnvVars envs;
145 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
146 envs.f_gout = &CINTgout1e_int1e_spsigmasp;
147 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
148 } // int1e_spsigmasp_cart
int1e_spsigmasp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)149 CACHE_SIZE_T int1e_spsigmasp_sph(double *out, FINT *dims, FINT *shls,
150 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
151 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
152 CINTEnvVars envs;
153 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
154 envs.f_gout = &CINTgout1e_int1e_spsigmasp;
155 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
156 } // int1e_spsigmasp_sph
int1e_spsigmasp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)157 CACHE_SIZE_T int1e_spsigmasp_spinor(double complex *out, FINT *dims, FINT *shls,
158 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
159 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
160 CINTEnvVars envs;
161 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
162 envs.f_gout = &CINTgout1e_int1e_spsigmasp;
163 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1ei, 0);
164 } // int1e_spsigmasp_spinor
165 ALL_CINT1E(int1e_spsigmasp)
ALL_CINT1E_FORTRAN_(int1e_spsigmasp)166 ALL_CINT1E_FORTRAN_(int1e_spsigmasp)
167 /* <SIGMA DOT R i|OVLP |SIGMA DOT R j> */
168 void CINTgout1e_int1e_srsr(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
169 FINT nf = envs->nf;
170 FINT ix, iy, iz, n;
171 double *g0 = g;
172 double *g1 = g0 + envs->g_size * 3;
173 double *g2 = g1 + envs->g_size * 3;
174 double *g3 = g2 + envs->g_size * 3;
175 double s[9];
176 G1E_R_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
177 G1E_R_I(g2, g0, envs->i_l+0, envs->j_l, 0);
178 G1E_R_I(g3, g1, envs->i_l+0, envs->j_l, 0);
179 for (n = 0; n < nf; n++) {
180 ix = idx[0+n*3];
181 iy = idx[1+n*3];
182 iz = idx[2+n*3];
183 s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0];
184 s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0];
185 s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0];
186 s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0];
187 s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0];
188 s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0];
189 s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0];
190 s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0];
191 s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0];
192 if (gout_empty) {
193 gout[n*4+0] = + s[5] - s[7];
194 gout[n*4+1] = + s[6] - s[2];
195 gout[n*4+2] = + s[1] - s[3];
196 gout[n*4+3] = + s[0] + s[4] + s[8];
197 } else {
198 gout[n*4+0] += + s[5] - s[7];
199 gout[n*4+1] += + s[6] - s[2];
200 gout[n*4+2] += + s[1] - s[3];
201 gout[n*4+3] += + s[0] + s[4] + s[8];
202 }}}
int1e_srsr_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)203 void int1e_srsr_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
204 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
205 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
206 }
int1e_srsr_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)207 CACHE_SIZE_T int1e_srsr_cart(double *out, FINT *dims, FINT *shls,
208 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
209 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
210 CINTEnvVars envs;
211 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
212 envs.f_gout = &CINTgout1e_int1e_srsr;
213 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
214 } // int1e_srsr_cart
int1e_srsr_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)215 CACHE_SIZE_T int1e_srsr_sph(double *out, FINT *dims, FINT *shls,
216 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
217 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
218 CINTEnvVars envs;
219 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
220 envs.f_gout = &CINTgout1e_int1e_srsr;
221 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
222 } // int1e_srsr_sph
int1e_srsr_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)223 CACHE_SIZE_T int1e_srsr_spinor(double complex *out, FINT *dims, FINT *shls,
224 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
225 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
226 CINTEnvVars envs;
227 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
228 envs.f_gout = &CINTgout1e_int1e_srsr;
229 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 0);
230 } // int1e_srsr_spinor
231 ALL_CINT1E(int1e_srsr)
ALL_CINT1E_FORTRAN_(int1e_srsr)232 ALL_CINT1E_FORTRAN_(int1e_srsr)
233 /* <SIGMA DOT R i|OVLP |j> */
234 void CINTgout1e_int1e_sr(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
235 FINT nf = envs->nf;
236 FINT ix, iy, iz, n;
237 double *g0 = g;
238 double *g1 = g0 + envs->g_size * 3;
239 double s[3];
240 G1E_R_I(g1, g0, envs->i_l+0, envs->j_l, 0);
241 for (n = 0; n < nf; n++) {
242 ix = idx[0+n*3];
243 iy = idx[1+n*3];
244 iz = idx[2+n*3];
245 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0];
246 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0];
247 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0];
248 if (gout_empty) {
249 gout[n*4+0] = - s[0];
250 gout[n*4+1] = - s[1];
251 gout[n*4+2] = - s[2];
252 gout[n*4+3] = 0;
253 } else {
254 gout[n*4+0] += - s[0];
255 gout[n*4+1] += - s[1];
256 gout[n*4+2] += - s[2];
257 gout[n*4+3] += 0;
258 }}}
int1e_sr_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)259 void int1e_sr_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
260 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
261 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
262 }
int1e_sr_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)263 CACHE_SIZE_T int1e_sr_cart(double *out, FINT *dims, FINT *shls,
264 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
265 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
266 CINTEnvVars envs;
267 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
268 envs.f_gout = &CINTgout1e_int1e_sr;
269 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
270 } // int1e_sr_cart
int1e_sr_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)271 CACHE_SIZE_T int1e_sr_sph(double *out, FINT *dims, FINT *shls,
272 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
273 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
274 CINTEnvVars envs;
275 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
276 envs.f_gout = &CINTgout1e_int1e_sr;
277 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
278 } // int1e_sr_sph
int1e_sr_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)279 CACHE_SIZE_T int1e_sr_spinor(double complex *out, FINT *dims, FINT *shls,
280 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
281 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
282 CINTEnvVars envs;
283 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
284 envs.f_gout = &CINTgout1e_int1e_sr;
285 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1ei, 0);
286 } // int1e_sr_spinor
287 ALL_CINT1E(int1e_sr)
ALL_CINT1E_FORTRAN_(int1e_sr)288 ALL_CINT1E_FORTRAN_(int1e_sr)
289 /* <SIGMA DOT R i|OVLP |SIGMA DOT P j> */
290 void CINTgout1e_int1e_srsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
291 FINT nf = envs->nf;
292 FINT ix, iy, iz, n;
293 double *g0 = g;
294 double *g1 = g0 + envs->g_size * 3;
295 double *g2 = g1 + envs->g_size * 3;
296 double *g3 = g2 + envs->g_size * 3;
297 double s[9];
298 G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
299 G1E_R_I(g2, g0, envs->i_l+0, envs->j_l, 0);
300 G1E_R_I(g3, g1, envs->i_l+0, envs->j_l, 0);
301 for (n = 0; n < nf; n++) {
302 ix = idx[0+n*3];
303 iy = idx[1+n*3];
304 iz = idx[2+n*3];
305 s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0];
306 s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0];
307 s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0];
308 s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0];
309 s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0];
310 s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0];
311 s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0];
312 s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0];
313 s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0];
314 if (gout_empty) {
315 gout[n*4+0] = - s[5] + s[7];
316 gout[n*4+1] = - s[6] + s[2];
317 gout[n*4+2] = - s[1] + s[3];
318 gout[n*4+3] = - s[0] - s[4] - s[8];
319 } else {
320 gout[n*4+0] += - s[5] + s[7];
321 gout[n*4+1] += - s[6] + s[2];
322 gout[n*4+2] += - s[1] + s[3];
323 gout[n*4+3] += - s[0] - s[4] - s[8];
324 }}}
int1e_srsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)325 void int1e_srsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
326 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
327 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
328 }
int1e_srsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)329 CACHE_SIZE_T int1e_srsp_cart(double *out, FINT *dims, FINT *shls,
330 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
331 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
332 CINTEnvVars envs;
333 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
334 envs.f_gout = &CINTgout1e_int1e_srsp;
335 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
336 } // int1e_srsp_cart
int1e_srsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)337 CACHE_SIZE_T int1e_srsp_sph(double *out, FINT *dims, FINT *shls,
338 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
339 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
340 CINTEnvVars envs;
341 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
342 envs.f_gout = &CINTgout1e_int1e_srsp;
343 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
344 } // int1e_srsp_sph
int1e_srsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)345 CACHE_SIZE_T int1e_srsp_spinor(double complex *out, FINT *dims, FINT *shls,
346 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
347 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 1};
348 CINTEnvVars envs;
349 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
350 envs.f_gout = &CINTgout1e_int1e_srsp;
351 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1ei, 0);
352 } // int1e_srsp_spinor
353 ALL_CINT1E(int1e_srsp)
ALL_CINT1E_FORTRAN_(int1e_srsp)354 ALL_CINT1E_FORTRAN_(int1e_srsp)
355 /* <SIGMA DOT P i|OVLP |SIGMA DOT P j> */
356 void CINTgout1e_int1e_spsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
357 FINT nf = envs->nf;
358 FINT ix, iy, iz, n;
359 double *g0 = g;
360 double *g1 = g0 + envs->g_size * 3;
361 double *g2 = g1 + envs->g_size * 3;
362 double *g3 = g2 + envs->g_size * 3;
363 double s[9];
364 G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
365 G1E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0);
366 G1E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0);
367 for (n = 0; n < nf; n++) {
368 ix = idx[0+n*3];
369 iy = idx[1+n*3];
370 iz = idx[2+n*3];
371 s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0];
372 s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0];
373 s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0];
374 s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0];
375 s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0];
376 s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0];
377 s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0];
378 s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0];
379 s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0];
380 if (gout_empty) {
381 gout[n*1+0] = + s[0] + s[4] + s[8];
382 } else {
383 gout[n*1+0] += + s[0] + s[4] + s[8];
384 }}}
int1e_spsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)385 void int1e_spsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
386 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 1};
387 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
388 }
int1e_spsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)389 CACHE_SIZE_T int1e_spsp_cart(double *out, FINT *dims, FINT *shls,
390 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
391 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 1};
392 CINTEnvVars envs;
393 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
394 envs.f_gout = &CINTgout1e_int1e_spsp;
395 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
396 } // int1e_spsp_cart
int1e_spsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)397 CACHE_SIZE_T int1e_spsp_sph(double *out, FINT *dims, FINT *shls,
398 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
399 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 1};
400 CINTEnvVars envs;
401 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
402 envs.f_gout = &CINTgout1e_int1e_spsp;
403 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
404 } // int1e_spsp_sph
int1e_spsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)405 CACHE_SIZE_T int1e_spsp_spinor(double complex *out, FINT *dims, FINT *shls,
406 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
407 FINT ng[] = {1, 1, 0, 0, 2, 1, 1, 1};
408 CINTEnvVars envs;
409 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
410 envs.f_gout = &CINTgout1e_int1e_spsp;
411 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0);
412 } // int1e_spsp_spinor
413 ALL_CINT1E(int1e_spsp)
ALL_CINT1E_FORTRAN_(int1e_spsp)414 ALL_CINT1E_FORTRAN_(int1e_spsp)
415 /* <SIGMA DOT P i|OVLP |j> */
416 void CINTgout1e_int1e_sp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
417 FINT nf = envs->nf;
418 FINT ix, iy, iz, n;
419 double *g0 = g;
420 double *g1 = g0 + envs->g_size * 3;
421 double s[3];
422 G1E_D_I(g1, g0, envs->i_l+0, envs->j_l, 0);
423 for (n = 0; n < nf; n++) {
424 ix = idx[0+n*3];
425 iy = idx[1+n*3];
426 iz = idx[2+n*3];
427 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0];
428 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0];
429 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0];
430 if (gout_empty) {
431 gout[n*4+0] = + s[0];
432 gout[n*4+1] = + s[1];
433 gout[n*4+2] = + s[2];
434 gout[n*4+3] = 0;
435 } else {
436 gout[n*4+0] += + s[0];
437 gout[n*4+1] += + s[1];
438 gout[n*4+2] += + s[2];
439 gout[n*4+3] += 0;
440 }}}
int1e_sp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)441 void int1e_sp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
442 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
443 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
444 }
int1e_sp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)445 CACHE_SIZE_T int1e_sp_cart(double *out, FINT *dims, FINT *shls,
446 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
447 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
448 CINTEnvVars envs;
449 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
450 envs.f_gout = &CINTgout1e_int1e_sp;
451 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
452 } // int1e_sp_cart
int1e_sp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)453 CACHE_SIZE_T int1e_sp_sph(double *out, FINT *dims, FINT *shls,
454 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
455 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
456 CINTEnvVars envs;
457 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
458 envs.f_gout = &CINTgout1e_int1e_sp;
459 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
460 } // int1e_sp_sph
int1e_sp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)461 CACHE_SIZE_T int1e_sp_spinor(double complex *out, FINT *dims, FINT *shls,
462 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
463 FINT ng[] = {1, 0, 0, 0, 1, 4, 1, 1};
464 CINTEnvVars envs;
465 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
466 envs.f_gout = &CINTgout1e_int1e_sp;
467 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 0);
468 } // int1e_sp_spinor
469 ALL_CINT1E(int1e_sp)
ALL_CINT1E_FORTRAN_(int1e_sp)470 ALL_CINT1E_FORTRAN_(int1e_sp)
471 /* <SIGMA DOT P i|NUC |SIGMA DOT P j> */
472 void CINTgout1e_int1e_spnucsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
473 FINT nf = envs->nf;
474 FINT nrys_roots = envs->nrys_roots;
475 FINT ix, iy, iz, n, i;
476 double *g0 = g;
477 double *g1 = g0 + envs->g_size * 3;
478 double *g2 = g1 + envs->g_size * 3;
479 double *g3 = g2 + envs->g_size * 3;
480 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0);
481 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0);
482 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0);
483 double s[9];
484 for (n = 0; n < nf; n++) {
485 ix = idx[0+n*3];
486 iy = idx[1+n*3];
487 iz = idx[2+n*3];
488 for (i = 0; i < 9; i++) { s[i] = 0; }
489 for (i = 0; i < nrys_roots; i++) {
490 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
491 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
492 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
493 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
494 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
495 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
496 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
497 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
498 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
499 }
500 if (gout_empty) {
501 gout[n*4+0] = + s[5] - s[7];
502 gout[n*4+1] = + s[6] - s[2];
503 gout[n*4+2] = + s[1] - s[3];
504 gout[n*4+3] = + s[0] + s[4] + s[8];
505 } else {
506 gout[n*4+0] += + s[5] - s[7];
507 gout[n*4+1] += + s[6] - s[2];
508 gout[n*4+2] += + s[1] - s[3];
509 gout[n*4+3] += + s[0] + s[4] + s[8];
510 }}}
int1e_spnucsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)511 void int1e_spnucsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
512 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
513 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
514 }
int1e_spnucsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)515 CACHE_SIZE_T int1e_spnucsp_cart(double *out, FINT *dims, FINT *shls,
516 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
517 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
518 CINTEnvVars envs;
519 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
520 envs.f_gout = &CINTgout1e_int1e_spnucsp;
521 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
522 } // int1e_spnucsp_cart
int1e_spnucsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)523 CACHE_SIZE_T int1e_spnucsp_sph(double *out, FINT *dims, FINT *shls,
524 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
525 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
526 CINTEnvVars envs;
527 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
528 envs.f_gout = &CINTgout1e_int1e_spnucsp;
529 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
530 } // int1e_spnucsp_sph
int1e_spnucsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)531 CACHE_SIZE_T int1e_spnucsp_spinor(double complex *out, FINT *dims, FINT *shls,
532 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
533 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
534 CINTEnvVars envs;
535 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
536 envs.f_gout = &CINTgout1e_int1e_spnucsp;
537 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 2);
538 } // int1e_spnucsp_spinor
539 ALL_CINT1E(int1e_spnucsp)
ALL_CINT1E_FORTRAN_(int1e_spnucsp)540 ALL_CINT1E_FORTRAN_(int1e_spnucsp)
541 /* <SIGMA DOT P i|RINV |SIGMA DOT P j> */
542 void CINTgout1e_int1e_sprinvsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
543 FINT nf = envs->nf;
544 FINT nrys_roots = envs->nrys_roots;
545 FINT ix, iy, iz, n, i;
546 double *g0 = g;
547 double *g1 = g0 + envs->g_size * 3;
548 double *g2 = g1 + envs->g_size * 3;
549 double *g3 = g2 + envs->g_size * 3;
550 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0);
551 G2E_D_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0);
552 G2E_D_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0);
553 double s[9];
554 for (n = 0; n < nf; n++) {
555 ix = idx[0+n*3];
556 iy = idx[1+n*3];
557 iz = idx[2+n*3];
558 for (i = 0; i < 9; i++) { s[i] = 0; }
559 for (i = 0; i < nrys_roots; i++) {
560 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
561 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
562 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
563 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
564 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
565 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
566 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
567 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
568 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
569 }
570 if (gout_empty) {
571 gout[n*4+0] = + s[5] - s[7];
572 gout[n*4+1] = + s[6] - s[2];
573 gout[n*4+2] = + s[1] - s[3];
574 gout[n*4+3] = + s[0] + s[4] + s[8];
575 } else {
576 gout[n*4+0] += + s[5] - s[7];
577 gout[n*4+1] += + s[6] - s[2];
578 gout[n*4+2] += + s[1] - s[3];
579 gout[n*4+3] += + s[0] + s[4] + s[8];
580 }}}
int1e_sprinvsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)581 void int1e_sprinvsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
582 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
583 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
584 }
int1e_sprinvsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)585 CACHE_SIZE_T int1e_sprinvsp_cart(double *out, FINT *dims, FINT *shls,
586 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
587 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
588 CINTEnvVars envs;
589 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
590 envs.f_gout = &CINTgout1e_int1e_sprinvsp;
591 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
592 } // int1e_sprinvsp_cart
int1e_sprinvsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)593 CACHE_SIZE_T int1e_sprinvsp_sph(double *out, FINT *dims, FINT *shls,
594 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
595 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
596 CINTEnvVars envs;
597 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
598 envs.f_gout = &CINTgout1e_int1e_sprinvsp;
599 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
600 } // int1e_sprinvsp_sph
int1e_sprinvsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)601 CACHE_SIZE_T int1e_sprinvsp_spinor(double complex *out, FINT *dims, FINT *shls,
602 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
603 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
604 CINTEnvVars envs;
605 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
606 envs.f_gout = &CINTgout1e_int1e_sprinvsp;
607 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 1);
608 } // int1e_sprinvsp_spinor
609 ALL_CINT1E(int1e_sprinvsp)
ALL_CINT1E_FORTRAN_(int1e_sprinvsp)610 ALL_CINT1E_FORTRAN_(int1e_sprinvsp)
611 /* <SIGMA DOT R i|NUC |SIGMA DOT R j> */
612 void CINTgout1e_int1e_srnucsr(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
613 FINT nf = envs->nf;
614 FINT nrys_roots = envs->nrys_roots;
615 FINT ix, iy, iz, n, i;
616 double *g0 = g;
617 double *g1 = g0 + envs->g_size * 3;
618 double *g2 = g1 + envs->g_size * 3;
619 double *g3 = g2 + envs->g_size * 3;
620 G2E_R_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0);
621 G2E_R_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0);
622 G2E_R_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0);
623 double s[9];
624 for (n = 0; n < nf; n++) {
625 ix = idx[0+n*3];
626 iy = idx[1+n*3];
627 iz = idx[2+n*3];
628 for (i = 0; i < 9; i++) { s[i] = 0; }
629 for (i = 0; i < nrys_roots; i++) {
630 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
631 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
632 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
633 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
634 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
635 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
636 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
637 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
638 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
639 }
640 if (gout_empty) {
641 gout[n*4+0] = + s[5] - s[7];
642 gout[n*4+1] = + s[6] - s[2];
643 gout[n*4+2] = + s[1] - s[3];
644 gout[n*4+3] = + s[0] + s[4] + s[8];
645 } else {
646 gout[n*4+0] += + s[5] - s[7];
647 gout[n*4+1] += + s[6] - s[2];
648 gout[n*4+2] += + s[1] - s[3];
649 gout[n*4+3] += + s[0] + s[4] + s[8];
650 }}}
int1e_srnucsr_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)651 void int1e_srnucsr_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
652 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
653 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
654 }
int1e_srnucsr_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)655 CACHE_SIZE_T int1e_srnucsr_cart(double *out, FINT *dims, FINT *shls,
656 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
657 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
658 CINTEnvVars envs;
659 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
660 envs.f_gout = &CINTgout1e_int1e_srnucsr;
661 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
662 } // int1e_srnucsr_cart
int1e_srnucsr_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)663 CACHE_SIZE_T int1e_srnucsr_sph(double *out, FINT *dims, FINT *shls,
664 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
665 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
666 CINTEnvVars envs;
667 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
668 envs.f_gout = &CINTgout1e_int1e_srnucsr;
669 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
670 } // int1e_srnucsr_sph
int1e_srnucsr_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)671 CACHE_SIZE_T int1e_srnucsr_spinor(double complex *out, FINT *dims, FINT *shls,
672 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
673 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
674 CINTEnvVars envs;
675 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
676 envs.f_gout = &CINTgout1e_int1e_srnucsr;
677 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 2);
678 } // int1e_srnucsr_spinor
679 ALL_CINT1E(int1e_srnucsr)
ALL_CINT1E_FORTRAN_(int1e_srnucsr)680 ALL_CINT1E_FORTRAN_(int1e_srnucsr)
681 /* <SIGMA DOT P i|RC |SIGMA DOT P j> */
682 void CINTgout1e_int1e_sprsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
683 FINT nf = envs->nf;
684 FINT ix, iy, iz, n;
685 double *g0 = g;
686 double *g1 = g0 + envs->g_size * 3;
687 double *g2 = g1 + envs->g_size * 3;
688 double *g3 = g2 + envs->g_size * 3;
689 double *g4 = g3 + envs->g_size * 3;
690 double *g5 = g4 + envs->g_size * 3;
691 double *g6 = g5 + envs->g_size * 3;
692 double *g7 = g6 + envs->g_size * 3;
693 double drj[3];
694 drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0];
695 drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1];
696 drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2];
697 double s[27];
698 G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
699 G1E_RCJ(g2, g0, envs->i_l+1, envs->j_l+1, 0);
700 G1E_D_J(g3, g2, envs->i_l+1, envs->j_l+0, 0);
701 G1E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0);
702 G1E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0);
703 G1E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0);
704 G1E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0);
705 for (n = 0; n < nf; n++) {
706 ix = idx[0+n*3];
707 iy = idx[1+n*3];
708 iz = idx[2+n*3];
709 s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0];
710 s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0];
711 s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0];
712 s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0];
713 s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0];
714 s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0];
715 s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0];
716 s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0];
717 s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0];
718 s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0];
719 s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0];
720 s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0];
721 s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0];
722 s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0];
723 s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0];
724 s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0];
725 s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0];
726 s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0];
727 s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0];
728 s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0];
729 s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0];
730 s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0];
731 s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0];
732 s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0];
733 s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0];
734 s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0];
735 s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0];
736 if (gout_empty) {
737 gout[n*12+0] = 0;
738 gout[n*12+1] = + s[18] - s[2];
739 gout[n*12+2] = + s[1] - s[9];
740 gout[n*12+3] = + s[0] + s[10] + s[20];
741 gout[n*12+4] = + s[14] - s[22];
742 gout[n*12+5] = 0;
743 gout[n*12+6] = + s[4] - s[12];
744 gout[n*12+7] = + s[3] + s[13] + s[23];
745 gout[n*12+8] = + s[17] - s[25];
746 gout[n*12+9] = + s[24] - s[8];
747 gout[n*12+10] = 0;
748 gout[n*12+11] = + s[6] + s[16] + s[26];
749 } else {
750 gout[n*12+0] += 0;
751 gout[n*12+1] += + s[18] - s[2];
752 gout[n*12+2] += + s[1] - s[9];
753 gout[n*12+3] += + s[0] + s[10] + s[20];
754 gout[n*12+4] += + s[14] - s[22];
755 gout[n*12+5] += 0;
756 gout[n*12+6] += + s[4] - s[12];
757 gout[n*12+7] += + s[3] + s[13] + s[23];
758 gout[n*12+8] += + s[17] - s[25];
759 gout[n*12+9] += + s[24] - s[8];
760 gout[n*12+10] += 0;
761 gout[n*12+11] += + s[6] + s[16] + s[26];
762 }}}
int1e_sprsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)763 void int1e_sprsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
764 FINT ng[] = {1, 2, 0, 0, 3, 4, 1, 3};
765 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
766 }
int1e_sprsp_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 int1e_sprsp_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[] = {1, 2, 0, 0, 3, 4, 1, 3};
770 CINTEnvVars envs;
771 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
772 envs.f_gout = &CINTgout1e_int1e_sprsp;
773 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
774 } // int1e_sprsp_cart
int1e_sprsp_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 int1e_sprsp_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[] = {1, 2, 0, 0, 3, 4, 1, 3};
778 CINTEnvVars envs;
779 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
780 envs.f_gout = &CINTgout1e_int1e_sprsp;
781 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
782 } // int1e_sprsp_sph
int1e_sprsp_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 int1e_sprsp_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[] = {1, 2, 0, 0, 3, 4, 1, 3};
786 CINTEnvVars envs;
787 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
788 envs.f_gout = &CINTgout1e_int1e_sprsp;
789 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 0);
790 } // int1e_sprsp_spinor
791 ALL_CINT1E(int1e_sprsp)
ALL_CINT1E_FORTRAN_(int1e_sprsp)792 ALL_CINT1E_FORTRAN_(int1e_sprsp)
793 /* <G i|OVLP |j> */
794 void CINTgout1e_int1e_govlp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
795 FINT nf = envs->nf;
796 FINT ix, iy, iz, n;
797 double *g0 = g;
798 double *g1 = g0 + envs->g_size * 3;
799 double rirj[3], c[3];
800 rirj[0] = envs->ri[0] - envs->rj[0];
801 rirj[1] = envs->ri[1] - envs->rj[1];
802 rirj[2] = envs->ri[2] - envs->rj[2];
803 c[0] = 1 * rirj[0];
804 c[1] = 1 * rirj[1];
805 c[2] = 1 * rirj[2];
806 double s[3];
807 G1E_R0I(g1, g0, envs->i_l+0, envs->j_l, 0);
808 for (n = 0; n < nf; n++) {
809 ix = idx[0+n*3];
810 iy = idx[1+n*3];
811 iz = idx[2+n*3];
812 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0];
813 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0];
814 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0];
815 if (gout_empty) {
816 gout[n*3+0] = + c[1]*s[2] - c[2]*s[1];
817 gout[n*3+1] = + c[2]*s[0] - c[0]*s[2];
818 gout[n*3+2] = + c[0]*s[1] - c[1]*s[0];
819 } else {
820 gout[n*3+0] += + c[1]*s[2] - c[2]*s[1];
821 gout[n*3+1] += + c[2]*s[0] - c[0]*s[2];
822 gout[n*3+2] += + c[0]*s[1] - c[1]*s[0];
823 }}}
int1e_govlp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)824 void int1e_govlp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
825 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
826 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
827 }
int1e_govlp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)828 CACHE_SIZE_T int1e_govlp_cart(double *out, FINT *dims, FINT *shls,
829 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
830 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
831 CINTEnvVars envs;
832 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
833 envs.f_gout = &CINTgout1e_int1e_govlp;
834 envs.common_factor *= 0.5;
835 if (out != NULL && envs.shls[0] == envs.shls[1]) {
836 FINT i, nout;
837 FINT counts[4];
838 counts[0] = envs.nfi * envs.x_ctr[0];
839 counts[1] = envs.nfj * envs.x_ctr[1];
840 counts[2] = 1;
841 counts[3] = 1;
842 if (dims == NULL) { dims = counts; }
843 nout = dims[0] * dims[1];
844 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) {
845 c2s_dset0(out+nout*i, dims, counts); }
846 return 0; }
847 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
848 } // int1e_govlp_cart
int1e_govlp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)849 CACHE_SIZE_T int1e_govlp_sph(double *out, FINT *dims, FINT *shls,
850 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
851 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
852 CINTEnvVars envs;
853 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
854 envs.f_gout = &CINTgout1e_int1e_govlp;
855 envs.common_factor *= 0.5;
856 if (out != NULL && envs.shls[0] == envs.shls[1]) {
857 FINT i, nout;
858 FINT counts[4];
859 counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
860 counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
861 counts[2] = 1;
862 counts[3] = 1;
863 if (dims == NULL) { dims = counts; }
864 nout = dims[0] * dims[1];
865 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) {
866 c2s_dset0(out+nout*i, dims, counts); }
867 return 0; }
868 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
869 } // int1e_govlp_sph
int1e_govlp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)870 CACHE_SIZE_T int1e_govlp_spinor(double complex *out, FINT *dims, FINT *shls,
871 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
872 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
873 CINTEnvVars envs;
874 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
875 envs.f_gout = &CINTgout1e_int1e_govlp;
876 envs.common_factor *= 0.5;
877 if (out != NULL && envs.shls[0] == envs.shls[1]) {
878 FINT i, nout;
879 FINT counts[4];
880 counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
881 counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
882 counts[2] = 1;
883 counts[3] = 1;
884 if (dims == NULL) { dims = counts; }
885 nout = dims[0] * dims[1];
886 for (i = 0; i < envs.ncomp_tensor; i++) {
887 c2s_zset0(out+nout*i, dims, counts); }
888 return 0; }
889 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1ei, 0);
890 } // int1e_govlp_spinor
891 ALL_CINT1E(int1e_govlp)
ALL_CINT1E_FORTRAN_(int1e_govlp)892 ALL_CINT1E_FORTRAN_(int1e_govlp)
893 /* <G i|NUC |j> */
894 void CINTgout1e_int1e_gnuc(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
895 FINT nf = envs->nf;
896 FINT nrys_roots = envs->nrys_roots;
897 FINT ix, iy, iz, n, i;
898 double *g0 = g;
899 double *g1 = g0 + envs->g_size * 3;
900 double rirj[3], c[3];
901 rirj[0] = envs->ri[0] - envs->rj[0];
902 rirj[1] = envs->ri[1] - envs->rj[1];
903 rirj[2] = envs->ri[2] - envs->rj[2];
904 c[0] = 1 * rirj[0];
905 c[1] = 1 * rirj[1];
906 c[2] = 1 * rirj[2];
907 G2E_R0I(g1, g0, envs->i_l+0, envs->j_l, 0, 0);
908 double s[3];
909 for (n = 0; n < nf; n++) {
910 ix = idx[0+n*3];
911 iy = idx[1+n*3];
912 iz = idx[2+n*3];
913 for (i = 0; i < 3; i++) { s[i] = 0; }
914 for (i = 0; i < nrys_roots; i++) {
915 s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i];
916 s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i];
917 s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i];
918 }
919 if (gout_empty) {
920 gout[n*3+0] = + c[1]*s[2] - c[2]*s[1];
921 gout[n*3+1] = + c[2]*s[0] - c[0]*s[2];
922 gout[n*3+2] = + c[0]*s[1] - c[1]*s[0];
923 } else {
924 gout[n*3+0] += + c[1]*s[2] - c[2]*s[1];
925 gout[n*3+1] += + c[2]*s[0] - c[0]*s[2];
926 gout[n*3+2] += + c[0]*s[1] - c[1]*s[0];
927 }}}
int1e_gnuc_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)928 void int1e_gnuc_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
929 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
930 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
931 }
int1e_gnuc_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)932 CACHE_SIZE_T int1e_gnuc_cart(double *out, FINT *dims, FINT *shls,
933 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
934 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
935 CINTEnvVars envs;
936 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
937 envs.f_gout = &CINTgout1e_int1e_gnuc;
938 envs.common_factor *= 0.5;
939 if (out != NULL && envs.shls[0] == envs.shls[1]) {
940 FINT i, nout;
941 FINT counts[4];
942 counts[0] = envs.nfi * envs.x_ctr[0];
943 counts[1] = envs.nfj * envs.x_ctr[1];
944 counts[2] = 1;
945 counts[3] = 1;
946 if (dims == NULL) { dims = counts; }
947 nout = dims[0] * dims[1];
948 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) {
949 c2s_dset0(out+nout*i, dims, counts); }
950 return 0; }
951 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
952 } // int1e_gnuc_cart
int1e_gnuc_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)953 CACHE_SIZE_T int1e_gnuc_sph(double *out, FINT *dims, FINT *shls,
954 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
955 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
956 CINTEnvVars envs;
957 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
958 envs.f_gout = &CINTgout1e_int1e_gnuc;
959 envs.common_factor *= 0.5;
960 if (out != NULL && envs.shls[0] == envs.shls[1]) {
961 FINT i, nout;
962 FINT counts[4];
963 counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
964 counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
965 counts[2] = 1;
966 counts[3] = 1;
967 if (dims == NULL) { dims = counts; }
968 nout = dims[0] * dims[1];
969 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) {
970 c2s_dset0(out+nout*i, dims, counts); }
971 return 0; }
972 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
973 } // int1e_gnuc_sph
int1e_gnuc_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)974 CACHE_SIZE_T int1e_gnuc_spinor(double complex *out, FINT *dims, FINT *shls,
975 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
976 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
977 CINTEnvVars envs;
978 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
979 envs.f_gout = &CINTgout1e_int1e_gnuc;
980 envs.common_factor *= 0.5;
981 if (out != NULL && envs.shls[0] == envs.shls[1]) {
982 FINT i, nout;
983 FINT counts[4];
984 counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
985 counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
986 counts[2] = 1;
987 counts[3] = 1;
988 if (dims == NULL) { dims = counts; }
989 nout = dims[0] * dims[1];
990 for (i = 0; i < envs.ncomp_tensor; i++) {
991 c2s_zset0(out+nout*i, dims, counts); }
992 return 0; }
993 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1ei, 2);
994 } // int1e_gnuc_spinor
995 ALL_CINT1E(int1e_gnuc)
ALL_CINT1E_FORTRAN_(int1e_gnuc)996 ALL_CINT1E_FORTRAN_(int1e_gnuc)
997 /* <SIGMA CROSS RC i|SIGMA CROSS NABLA-RINV |j> */
998 void CINTgout1e_int1e_cg_sa10sa01(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
999 FINT nf = envs->nf;
1000 FINT nrys_roots = envs->nrys_roots;
1001 FINT ix, iy, iz, n, i;
1002 double *g0 = g;
1003 double *g1 = g0 + envs->g_size * 3;
1004 double *g2 = g1 + envs->g_size * 3;
1005 double *g3 = g2 + envs->g_size * 3;
1006 double dri[3];
1007 dri[0] = envs->ri[0] - envs->env[PTR_COMMON_ORIG+0];
1008 dri[1] = envs->ri[1] - envs->env[PTR_COMMON_ORIG+1];
1009 dri[2] = envs->ri[2] - envs->env[PTR_COMMON_ORIG+2];
1010 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0);
1011 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l+0, 0, 0);
1012 for (ix = 0; ix < envs->g_size * 3; ix++) {g1[ix] += g2[ix];}
1013 G2E_RCI(g2, g0, envs->i_l+0, envs->j_l, 0, 0);
1014 G2E_RCI(g3, g1, envs->i_l+0, envs->j_l, 0, 0);
1015 double s[9];
1016 for (n = 0; n < nf; n++) {
1017 ix = idx[0+n*3];
1018 iy = idx[1+n*3];
1019 iz = idx[2+n*3];
1020 for (i = 0; i < 9; i++) { s[i] = 0; }
1021 for (i = 0; i < nrys_roots; i++) {
1022 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
1023 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
1024 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
1025 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
1026 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
1027 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
1028 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
1029 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
1030 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
1031 }
1032 if (gout_empty) {
1033 gout[n*36+0] = - s[7] + s[5];
1034 gout[n*36+1] = 0;
1035 gout[n*36+2] = 0;
1036 gout[n*36+3] = + s[8] + s[4];
1037 gout[n*36+4] = + s[6];
1038 gout[n*36+5] = + s[5];
1039 gout[n*36+6] = + s[8];
1040 gout[n*36+7] = - s[3];
1041 gout[n*36+8] = - s[3];
1042 gout[n*36+9] = - s[4];
1043 gout[n*36+10] = - s[7];
1044 gout[n*36+11] = - s[6];
1045 gout[n*36+12] = - s[2];
1046 gout[n*36+13] = - s[7];
1047 gout[n*36+14] = - s[8];
1048 gout[n*36+15] = - s[1];
1049 gout[n*36+16] = 0;
1050 gout[n*36+17] = - s[2] + s[6];
1051 gout[n*36+18] = 0;
1052 gout[n*36+19] = + s[8] + s[0];
1053 gout[n*36+20] = + s[0];
1054 gout[n*36+21] = + s[1];
1055 gout[n*36+22] = + s[6];
1056 gout[n*36+23] = - s[7];
1057 gout[n*36+24] = + s[1];
1058 gout[n*36+25] = + s[4];
1059 gout[n*36+26] = + s[5];
1060 gout[n*36+27] = - s[2];
1061 gout[n*36+28] = - s[0];
1062 gout[n*36+29] = - s[3];
1063 gout[n*36+30] = - s[2];
1064 gout[n*36+31] = - s[5];
1065 gout[n*36+32] = 0;
1066 gout[n*36+33] = 0;
1067 gout[n*36+34] = - s[3] + s[1];
1068 gout[n*36+35] = + s[4] + s[0];
1069 } else {
1070 gout[n*36+0] += - s[7] + s[5];
1071 gout[n*36+1] += 0;
1072 gout[n*36+2] += 0;
1073 gout[n*36+3] += + s[8] + s[4];
1074 gout[n*36+4] += + s[6];
1075 gout[n*36+5] += + s[5];
1076 gout[n*36+6] += + s[8];
1077 gout[n*36+7] += - s[3];
1078 gout[n*36+8] += - s[3];
1079 gout[n*36+9] += - s[4];
1080 gout[n*36+10] += - s[7];
1081 gout[n*36+11] += - s[6];
1082 gout[n*36+12] += - s[2];
1083 gout[n*36+13] += - s[7];
1084 gout[n*36+14] += - s[8];
1085 gout[n*36+15] += - s[1];
1086 gout[n*36+16] += 0;
1087 gout[n*36+17] += - s[2] + s[6];
1088 gout[n*36+18] += 0;
1089 gout[n*36+19] += + s[8] + s[0];
1090 gout[n*36+20] += + s[0];
1091 gout[n*36+21] += + s[1];
1092 gout[n*36+22] += + s[6];
1093 gout[n*36+23] += - s[7];
1094 gout[n*36+24] += + s[1];
1095 gout[n*36+25] += + s[4];
1096 gout[n*36+26] += + s[5];
1097 gout[n*36+27] += - s[2];
1098 gout[n*36+28] += - s[0];
1099 gout[n*36+29] += - s[3];
1100 gout[n*36+30] += - s[2];
1101 gout[n*36+31] += - s[5];
1102 gout[n*36+32] += 0;
1103 gout[n*36+33] += 0;
1104 gout[n*36+34] += - s[3] + s[1];
1105 gout[n*36+35] += + s[4] + s[0];
1106 }}}
int1e_cg_sa10sa01_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1107 void int1e_cg_sa10sa01_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1108 FINT ng[] = {2, 1, 0, 0, 2, 4, 0, 9};
1109 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1110 }
int1e_cg_sa10sa01_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1111 CACHE_SIZE_T int1e_cg_sa10sa01_cart(double *out, FINT *dims, FINT *shls,
1112 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1113 FINT ng[] = {2, 1, 0, 0, 2, 4, 0, 9};
1114 CINTEnvVars envs;
1115 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1116 envs.f_gout = &CINTgout1e_int1e_cg_sa10sa01;
1117 envs.common_factor *= 0.5;
1118 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
1119 } // int1e_cg_sa10sa01_cart
int1e_cg_sa10sa01_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1120 CACHE_SIZE_T int1e_cg_sa10sa01_sph(double *out, FINT *dims, FINT *shls,
1121 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1122 FINT ng[] = {2, 1, 0, 0, 2, 4, 0, 9};
1123 CINTEnvVars envs;
1124 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1125 envs.f_gout = &CINTgout1e_int1e_cg_sa10sa01;
1126 envs.common_factor *= 0.5;
1127 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
1128 } // int1e_cg_sa10sa01_sph
int1e_cg_sa10sa01_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1129 CACHE_SIZE_T int1e_cg_sa10sa01_spinor(double complex *out, FINT *dims, FINT *shls,
1130 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1131 FINT ng[] = {2, 1, 0, 0, 2, 4, 0, 9};
1132 CINTEnvVars envs;
1133 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1134 envs.f_gout = &CINTgout1e_int1e_cg_sa10sa01;
1135 envs.common_factor *= 0.5;
1136 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 1);
1137 } // int1e_cg_sa10sa01_spinor
1138 ALL_CINT1E(int1e_cg_sa10sa01)
ALL_CINT1E_FORTRAN_(int1e_cg_sa10sa01)1139 ALL_CINT1E_FORTRAN_(int1e_cg_sa10sa01)
1140 /* <RC CROSS SIGMA i|OVLP |SIGMA DOT P j> */
1141 void CINTgout1e_int1e_cg_sa10sp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1142 FINT nf = envs->nf;
1143 FINT ix, iy, iz, n;
1144 double *g0 = g;
1145 double *g1 = g0 + envs->g_size * 3;
1146 double *g2 = g1 + envs->g_size * 3;
1147 double *g3 = g2 + envs->g_size * 3;
1148 double dri[3];
1149 dri[0] = envs->ri[0] - envs->env[PTR_COMMON_ORIG+0];
1150 dri[1] = envs->ri[1] - envs->env[PTR_COMMON_ORIG+1];
1151 dri[2] = envs->ri[2] - envs->env[PTR_COMMON_ORIG+2];
1152 double s[9];
1153 G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
1154 G1E_RCI(g2, g0, envs->i_l+0, envs->j_l, 0);
1155 G1E_RCI(g3, g1, envs->i_l+0, envs->j_l, 0);
1156 for (n = 0; n < nf; n++) {
1157 ix = idx[0+n*3];
1158 iy = idx[1+n*3];
1159 iz = idx[2+n*3];
1160 s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0];
1161 s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0];
1162 s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0];
1163 s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0];
1164 s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0];
1165 s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0];
1166 s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0];
1167 s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0];
1168 s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0];
1169 if (gout_empty) {
1170 gout[n*12+0] = + s[8] + s[4];
1171 gout[n*12+1] = - s[3];
1172 gout[n*12+2] = - s[6];
1173 gout[n*12+3] = + s[7] - s[5];
1174 gout[n*12+4] = - s[1];
1175 gout[n*12+5] = + s[0] + s[8];
1176 gout[n*12+6] = - s[7];
1177 gout[n*12+7] = - s[6] + s[2];
1178 gout[n*12+8] = - s[2];
1179 gout[n*12+9] = - s[5];
1180 gout[n*12+10] = + s[4] + s[0];
1181 gout[n*12+11] = + s[3] - s[1];
1182 } else {
1183 gout[n*12+0] += + s[8] + s[4];
1184 gout[n*12+1] += - s[3];
1185 gout[n*12+2] += - s[6];
1186 gout[n*12+3] += + s[7] - s[5];
1187 gout[n*12+4] += - s[1];
1188 gout[n*12+5] += + s[0] + s[8];
1189 gout[n*12+6] += - s[7];
1190 gout[n*12+7] += - s[6] + s[2];
1191 gout[n*12+8] += - s[2];
1192 gout[n*12+9] += - s[5];
1193 gout[n*12+10] += + s[4] + s[0];
1194 gout[n*12+11] += + s[3] - s[1];
1195 }}}
int1e_cg_sa10sp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1196 void int1e_cg_sa10sp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1197 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
1198 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1199 }
int1e_cg_sa10sp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1200 CACHE_SIZE_T int1e_cg_sa10sp_cart(double *out, FINT *dims, FINT *shls,
1201 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1202 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
1203 CINTEnvVars envs;
1204 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1205 envs.f_gout = &CINTgout1e_int1e_cg_sa10sp;
1206 envs.common_factor *= 0.5;
1207 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
1208 } // int1e_cg_sa10sp_cart
int1e_cg_sa10sp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1209 CACHE_SIZE_T int1e_cg_sa10sp_sph(double *out, FINT *dims, FINT *shls,
1210 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1211 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
1212 CINTEnvVars envs;
1213 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1214 envs.f_gout = &CINTgout1e_int1e_cg_sa10sp;
1215 envs.common_factor *= 0.5;
1216 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
1217 } // int1e_cg_sa10sp_sph
int1e_cg_sa10sp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1218 CACHE_SIZE_T int1e_cg_sa10sp_spinor(double complex *out, FINT *dims, FINT *shls,
1219 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1220 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
1221 CINTEnvVars envs;
1222 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1223 envs.f_gout = &CINTgout1e_int1e_cg_sa10sp;
1224 envs.common_factor *= 0.5;
1225 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1ei, 0);
1226 } // int1e_cg_sa10sp_spinor
1227 ALL_CINT1E(int1e_cg_sa10sp)
ALL_CINT1E_FORTRAN_(int1e_cg_sa10sp)1228 ALL_CINT1E_FORTRAN_(int1e_cg_sa10sp)
1229 /* <RC CROSS SIGMA i|NUC |SIGMA DOT P j> */
1230 void CINTgout1e_int1e_cg_sa10nucsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1231 FINT nf = envs->nf;
1232 FINT nrys_roots = envs->nrys_roots;
1233 FINT ix, iy, iz, n, i;
1234 double *g0 = g;
1235 double *g1 = g0 + envs->g_size * 3;
1236 double *g2 = g1 + envs->g_size * 3;
1237 double *g3 = g2 + envs->g_size * 3;
1238 double dri[3];
1239 dri[0] = envs->ri[0] - envs->env[PTR_COMMON_ORIG+0];
1240 dri[1] = envs->ri[1] - envs->env[PTR_COMMON_ORIG+1];
1241 dri[2] = envs->ri[2] - envs->env[PTR_COMMON_ORIG+2];
1242 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0);
1243 G2E_RCI(g2, g0, envs->i_l+0, envs->j_l, 0, 0);
1244 G2E_RCI(g3, g1, envs->i_l+0, envs->j_l, 0, 0);
1245 double s[9];
1246 for (n = 0; n < nf; n++) {
1247 ix = idx[0+n*3];
1248 iy = idx[1+n*3];
1249 iz = idx[2+n*3];
1250 for (i = 0; i < 9; i++) { s[i] = 0; }
1251 for (i = 0; i < nrys_roots; i++) {
1252 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
1253 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
1254 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
1255 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
1256 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
1257 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
1258 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
1259 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
1260 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
1261 }
1262 if (gout_empty) {
1263 gout[n*12+0] = + s[8] + s[4];
1264 gout[n*12+1] = - s[3];
1265 gout[n*12+2] = - s[6];
1266 gout[n*12+3] = + s[7] - s[5];
1267 gout[n*12+4] = - s[1];
1268 gout[n*12+5] = + s[0] + s[8];
1269 gout[n*12+6] = - s[7];
1270 gout[n*12+7] = - s[6] + s[2];
1271 gout[n*12+8] = - s[2];
1272 gout[n*12+9] = - s[5];
1273 gout[n*12+10] = + s[4] + s[0];
1274 gout[n*12+11] = + s[3] - s[1];
1275 } else {
1276 gout[n*12+0] += + s[8] + s[4];
1277 gout[n*12+1] += - s[3];
1278 gout[n*12+2] += - s[6];
1279 gout[n*12+3] += + s[7] - s[5];
1280 gout[n*12+4] += - s[1];
1281 gout[n*12+5] += + s[0] + s[8];
1282 gout[n*12+6] += - s[7];
1283 gout[n*12+7] += - s[6] + s[2];
1284 gout[n*12+8] += - s[2];
1285 gout[n*12+9] += - s[5];
1286 gout[n*12+10] += + s[4] + s[0];
1287 gout[n*12+11] += + s[3] - s[1];
1288 }}}
int1e_cg_sa10nucsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1289 void int1e_cg_sa10nucsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1290 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 3};
1291 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1292 }
int1e_cg_sa10nucsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1293 CACHE_SIZE_T int1e_cg_sa10nucsp_cart(double *out, FINT *dims, FINT *shls,
1294 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1295 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 3};
1296 CINTEnvVars envs;
1297 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1298 envs.f_gout = &CINTgout1e_int1e_cg_sa10nucsp;
1299 envs.common_factor *= 0.5;
1300 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
1301 } // int1e_cg_sa10nucsp_cart
int1e_cg_sa10nucsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1302 CACHE_SIZE_T int1e_cg_sa10nucsp_sph(double *out, FINT *dims, FINT *shls,
1303 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1304 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 3};
1305 CINTEnvVars envs;
1306 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1307 envs.f_gout = &CINTgout1e_int1e_cg_sa10nucsp;
1308 envs.common_factor *= 0.5;
1309 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
1310 } // int1e_cg_sa10nucsp_sph
int1e_cg_sa10nucsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1311 CACHE_SIZE_T int1e_cg_sa10nucsp_spinor(double complex *out, FINT *dims, FINT *shls,
1312 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1313 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 3};
1314 CINTEnvVars envs;
1315 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1316 envs.f_gout = &CINTgout1e_int1e_cg_sa10nucsp;
1317 envs.common_factor *= 0.5;
1318 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1ei, 2);
1319 } // int1e_cg_sa10nucsp_spinor
1320 ALL_CINT1E(int1e_cg_sa10nucsp)
ALL_CINT1E_FORTRAN_(int1e_cg_sa10nucsp)1321 ALL_CINT1E_FORTRAN_(int1e_cg_sa10nucsp)
1322 /* <SIGMA CROSS R i|SIGMA CROSS NABLA-RINV |j> */
1323 void CINTgout1e_int1e_giao_sa10sa01(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1324 FINT nf = envs->nf;
1325 FINT nrys_roots = envs->nrys_roots;
1326 FINT ix, iy, iz, n, i;
1327 double *g0 = g;
1328 double *g1 = g0 + envs->g_size * 3;
1329 double *g2 = g1 + envs->g_size * 3;
1330 double *g3 = g2 + envs->g_size * 3;
1331 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0);
1332 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l+0, 0, 0);
1333 for (ix = 0; ix < envs->g_size * 3; ix++) {g1[ix] += g2[ix];}
1334 G2E_R_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0);
1335 G2E_R_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0);
1336 double s[9];
1337 for (n = 0; n < nf; n++) {
1338 ix = idx[0+n*3];
1339 iy = idx[1+n*3];
1340 iz = idx[2+n*3];
1341 for (i = 0; i < 9; i++) { s[i] = 0; }
1342 for (i = 0; i < nrys_roots; i++) {
1343 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
1344 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
1345 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
1346 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
1347 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
1348 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
1349 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
1350 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
1351 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
1352 }
1353 if (gout_empty) {
1354 gout[n*36+0] = - s[7] + s[5];
1355 gout[n*36+1] = 0;
1356 gout[n*36+2] = 0;
1357 gout[n*36+3] = + s[8] + s[4];
1358 gout[n*36+4] = + s[6];
1359 gout[n*36+5] = + s[5];
1360 gout[n*36+6] = + s[8];
1361 gout[n*36+7] = - s[3];
1362 gout[n*36+8] = - s[3];
1363 gout[n*36+9] = - s[4];
1364 gout[n*36+10] = - s[7];
1365 gout[n*36+11] = - s[6];
1366 gout[n*36+12] = - s[2];
1367 gout[n*36+13] = - s[7];
1368 gout[n*36+14] = - s[8];
1369 gout[n*36+15] = - s[1];
1370 gout[n*36+16] = 0;
1371 gout[n*36+17] = - s[2] + s[6];
1372 gout[n*36+18] = 0;
1373 gout[n*36+19] = + s[8] + s[0];
1374 gout[n*36+20] = + s[0];
1375 gout[n*36+21] = + s[1];
1376 gout[n*36+22] = + s[6];
1377 gout[n*36+23] = - s[7];
1378 gout[n*36+24] = + s[1];
1379 gout[n*36+25] = + s[4];
1380 gout[n*36+26] = + s[5];
1381 gout[n*36+27] = - s[2];
1382 gout[n*36+28] = - s[0];
1383 gout[n*36+29] = - s[3];
1384 gout[n*36+30] = - s[2];
1385 gout[n*36+31] = - s[5];
1386 gout[n*36+32] = 0;
1387 gout[n*36+33] = 0;
1388 gout[n*36+34] = - s[3] + s[1];
1389 gout[n*36+35] = + s[4] + s[0];
1390 } else {
1391 gout[n*36+0] += - s[7] + s[5];
1392 gout[n*36+1] += 0;
1393 gout[n*36+2] += 0;
1394 gout[n*36+3] += + s[8] + s[4];
1395 gout[n*36+4] += + s[6];
1396 gout[n*36+5] += + s[5];
1397 gout[n*36+6] += + s[8];
1398 gout[n*36+7] += - s[3];
1399 gout[n*36+8] += - s[3];
1400 gout[n*36+9] += - s[4];
1401 gout[n*36+10] += - s[7];
1402 gout[n*36+11] += - s[6];
1403 gout[n*36+12] += - s[2];
1404 gout[n*36+13] += - s[7];
1405 gout[n*36+14] += - s[8];
1406 gout[n*36+15] += - s[1];
1407 gout[n*36+16] += 0;
1408 gout[n*36+17] += - s[2] + s[6];
1409 gout[n*36+18] += 0;
1410 gout[n*36+19] += + s[8] + s[0];
1411 gout[n*36+20] += + s[0];
1412 gout[n*36+21] += + s[1];
1413 gout[n*36+22] += + s[6];
1414 gout[n*36+23] += - s[7];
1415 gout[n*36+24] += + s[1];
1416 gout[n*36+25] += + s[4];
1417 gout[n*36+26] += + s[5];
1418 gout[n*36+27] += - s[2];
1419 gout[n*36+28] += - s[0];
1420 gout[n*36+29] += - s[3];
1421 gout[n*36+30] += - s[2];
1422 gout[n*36+31] += - s[5];
1423 gout[n*36+32] += 0;
1424 gout[n*36+33] += 0;
1425 gout[n*36+34] += - s[3] + s[1];
1426 gout[n*36+35] += + s[4] + s[0];
1427 }}}
int1e_giao_sa10sa01_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1428 void int1e_giao_sa10sa01_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1429 FINT ng[] = {2, 1, 0, 0, 2, 4, 0, 9};
1430 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1431 }
int1e_giao_sa10sa01_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1432 CACHE_SIZE_T int1e_giao_sa10sa01_cart(double *out, FINT *dims, FINT *shls,
1433 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1434 FINT ng[] = {2, 1, 0, 0, 2, 4, 0, 9};
1435 CINTEnvVars envs;
1436 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1437 envs.f_gout = &CINTgout1e_int1e_giao_sa10sa01;
1438 envs.common_factor *= 0.5;
1439 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
1440 } // int1e_giao_sa10sa01_cart
int1e_giao_sa10sa01_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1441 CACHE_SIZE_T int1e_giao_sa10sa01_sph(double *out, FINT *dims, FINT *shls,
1442 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1443 FINT ng[] = {2, 1, 0, 0, 2, 4, 0, 9};
1444 CINTEnvVars envs;
1445 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1446 envs.f_gout = &CINTgout1e_int1e_giao_sa10sa01;
1447 envs.common_factor *= 0.5;
1448 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
1449 } // int1e_giao_sa10sa01_sph
int1e_giao_sa10sa01_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1450 CACHE_SIZE_T int1e_giao_sa10sa01_spinor(double complex *out, FINT *dims, FINT *shls,
1451 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1452 FINT ng[] = {2, 1, 0, 0, 2, 4, 0, 9};
1453 CINTEnvVars envs;
1454 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1455 envs.f_gout = &CINTgout1e_int1e_giao_sa10sa01;
1456 envs.common_factor *= 0.5;
1457 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 1);
1458 } // int1e_giao_sa10sa01_spinor
1459 ALL_CINT1E(int1e_giao_sa10sa01)
ALL_CINT1E_FORTRAN_(int1e_giao_sa10sa01)1460 ALL_CINT1E_FORTRAN_(int1e_giao_sa10sa01)
1461 /* <R CROSS SIGMA i|OVLP |SIGMA DOT P j> */
1462 void CINTgout1e_int1e_giao_sa10sp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1463 FINT nf = envs->nf;
1464 FINT ix, iy, iz, n;
1465 double *g0 = g;
1466 double *g1 = g0 + envs->g_size * 3;
1467 double *g2 = g1 + envs->g_size * 3;
1468 double *g3 = g2 + envs->g_size * 3;
1469 double s[9];
1470 G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
1471 G1E_R_I(g2, g0, envs->i_l+0, envs->j_l, 0);
1472 G1E_R_I(g3, g1, envs->i_l+0, envs->j_l, 0);
1473 for (n = 0; n < nf; n++) {
1474 ix = idx[0+n*3];
1475 iy = idx[1+n*3];
1476 iz = idx[2+n*3];
1477 s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0];
1478 s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0];
1479 s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0];
1480 s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0];
1481 s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0];
1482 s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0];
1483 s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0];
1484 s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0];
1485 s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0];
1486 if (gout_empty) {
1487 gout[n*12+0] = + s[8] + s[4];
1488 gout[n*12+1] = - s[3];
1489 gout[n*12+2] = - s[6];
1490 gout[n*12+3] = + s[7] - s[5];
1491 gout[n*12+4] = - s[1];
1492 gout[n*12+5] = + s[0] + s[8];
1493 gout[n*12+6] = - s[7];
1494 gout[n*12+7] = - s[6] + s[2];
1495 gout[n*12+8] = - s[2];
1496 gout[n*12+9] = - s[5];
1497 gout[n*12+10] = + s[4] + s[0];
1498 gout[n*12+11] = + s[3] - s[1];
1499 } else {
1500 gout[n*12+0] += + s[8] + s[4];
1501 gout[n*12+1] += - s[3];
1502 gout[n*12+2] += - s[6];
1503 gout[n*12+3] += + s[7] - s[5];
1504 gout[n*12+4] += - s[1];
1505 gout[n*12+5] += + s[0] + s[8];
1506 gout[n*12+6] += - s[7];
1507 gout[n*12+7] += - s[6] + s[2];
1508 gout[n*12+8] += - s[2];
1509 gout[n*12+9] += - s[5];
1510 gout[n*12+10] += + s[4] + s[0];
1511 gout[n*12+11] += + s[3] - s[1];
1512 }}}
int1e_giao_sa10sp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1513 void int1e_giao_sa10sp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1514 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
1515 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1516 }
int1e_giao_sa10sp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1517 CACHE_SIZE_T int1e_giao_sa10sp_cart(double *out, FINT *dims, FINT *shls,
1518 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1519 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
1520 CINTEnvVars envs;
1521 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1522 envs.f_gout = &CINTgout1e_int1e_giao_sa10sp;
1523 envs.common_factor *= 0.5;
1524 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
1525 } // int1e_giao_sa10sp_cart
int1e_giao_sa10sp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1526 CACHE_SIZE_T int1e_giao_sa10sp_sph(double *out, FINT *dims, FINT *shls,
1527 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1528 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
1529 CINTEnvVars envs;
1530 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1531 envs.f_gout = &CINTgout1e_int1e_giao_sa10sp;
1532 envs.common_factor *= 0.5;
1533 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
1534 } // int1e_giao_sa10sp_sph
int1e_giao_sa10sp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1535 CACHE_SIZE_T int1e_giao_sa10sp_spinor(double complex *out, FINT *dims, FINT *shls,
1536 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1537 FINT ng[] = {1, 1, 0, 0, 2, 4, 1, 3};
1538 CINTEnvVars envs;
1539 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1540 envs.f_gout = &CINTgout1e_int1e_giao_sa10sp;
1541 envs.common_factor *= 0.5;
1542 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1ei, 0);
1543 } // int1e_giao_sa10sp_spinor
1544 ALL_CINT1E(int1e_giao_sa10sp)
ALL_CINT1E_FORTRAN_(int1e_giao_sa10sp)1545 ALL_CINT1E_FORTRAN_(int1e_giao_sa10sp)
1546 /* <R CROSS SIGMA i|NUC |SIGMA DOT P j> */
1547 void CINTgout1e_int1e_giao_sa10nucsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1548 FINT nf = envs->nf;
1549 FINT nrys_roots = envs->nrys_roots;
1550 FINT ix, iy, iz, n, i;
1551 double *g0 = g;
1552 double *g1 = g0 + envs->g_size * 3;
1553 double *g2 = g1 + envs->g_size * 3;
1554 double *g3 = g2 + envs->g_size * 3;
1555 G2E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0, 0);
1556 G2E_R_I(g2, g0, envs->i_l+0, envs->j_l, 0, 0);
1557 G2E_R_I(g3, g1, envs->i_l+0, envs->j_l, 0, 0);
1558 double s[9];
1559 for (n = 0; n < nf; n++) {
1560 ix = idx[0+n*3];
1561 iy = idx[1+n*3];
1562 iz = idx[2+n*3];
1563 for (i = 0; i < 9; i++) { s[i] = 0; }
1564 for (i = 0; i < nrys_roots; i++) {
1565 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
1566 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
1567 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
1568 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
1569 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
1570 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
1571 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
1572 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
1573 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
1574 }
1575 if (gout_empty) {
1576 gout[n*12+0] = + s[8] + s[4];
1577 gout[n*12+1] = - s[3];
1578 gout[n*12+2] = - s[6];
1579 gout[n*12+3] = + s[7] - s[5];
1580 gout[n*12+4] = - s[1];
1581 gout[n*12+5] = + s[0] + s[8];
1582 gout[n*12+6] = - s[7];
1583 gout[n*12+7] = - s[6] + s[2];
1584 gout[n*12+8] = - s[2];
1585 gout[n*12+9] = - s[5];
1586 gout[n*12+10] = + s[4] + s[0];
1587 gout[n*12+11] = + s[3] - s[1];
1588 } else {
1589 gout[n*12+0] += + s[8] + s[4];
1590 gout[n*12+1] += - s[3];
1591 gout[n*12+2] += - s[6];
1592 gout[n*12+3] += + s[7] - s[5];
1593 gout[n*12+4] += - s[1];
1594 gout[n*12+5] += + s[0] + s[8];
1595 gout[n*12+6] += - s[7];
1596 gout[n*12+7] += - s[6] + s[2];
1597 gout[n*12+8] += - s[2];
1598 gout[n*12+9] += - s[5];
1599 gout[n*12+10] += + s[4] + s[0];
1600 gout[n*12+11] += + s[3] - s[1];
1601 }}}
int1e_giao_sa10nucsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1602 void int1e_giao_sa10nucsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1603 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 3};
1604 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1605 }
int1e_giao_sa10nucsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1606 CACHE_SIZE_T int1e_giao_sa10nucsp_cart(double *out, FINT *dims, FINT *shls,
1607 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1608 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 3};
1609 CINTEnvVars envs;
1610 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1611 envs.f_gout = &CINTgout1e_int1e_giao_sa10nucsp;
1612 envs.common_factor *= 0.5;
1613 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
1614 } // int1e_giao_sa10nucsp_cart
int1e_giao_sa10nucsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1615 CACHE_SIZE_T int1e_giao_sa10nucsp_sph(double *out, FINT *dims, FINT *shls,
1616 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1617 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 3};
1618 CINTEnvVars envs;
1619 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1620 envs.f_gout = &CINTgout1e_int1e_giao_sa10nucsp;
1621 envs.common_factor *= 0.5;
1622 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
1623 } // int1e_giao_sa10nucsp_sph
int1e_giao_sa10nucsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1624 CACHE_SIZE_T int1e_giao_sa10nucsp_spinor(double complex *out, FINT *dims, FINT *shls,
1625 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1626 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 3};
1627 CINTEnvVars envs;
1628 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1629 envs.f_gout = &CINTgout1e_int1e_giao_sa10nucsp;
1630 envs.common_factor *= 0.5;
1631 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1ei, 2);
1632 } // int1e_giao_sa10nucsp_spinor
1633 ALL_CINT1E(int1e_giao_sa10nucsp)
ALL_CINT1E_FORTRAN_(int1e_giao_sa10nucsp)1634 ALL_CINT1E_FORTRAN_(int1e_giao_sa10nucsp)
1635 /* <i|NABLA-RINV CROSS SIGMA |SIGMA DOT P j> */
1636 void CINTgout1e_int1e_sa01sp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1637 FINT nf = envs->nf;
1638 FINT nrys_roots = envs->nrys_roots;
1639 FINT ix, iy, iz, n, i;
1640 double *g0 = g;
1641 double *g1 = g0 + envs->g_size * 3;
1642 double *g2 = g1 + envs->g_size * 3;
1643 double *g3 = g2 + envs->g_size * 3;
1644 G2E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0, 0);
1645 G2E_D_J(g2, g0, envs->i_l+0, envs->j_l+1, 0, 0);
1646 G2E_D_I(g3, g0, envs->i_l+0, envs->j_l+1, 0, 0);
1647 for (ix = 0; ix < envs->g_size * 3; ix++) {g2[ix] += g3[ix];}
1648 G2E_D_J(g3, g2, envs->i_l+0, envs->j_l+0, 0, 0);
1649 double s[9];
1650 for (n = 0; n < nf; n++) {
1651 ix = idx[0+n*3];
1652 iy = idx[1+n*3];
1653 iz = idx[2+n*3];
1654 for (i = 0; i < 9; i++) { s[i] = 0; }
1655 for (i = 0; i < nrys_roots; i++) {
1656 s[0] += g3[ix+i] * g0[iy+i] * g0[iz+i];
1657 s[1] += g2[ix+i] * g1[iy+i] * g0[iz+i];
1658 s[2] += g2[ix+i] * g0[iy+i] * g1[iz+i];
1659 s[3] += g1[ix+i] * g2[iy+i] * g0[iz+i];
1660 s[4] += g0[ix+i] * g3[iy+i] * g0[iz+i];
1661 s[5] += g0[ix+i] * g2[iy+i] * g1[iz+i];
1662 s[6] += g1[ix+i] * g0[iy+i] * g2[iz+i];
1663 s[7] += g0[ix+i] * g1[iy+i] * g2[iz+i];
1664 s[8] += g0[ix+i] * g0[iy+i] * g3[iz+i];
1665 }
1666 if (gout_empty) {
1667 gout[n*12+0] = + s[8] + s[4];
1668 gout[n*12+1] = - s[3];
1669 gout[n*12+2] = - s[6];
1670 gout[n*12+3] = + s[7] - s[5];
1671 gout[n*12+4] = - s[1];
1672 gout[n*12+5] = + s[0] + s[8];
1673 gout[n*12+6] = - s[7];
1674 gout[n*12+7] = - s[6] + s[2];
1675 gout[n*12+8] = - s[2];
1676 gout[n*12+9] = - s[5];
1677 gout[n*12+10] = + s[4] + s[0];
1678 gout[n*12+11] = + s[3] - s[1];
1679 } else {
1680 gout[n*12+0] += + s[8] + s[4];
1681 gout[n*12+1] += - s[3];
1682 gout[n*12+2] += - s[6];
1683 gout[n*12+3] += + s[7] - s[5];
1684 gout[n*12+4] += - s[1];
1685 gout[n*12+5] += + s[0] + s[8];
1686 gout[n*12+6] += - s[7];
1687 gout[n*12+7] += - s[6] + s[2];
1688 gout[n*12+8] += - s[2];
1689 gout[n*12+9] += - s[5];
1690 gout[n*12+10] += + s[4] + s[0];
1691 gout[n*12+11] += + s[3] - s[1];
1692 }}}
int1e_sa01sp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1693 void int1e_sa01sp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1694 FINT ng[] = {1, 2, 0, 0, 2, 4, 0, 3};
1695 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1696 }
int1e_sa01sp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1697 CACHE_SIZE_T int1e_sa01sp_cart(double *out, FINT *dims, FINT *shls,
1698 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1699 FINT ng[] = {1, 2, 0, 0, 2, 4, 0, 3};
1700 CINTEnvVars envs;
1701 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1702 envs.f_gout = &CINTgout1e_int1e_sa01sp;
1703 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
1704 } // int1e_sa01sp_cart
int1e_sa01sp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1705 CACHE_SIZE_T int1e_sa01sp_sph(double *out, FINT *dims, FINT *shls,
1706 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1707 FINT ng[] = {1, 2, 0, 0, 2, 4, 0, 3};
1708 CINTEnvVars envs;
1709 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1710 envs.f_gout = &CINTgout1e_int1e_sa01sp;
1711 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
1712 } // int1e_sa01sp_sph
int1e_sa01sp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1713 CACHE_SIZE_T int1e_sa01sp_spinor(double complex *out, FINT *dims, FINT *shls,
1714 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1715 FINT ng[] = {1, 2, 0, 0, 2, 4, 0, 3};
1716 CINTEnvVars envs;
1717 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1718 envs.f_gout = &CINTgout1e_int1e_sa01sp;
1719 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1ei, 1);
1720 } // int1e_sa01sp_spinor
1721 ALL_CINT1E(int1e_sa01sp)
ALL_CINT1E_FORTRAN_(int1e_sa01sp)1722 ALL_CINT1E_FORTRAN_(int1e_sa01sp)
1723 /* <G SIGMA DOT P i|OVLP |SIGMA DOT P j> */
1724 void CINTgout1e_int1e_spgsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1725 FINT nf = envs->nf;
1726 FINT ix, iy, iz, n;
1727 double *g0 = g;
1728 double *g1 = g0 + envs->g_size * 3;
1729 double *g2 = g1 + envs->g_size * 3;
1730 double *g3 = g2 + envs->g_size * 3;
1731 double *g4 = g3 + envs->g_size * 3;
1732 double *g5 = g4 + envs->g_size * 3;
1733 double *g6 = g5 + envs->g_size * 3;
1734 double *g7 = g6 + envs->g_size * 3;
1735 double rirj[3], c[3];
1736 rirj[0] = envs->ri[0] - envs->rj[0];
1737 rirj[1] = envs->ri[1] - envs->rj[1];
1738 rirj[2] = envs->ri[2] - envs->rj[2];
1739 c[0] = 1 * rirj[0];
1740 c[1] = 1 * rirj[1];
1741 c[2] = 1 * rirj[2];
1742 double s[27];
1743 G1E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0);
1744 G1E_R0I(g2, g0, envs->i_l+1, envs->j_l, 0);
1745 G1E_R0I(g3, g1, envs->i_l+1, envs->j_l, 0);
1746 G1E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0);
1747 G1E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0);
1748 G1E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0);
1749 G1E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0);
1750 for (n = 0; n < nf; n++) {
1751 ix = idx[0+n*3];
1752 iy = idx[1+n*3];
1753 iz = idx[2+n*3];
1754 s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0];
1755 s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0];
1756 s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0];
1757 s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0];
1758 s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0];
1759 s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0];
1760 s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0];
1761 s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0];
1762 s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0];
1763 s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0];
1764 s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0];
1765 s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0];
1766 s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0];
1767 s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0];
1768 s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0];
1769 s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0];
1770 s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0];
1771 s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0];
1772 s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0];
1773 s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0];
1774 s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0];
1775 s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0];
1776 s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0];
1777 s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0];
1778 s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0];
1779 s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0];
1780 s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0];
1781 if (gout_empty) {
1782 gout[n*12+0] = + c[1]*s[17] - c[2]*s[14] - c[1]*s[25] + c[2]*s[22];
1783 gout[n*12+1] = + c[1]*s[24] - c[1]*s[8];
1784 gout[n*12+2] = - c[2]*s[4] + c[2]*s[12];
1785 gout[n*12+3] = + c[1]*s[6] - c[2]*s[3] + c[1]*s[16] - c[2]*s[13] + c[1]*s[26] - c[2]*s[23];
1786 gout[n*12+4] = - c[0]*s[17] + c[0]*s[25];
1787 gout[n*12+5] = + c[2]*s[18] - c[0]*s[24] - c[2]*s[2] + c[0]*s[8];
1788 gout[n*12+6] = + c[2]*s[1] - c[2]*s[9];
1789 gout[n*12+7] = + c[2]*s[0] - c[0]*s[6] + c[2]*s[10] - c[0]*s[16] + c[2]*s[20] - c[0]*s[26];
1790 gout[n*12+8] = + c[0]*s[14] - c[0]*s[22];
1791 gout[n*12+9] = - c[1]*s[18] + c[1]*s[2];
1792 gout[n*12+10] = + c[0]*s[4] - c[1]*s[1] - c[0]*s[12] + c[1]*s[9];
1793 gout[n*12+11] = + c[0]*s[3] - c[1]*s[0] + c[0]*s[13] - c[1]*s[10] + c[0]*s[23] - c[1]*s[20];
1794 } else {
1795 gout[n*12+0] += + c[1]*s[17] - c[2]*s[14] - c[1]*s[25] + c[2]*s[22];
1796 gout[n*12+1] += + c[1]*s[24] - c[1]*s[8];
1797 gout[n*12+2] += - c[2]*s[4] + c[2]*s[12];
1798 gout[n*12+3] += + c[1]*s[6] - c[2]*s[3] + c[1]*s[16] - c[2]*s[13] + c[1]*s[26] - c[2]*s[23];
1799 gout[n*12+4] += - c[0]*s[17] + c[0]*s[25];
1800 gout[n*12+5] += + c[2]*s[18] - c[0]*s[24] - c[2]*s[2] + c[0]*s[8];
1801 gout[n*12+6] += + c[2]*s[1] - c[2]*s[9];
1802 gout[n*12+7] += + c[2]*s[0] - c[0]*s[6] + c[2]*s[10] - c[0]*s[16] + c[2]*s[20] - c[0]*s[26];
1803 gout[n*12+8] += + c[0]*s[14] - c[0]*s[22];
1804 gout[n*12+9] += - c[1]*s[18] + c[1]*s[2];
1805 gout[n*12+10] += + c[0]*s[4] - c[1]*s[1] - c[0]*s[12] + c[1]*s[9];
1806 gout[n*12+11] += + c[0]*s[3] - c[1]*s[0] + c[0]*s[13] - c[1]*s[10] + c[0]*s[23] - c[1]*s[20];
1807 }}}
int1e_spgsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1808 void int1e_spgsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1809 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
1810 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1811 }
int1e_spgsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1812 CACHE_SIZE_T int1e_spgsp_cart(double *out, FINT *dims, FINT *shls,
1813 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1814 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
1815 CINTEnvVars envs;
1816 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1817 envs.f_gout = &CINTgout1e_int1e_spgsp;
1818 envs.common_factor *= 0.5;
1819 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1820 FINT i, nout;
1821 FINT counts[4];
1822 counts[0] = envs.nfi * envs.x_ctr[0];
1823 counts[1] = envs.nfj * envs.x_ctr[1];
1824 counts[2] = 1;
1825 counts[3] = 1;
1826 if (dims == NULL) { dims = counts; }
1827 nout = dims[0] * dims[1];
1828 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) {
1829 c2s_dset0(out+nout*i, dims, counts); }
1830 return 0; }
1831 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
1832 } // int1e_spgsp_cart
int1e_spgsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1833 CACHE_SIZE_T int1e_spgsp_sph(double *out, FINT *dims, FINT *shls,
1834 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1835 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
1836 CINTEnvVars envs;
1837 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1838 envs.f_gout = &CINTgout1e_int1e_spgsp;
1839 envs.common_factor *= 0.5;
1840 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1841 FINT i, nout;
1842 FINT counts[4];
1843 counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
1844 counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
1845 counts[2] = 1;
1846 counts[3] = 1;
1847 if (dims == NULL) { dims = counts; }
1848 nout = dims[0] * dims[1];
1849 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) {
1850 c2s_dset0(out+nout*i, dims, counts); }
1851 return 0; }
1852 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
1853 } // int1e_spgsp_sph
int1e_spgsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1854 CACHE_SIZE_T int1e_spgsp_spinor(double complex *out, FINT *dims, FINT *shls,
1855 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1856 FINT ng[] = {2, 1, 0, 0, 3, 4, 1, 3};
1857 CINTEnvVars envs;
1858 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1859 envs.f_gout = &CINTgout1e_int1e_spgsp;
1860 envs.common_factor *= 0.5;
1861 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1862 FINT i, nout;
1863 FINT counts[4];
1864 counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
1865 counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
1866 counts[2] = 1;
1867 counts[3] = 1;
1868 if (dims == NULL) { dims = counts; }
1869 nout = dims[0] * dims[1];
1870 for (i = 0; i < envs.ncomp_tensor; i++) {
1871 c2s_zset0(out+nout*i, dims, counts); }
1872 return 0; }
1873 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1ei, 0);
1874 } // int1e_spgsp_spinor
1875 ALL_CINT1E(int1e_spgsp)
ALL_CINT1E_FORTRAN_(int1e_spgsp)1876 ALL_CINT1E_FORTRAN_(int1e_spgsp)
1877 /* <G SIGMA DOT P i|NUC |SIGMA DOT P j> */
1878 void CINTgout1e_int1e_spgnucsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
1879 FINT nf = envs->nf;
1880 FINT nrys_roots = envs->nrys_roots;
1881 FINT ix, iy, iz, n, i;
1882 double *g0 = g;
1883 double *g1 = g0 + envs->g_size * 3;
1884 double *g2 = g1 + envs->g_size * 3;
1885 double *g3 = g2 + envs->g_size * 3;
1886 double *g4 = g3 + envs->g_size * 3;
1887 double *g5 = g4 + envs->g_size * 3;
1888 double *g6 = g5 + envs->g_size * 3;
1889 double *g7 = g6 + envs->g_size * 3;
1890 double rirj[3], c[3];
1891 rirj[0] = envs->ri[0] - envs->rj[0];
1892 rirj[1] = envs->ri[1] - envs->rj[1];
1893 rirj[2] = envs->ri[2] - envs->rj[2];
1894 c[0] = 1 * rirj[0];
1895 c[1] = 1 * rirj[1];
1896 c[2] = 1 * rirj[2];
1897 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
1898 G2E_R0I(g2, g0, envs->i_l+1, envs->j_l, 0, 0);
1899 G2E_R0I(g3, g1, envs->i_l+1, envs->j_l, 0, 0);
1900 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0);
1901 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0);
1902 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0);
1903 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0);
1904 double s[27];
1905 for (n = 0; n < nf; n++) {
1906 ix = idx[0+n*3];
1907 iy = idx[1+n*3];
1908 iz = idx[2+n*3];
1909 for (i = 0; i < 27; i++) { s[i] = 0; }
1910 for (i = 0; i < nrys_roots; i++) {
1911 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
1912 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
1913 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
1914 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
1915 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
1916 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
1917 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
1918 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
1919 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
1920 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
1921 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
1922 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
1923 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
1924 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
1925 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
1926 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
1927 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
1928 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
1929 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
1930 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
1931 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
1932 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
1933 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
1934 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
1935 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
1936 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
1937 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
1938 }
1939 if (gout_empty) {
1940 gout[n*12+0] = + c[1]*s[17] - c[2]*s[14] - c[1]*s[25] + c[2]*s[22];
1941 gout[n*12+1] = + c[1]*s[24] - c[2]*s[21] - c[1]*s[8] + c[2]*s[5];
1942 gout[n*12+2] = + c[1]*s[7] - c[2]*s[4] - c[1]*s[15] + c[2]*s[12];
1943 gout[n*12+3] = + c[1]*s[6] - c[2]*s[3] + c[1]*s[16] - c[2]*s[13] + c[1]*s[26] - c[2]*s[23];
1944 gout[n*12+4] = + c[2]*s[11] - c[0]*s[17] - c[2]*s[19] + c[0]*s[25];
1945 gout[n*12+5] = + c[2]*s[18] - c[0]*s[24] - c[2]*s[2] + c[0]*s[8];
1946 gout[n*12+6] = + c[2]*s[1] - c[0]*s[7] - c[2]*s[9] + c[0]*s[15];
1947 gout[n*12+7] = + c[2]*s[0] - c[0]*s[6] + c[2]*s[10] - c[0]*s[16] + c[2]*s[20] - c[0]*s[26];
1948 gout[n*12+8] = + c[0]*s[14] - c[1]*s[11] - c[0]*s[22] + c[1]*s[19];
1949 gout[n*12+9] = + c[0]*s[21] - c[1]*s[18] - c[0]*s[5] + c[1]*s[2];
1950 gout[n*12+10] = + c[0]*s[4] - c[1]*s[1] - c[0]*s[12] + c[1]*s[9];
1951 gout[n*12+11] = + c[0]*s[3] - c[1]*s[0] + c[0]*s[13] - c[1]*s[10] + c[0]*s[23] - c[1]*s[20];
1952 } else {
1953 gout[n*12+0] += + c[1]*s[17] - c[2]*s[14] - c[1]*s[25] + c[2]*s[22];
1954 gout[n*12+1] += + c[1]*s[24] - c[2]*s[21] - c[1]*s[8] + c[2]*s[5];
1955 gout[n*12+2] += + c[1]*s[7] - c[2]*s[4] - c[1]*s[15] + c[2]*s[12];
1956 gout[n*12+3] += + c[1]*s[6] - c[2]*s[3] + c[1]*s[16] - c[2]*s[13] + c[1]*s[26] - c[2]*s[23];
1957 gout[n*12+4] += + c[2]*s[11] - c[0]*s[17] - c[2]*s[19] + c[0]*s[25];
1958 gout[n*12+5] += + c[2]*s[18] - c[0]*s[24] - c[2]*s[2] + c[0]*s[8];
1959 gout[n*12+6] += + c[2]*s[1] - c[0]*s[7] - c[2]*s[9] + c[0]*s[15];
1960 gout[n*12+7] += + c[2]*s[0] - c[0]*s[6] + c[2]*s[10] - c[0]*s[16] + c[2]*s[20] - c[0]*s[26];
1961 gout[n*12+8] += + c[0]*s[14] - c[1]*s[11] - c[0]*s[22] + c[1]*s[19];
1962 gout[n*12+9] += + c[0]*s[21] - c[1]*s[18] - c[0]*s[5] + c[1]*s[2];
1963 gout[n*12+10] += + c[0]*s[4] - c[1]*s[1] - c[0]*s[12] + c[1]*s[9];
1964 gout[n*12+11] += + c[0]*s[3] - c[1]*s[0] + c[0]*s[13] - c[1]*s[10] + c[0]*s[23] - c[1]*s[20];
1965 }}}
int1e_spgnucsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)1966 void int1e_spgnucsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
1967 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
1968 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
1969 }
int1e_spgnucsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1970 CACHE_SIZE_T int1e_spgnucsp_cart(double *out, FINT *dims, FINT *shls,
1971 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1972 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
1973 CINTEnvVars envs;
1974 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1975 envs.f_gout = &CINTgout1e_int1e_spgnucsp;
1976 envs.common_factor *= 0.5;
1977 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1978 FINT i, nout;
1979 FINT counts[4];
1980 counts[0] = envs.nfi * envs.x_ctr[0];
1981 counts[1] = envs.nfj * envs.x_ctr[1];
1982 counts[2] = 1;
1983 counts[3] = 1;
1984 if (dims == NULL) { dims = counts; }
1985 nout = dims[0] * dims[1];
1986 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) {
1987 c2s_dset0(out+nout*i, dims, counts); }
1988 return 0; }
1989 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
1990 } // int1e_spgnucsp_cart
int1e_spgnucsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)1991 CACHE_SIZE_T int1e_spgnucsp_sph(double *out, FINT *dims, FINT *shls,
1992 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
1993 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
1994 CINTEnvVars envs;
1995 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
1996 envs.f_gout = &CINTgout1e_int1e_spgnucsp;
1997 envs.common_factor *= 0.5;
1998 if (out != NULL && envs.shls[0] == envs.shls[1]) {
1999 FINT i, nout;
2000 FINT counts[4];
2001 counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
2002 counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
2003 counts[2] = 1;
2004 counts[3] = 1;
2005 if (dims == NULL) { dims = counts; }
2006 nout = dims[0] * dims[1];
2007 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) {
2008 c2s_dset0(out+nout*i, dims, counts); }
2009 return 0; }
2010 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
2011 } // int1e_spgnucsp_sph
int1e_spgnucsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2012 CACHE_SIZE_T int1e_spgnucsp_spinor(double complex *out, FINT *dims, FINT *shls,
2013 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2014 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
2015 CINTEnvVars envs;
2016 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2017 envs.f_gout = &CINTgout1e_int1e_spgnucsp;
2018 envs.common_factor *= 0.5;
2019 if (out != NULL && envs.shls[0] == envs.shls[1]) {
2020 FINT i, nout;
2021 FINT counts[4];
2022 counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
2023 counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
2024 counts[2] = 1;
2025 counts[3] = 1;
2026 if (dims == NULL) { dims = counts; }
2027 nout = dims[0] * dims[1];
2028 for (i = 0; i < envs.ncomp_tensor; i++) {
2029 c2s_zset0(out+nout*i, dims, counts); }
2030 return 0; }
2031 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1ei, 2);
2032 } // int1e_spgnucsp_spinor
2033 ALL_CINT1E(int1e_spgnucsp)
ALL_CINT1E_FORTRAN_(int1e_spgnucsp)2034 ALL_CINT1E_FORTRAN_(int1e_spgnucsp)
2035 /* <G SIGMA DOT P i|NABLA-RINV CROSS SIGMA |j> */
2036 void CINTgout1e_int1e_spgsa01(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
2037 FINT nf = envs->nf;
2038 FINT nrys_roots = envs->nrys_roots;
2039 FINT ix, iy, iz, n, i;
2040 double *g0 = g;
2041 double *g1 = g0 + envs->g_size * 3;
2042 double *g2 = g1 + envs->g_size * 3;
2043 double *g3 = g2 + envs->g_size * 3;
2044 double *g4 = g3 + envs->g_size * 3;
2045 double *g5 = g4 + envs->g_size * 3;
2046 double *g6 = g5 + envs->g_size * 3;
2047 double *g7 = g6 + envs->g_size * 3;
2048 double rirj[3], c[3];
2049 rirj[0] = envs->ri[0] - envs->rj[0];
2050 rirj[1] = envs->ri[1] - envs->rj[1];
2051 rirj[2] = envs->ri[2] - envs->rj[2];
2052 c[0] = 1 * rirj[0];
2053 c[1] = 1 * rirj[1];
2054 c[2] = 1 * rirj[2];
2055 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
2056 G2E_D_I(g2, g0, envs->i_l+2, envs->j_l+0, 0, 0);
2057 for (ix = 0; ix < envs->g_size * 3; ix++) {g1[ix] += g2[ix];}
2058 G2E_R0I(g2, g0, envs->i_l+1, envs->j_l, 0, 0);
2059 G2E_R0I(g3, g1, envs->i_l+1, envs->j_l, 0, 0);
2060 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0);
2061 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0);
2062 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0);
2063 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0);
2064 double s[27];
2065 for (n = 0; n < nf; n++) {
2066 ix = idx[0+n*3];
2067 iy = idx[1+n*3];
2068 iz = idx[2+n*3];
2069 for (i = 0; i < 27; i++) { s[i] = 0; }
2070 for (i = 0; i < nrys_roots; i++) {
2071 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
2072 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
2073 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
2074 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
2075 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
2076 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
2077 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
2078 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
2079 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
2080 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
2081 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
2082 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
2083 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
2084 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
2085 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
2086 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
2087 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
2088 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
2089 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
2090 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
2091 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
2092 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
2093 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
2094 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
2095 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
2096 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
2097 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
2098 }
2099 if (gout_empty) {
2100 gout[n*36+0] = - c[1]*s[16] + c[2]*s[13] - c[1]*s[26] + c[2]*s[23];
2101 gout[n*36+1] = + c[1]*s[7] - c[2]*s[4];
2102 gout[n*36+2] = + c[1]*s[8] - c[2]*s[5];
2103 gout[n*36+3] = + c[1]*s[17] - c[2]*s[14] - c[1]*s[25] + c[2]*s[22];
2104 gout[n*36+4] = + c[1]*s[15] - c[2]*s[12];
2105 gout[n*36+5] = - c[1]*s[26] + c[2]*s[23] - c[1]*s[6] + c[2]*s[3];
2106 gout[n*36+6] = + c[1]*s[17] - c[2]*s[14];
2107 gout[n*36+7] = - c[1]*s[8] + c[2]*s[5] + c[1]*s[24] - c[2]*s[21];
2108 gout[n*36+8] = + c[1]*s[24] - c[2]*s[21];
2109 gout[n*36+9] = + c[1]*s[25] - c[2]*s[22];
2110 gout[n*36+10] = - c[1]*s[6] + c[2]*s[3] - c[1]*s[16] + c[2]*s[13];
2111 gout[n*36+11] = + c[1]*s[7] - c[2]*s[4] - c[1]*s[15] + c[2]*s[12];
2112 gout[n*36+12] = - c[2]*s[10] + c[0]*s[16] - c[2]*s[20] + c[0]*s[26];
2113 gout[n*36+13] = + c[2]*s[1] - c[0]*s[7];
2114 gout[n*36+14] = + c[2]*s[2] - c[0]*s[8];
2115 gout[n*36+15] = + c[2]*s[11] - c[0]*s[17] - c[2]*s[19] + c[0]*s[25];
2116 gout[n*36+16] = + c[2]*s[9] - c[0]*s[15];
2117 gout[n*36+17] = - c[2]*s[20] + c[0]*s[26] - c[2]*s[0] + c[0]*s[6];
2118 gout[n*36+18] = + c[2]*s[11] - c[0]*s[17];
2119 gout[n*36+19] = - c[2]*s[2] + c[0]*s[8] + c[2]*s[18] - c[0]*s[24];
2120 gout[n*36+20] = + c[2]*s[18] - c[0]*s[24];
2121 gout[n*36+21] = + c[2]*s[19] - c[0]*s[25];
2122 gout[n*36+22] = - c[2]*s[0] + c[0]*s[6] - c[2]*s[10] + c[0]*s[16];
2123 gout[n*36+23] = + c[2]*s[1] - c[0]*s[7] - c[2]*s[9] + c[0]*s[15];
2124 gout[n*36+24] = - c[0]*s[13] + c[1]*s[10] - c[0]*s[23] + c[1]*s[20];
2125 gout[n*36+25] = + c[0]*s[4] - c[1]*s[1];
2126 gout[n*36+26] = + c[0]*s[5] - c[1]*s[2];
2127 gout[n*36+27] = + c[0]*s[14] - c[1]*s[11] - c[0]*s[22] + c[1]*s[19];
2128 gout[n*36+28] = + c[0]*s[12] - c[1]*s[9];
2129 gout[n*36+29] = - c[0]*s[23] + c[1]*s[20] - c[0]*s[3] + c[1]*s[0];
2130 gout[n*36+30] = + c[0]*s[14] - c[1]*s[11];
2131 gout[n*36+31] = - c[0]*s[5] + c[1]*s[2] + c[0]*s[21] - c[1]*s[18];
2132 gout[n*36+32] = + c[0]*s[21] - c[1]*s[18];
2133 gout[n*36+33] = + c[0]*s[22] - c[1]*s[19];
2134 gout[n*36+34] = - c[0]*s[3] + c[1]*s[0] - c[0]*s[13] + c[1]*s[10];
2135 gout[n*36+35] = + c[0]*s[4] - c[1]*s[1] - c[0]*s[12] + c[1]*s[9];
2136 } else {
2137 gout[n*36+0] += - c[1]*s[16] + c[2]*s[13] - c[1]*s[26] + c[2]*s[23];
2138 gout[n*36+1] += + c[1]*s[7] - c[2]*s[4];
2139 gout[n*36+2] += + c[1]*s[8] - c[2]*s[5];
2140 gout[n*36+3] += + c[1]*s[17] - c[2]*s[14] - c[1]*s[25] + c[2]*s[22];
2141 gout[n*36+4] += + c[1]*s[15] - c[2]*s[12];
2142 gout[n*36+5] += - c[1]*s[26] + c[2]*s[23] - c[1]*s[6] + c[2]*s[3];
2143 gout[n*36+6] += + c[1]*s[17] - c[2]*s[14];
2144 gout[n*36+7] += - c[1]*s[8] + c[2]*s[5] + c[1]*s[24] - c[2]*s[21];
2145 gout[n*36+8] += + c[1]*s[24] - c[2]*s[21];
2146 gout[n*36+9] += + c[1]*s[25] - c[2]*s[22];
2147 gout[n*36+10] += - c[1]*s[6] + c[2]*s[3] - c[1]*s[16] + c[2]*s[13];
2148 gout[n*36+11] += + c[1]*s[7] - c[2]*s[4] - c[1]*s[15] + c[2]*s[12];
2149 gout[n*36+12] += - c[2]*s[10] + c[0]*s[16] - c[2]*s[20] + c[0]*s[26];
2150 gout[n*36+13] += + c[2]*s[1] - c[0]*s[7];
2151 gout[n*36+14] += + c[2]*s[2] - c[0]*s[8];
2152 gout[n*36+15] += + c[2]*s[11] - c[0]*s[17] - c[2]*s[19] + c[0]*s[25];
2153 gout[n*36+16] += + c[2]*s[9] - c[0]*s[15];
2154 gout[n*36+17] += - c[2]*s[20] + c[0]*s[26] - c[2]*s[0] + c[0]*s[6];
2155 gout[n*36+18] += + c[2]*s[11] - c[0]*s[17];
2156 gout[n*36+19] += - c[2]*s[2] + c[0]*s[8] + c[2]*s[18] - c[0]*s[24];
2157 gout[n*36+20] += + c[2]*s[18] - c[0]*s[24];
2158 gout[n*36+21] += + c[2]*s[19] - c[0]*s[25];
2159 gout[n*36+22] += - c[2]*s[0] + c[0]*s[6] - c[2]*s[10] + c[0]*s[16];
2160 gout[n*36+23] += + c[2]*s[1] - c[0]*s[7] - c[2]*s[9] + c[0]*s[15];
2161 gout[n*36+24] += - c[0]*s[13] + c[1]*s[10] - c[0]*s[23] + c[1]*s[20];
2162 gout[n*36+25] += + c[0]*s[4] - c[1]*s[1];
2163 gout[n*36+26] += + c[0]*s[5] - c[1]*s[2];
2164 gout[n*36+27] += + c[0]*s[14] - c[1]*s[11] - c[0]*s[22] + c[1]*s[19];
2165 gout[n*36+28] += + c[0]*s[12] - c[1]*s[9];
2166 gout[n*36+29] += - c[0]*s[23] + c[1]*s[20] - c[0]*s[3] + c[1]*s[0];
2167 gout[n*36+30] += + c[0]*s[14] - c[1]*s[11];
2168 gout[n*36+31] += - c[0]*s[5] + c[1]*s[2] + c[0]*s[21] - c[1]*s[18];
2169 gout[n*36+32] += + c[0]*s[21] - c[1]*s[18];
2170 gout[n*36+33] += + c[0]*s[22] - c[1]*s[19];
2171 gout[n*36+34] += - c[0]*s[3] + c[1]*s[0] - c[0]*s[13] + c[1]*s[10];
2172 gout[n*36+35] += + c[0]*s[4] - c[1]*s[1] - c[0]*s[12] + c[1]*s[9];
2173 }}}
int1e_spgsa01_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)2174 void int1e_spgsa01_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
2175 FINT ng[] = {3, 1, 0, 0, 3, 4, 0, 9};
2176 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
2177 }
int1e_spgsa01_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2178 CACHE_SIZE_T int1e_spgsa01_cart(double *out, FINT *dims, FINT *shls,
2179 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2180 FINT ng[] = {3, 1, 0, 0, 3, 4, 0, 9};
2181 CINTEnvVars envs;
2182 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2183 envs.f_gout = &CINTgout1e_int1e_spgsa01;
2184 envs.common_factor *= 0.5;
2185 if (out != NULL && envs.shls[0] == envs.shls[1]) {
2186 FINT i, nout;
2187 FINT counts[4];
2188 counts[0] = envs.nfi * envs.x_ctr[0];
2189 counts[1] = envs.nfj * envs.x_ctr[1];
2190 counts[2] = 1;
2191 counts[3] = 1;
2192 if (dims == NULL) { dims = counts; }
2193 nout = dims[0] * dims[1];
2194 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) {
2195 c2s_dset0(out+nout*i, dims, counts); }
2196 return 0; }
2197 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
2198 } // int1e_spgsa01_cart
int1e_spgsa01_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2199 CACHE_SIZE_T int1e_spgsa01_sph(double *out, FINT *dims, FINT *shls,
2200 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2201 FINT ng[] = {3, 1, 0, 0, 3, 4, 0, 9};
2202 CINTEnvVars envs;
2203 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2204 envs.f_gout = &CINTgout1e_int1e_spgsa01;
2205 envs.common_factor *= 0.5;
2206 if (out != NULL && envs.shls[0] == envs.shls[1]) {
2207 FINT i, nout;
2208 FINT counts[4];
2209 counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
2210 counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
2211 counts[2] = 1;
2212 counts[3] = 1;
2213 if (dims == NULL) { dims = counts; }
2214 nout = dims[0] * dims[1];
2215 for (i = 0; i < envs.ncomp_e1 * envs.ncomp_tensor; i++) {
2216 c2s_dset0(out+nout*i, dims, counts); }
2217 return 0; }
2218 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
2219 } // int1e_spgsa01_sph
int1e_spgsa01_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)2220 CACHE_SIZE_T int1e_spgsa01_spinor(double complex *out, FINT *dims, FINT *shls,
2221 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
2222 FINT ng[] = {3, 1, 0, 0, 3, 4, 0, 9};
2223 CINTEnvVars envs;
2224 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
2225 envs.f_gout = &CINTgout1e_int1e_spgsa01;
2226 envs.common_factor *= 0.5;
2227 if (out != NULL && envs.shls[0] == envs.shls[1]) {
2228 FINT i, nout;
2229 FINT counts[4];
2230 counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
2231 counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
2232 counts[2] = 1;
2233 counts[3] = 1;
2234 if (dims == NULL) { dims = counts; }
2235 nout = dims[0] * dims[1];
2236 for (i = 0; i < envs.ncomp_tensor; i++) {
2237 c2s_zset0(out+nout*i, dims, counts); }
2238 return 0; }
2239 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 1);
2240 } // int1e_spgsa01_spinor
2241 ALL_CINT1E(int1e_spgsa01)
2242 ALL_CINT1E_FORTRAN_(int1e_spgsa01)
2243