1 /*
2  * Copyright (C) 2013-  Qiming Sun <osirpt.sun@gmail.com>
3  * Description: code generated by  gen-code.cl
4  */
5 #include <stdlib.h>
6 #include <stdio.h>
7 #include "cint_bas.h"
8 #include "cart2sph.h"
9 #include "g1e.h"
10 #include "g1e_grids.h"
11 #include "g2e.h"
12 #include "optimizer.h"
13 #include "cint1e.h"
14 #include "cint2e.h"
15 #include "misc.h"
16 #include "c2f.h"
17 /* <NABLA i|OVLP |j> */
CINTgout1e_int1e_ipovlp(double * gout,double * g,FINT * idx,CINTEnvVars * envs,FINT gout_empty)18 void CINTgout1e_int1e_ipovlp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
19 FINT nf = envs->nf;
20 FINT ix, iy, iz, n;
21 double *g0 = g;
22 double *g1 = g0 + envs->g_size * 3;
23 double s[3];
24 G1E_D_I(g1, g0, envs->i_l+0, envs->j_l, 0);
25 for (n = 0; n < nf; n++) {
26 ix = idx[0+n*3];
27 iy = idx[1+n*3];
28 iz = idx[2+n*3];
29 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0];
30 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0];
31 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0];
32 if (gout_empty) {
33 gout[n*3+0] = + s[0];
34 gout[n*3+1] = + s[1];
35 gout[n*3+2] = + s[2];
36 } else {
37 gout[n*3+0] += + s[0];
38 gout[n*3+1] += + s[1];
39 gout[n*3+2] += + s[2];
40 }}}
int1e_ipovlp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)41 void int1e_ipovlp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
42 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
43 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
44 }
int1e_ipovlp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)45 CACHE_SIZE_T int1e_ipovlp_cart(double *out, FINT *dims, FINT *shls,
46 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
47 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
48 CINTEnvVars envs;
49 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
50 envs.f_gout = &CINTgout1e_int1e_ipovlp;
51 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
52 } // int1e_ipovlp_cart
int1e_ipovlp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)53 CACHE_SIZE_T int1e_ipovlp_sph(double *out, FINT *dims, FINT *shls,
54 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
55 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
56 CINTEnvVars envs;
57 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
58 envs.f_gout = &CINTgout1e_int1e_ipovlp;
59 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
60 } // int1e_ipovlp_sph
int1e_ipovlp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)61 CACHE_SIZE_T int1e_ipovlp_spinor(double complex *out, FINT *dims, FINT *shls,
62 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
63 FINT ng[] = {1, 0, 0, 0, 1, 1, 1, 3};
64 CINTEnvVars envs;
65 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
66 envs.f_gout = &CINTgout1e_int1e_ipovlp;
67 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0);
68 } // int1e_ipovlp_spinor
69 ALL_CINT1E(int1e_ipovlp)
ALL_CINT1E_FORTRAN_(int1e_ipovlp)70 ALL_CINT1E_FORTRAN_(int1e_ipovlp)
71 /* <i|OVLP |NABLA j> */
72 void CINTgout1e_int1e_ovlpip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
73 FINT nf = envs->nf;
74 FINT ix, iy, iz, n;
75 double *g0 = g;
76 double *g1 = g0 + envs->g_size * 3;
77 double s[3];
78 G1E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0);
79 for (n = 0; n < nf; n++) {
80 ix = idx[0+n*3];
81 iy = idx[1+n*3];
82 iz = idx[2+n*3];
83 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0];
84 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0];
85 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0];
86 if (gout_empty) {
87 gout[n*3+0] = + s[0];
88 gout[n*3+1] = + s[1];
89 gout[n*3+2] = + s[2];
90 } else {
91 gout[n*3+0] += + s[0];
92 gout[n*3+1] += + s[1];
93 gout[n*3+2] += + s[2];
94 }}}
int1e_ovlpip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)95 void int1e_ovlpip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
96 FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3};
97 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
98 }
int1e_ovlpip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)99 CACHE_SIZE_T int1e_ovlpip_cart(double *out, FINT *dims, FINT *shls,
100 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
101 FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3};
102 CINTEnvVars envs;
103 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
104 envs.f_gout = &CINTgout1e_int1e_ovlpip;
105 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
106 } // int1e_ovlpip_cart
int1e_ovlpip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)107 CACHE_SIZE_T int1e_ovlpip_sph(double *out, FINT *dims, FINT *shls,
108 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
109 FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3};
110 CINTEnvVars envs;
111 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
112 envs.f_gout = &CINTgout1e_int1e_ovlpip;
113 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
114 } // int1e_ovlpip_sph
int1e_ovlpip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)115 CACHE_SIZE_T int1e_ovlpip_spinor(double complex *out, FINT *dims, FINT *shls,
116 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
117 FINT ng[] = {0, 1, 0, 0, 1, 1, 1, 3};
118 CINTEnvVars envs;
119 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
120 envs.f_gout = &CINTgout1e_int1e_ovlpip;
121 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0);
122 } // int1e_ovlpip_spinor
123 ALL_CINT1E(int1e_ovlpip)
ALL_CINT1E_FORTRAN_(int1e_ovlpip)124 ALL_CINT1E_FORTRAN_(int1e_ovlpip)
125 /* <NABLA i|OVLP |P DOT P j> */
126 void CINTgout1e_int1e_ipkin(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
127 FINT nf = envs->nf;
128 FINT ix, iy, iz, n;
129 double *g0 = g;
130 double *g1 = g0 + envs->g_size * 3;
131 double *g2 = g1 + envs->g_size * 3;
132 double *g3 = g2 + envs->g_size * 3;
133 double *g4 = g3 + envs->g_size * 3;
134 double *g5 = g4 + envs->g_size * 3;
135 double *g6 = g5 + envs->g_size * 3;
136 double *g7 = g6 + envs->g_size * 3;
137 double s[27];
138 G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
139 G1E_D_J(g2, g0, envs->i_l+1, envs->j_l+1, 0);
140 G1E_D_J(g3, g2, envs->i_l+1, envs->j_l+0, 0);
141 G1E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0);
142 G1E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0);
143 G1E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0);
144 G1E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0);
145 for (n = 0; n < nf; n++) {
146 ix = idx[0+n*3];
147 iy = idx[1+n*3];
148 iz = idx[2+n*3];
149 s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0];
150 s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0];
151 s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0];
152 s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0];
153 s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0];
154 s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0];
155 s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0];
156 s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0];
157 s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0];
158 s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0];
159 s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0];
160 s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0];
161 s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0];
162 s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0];
163 s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0];
164 s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0];
165 s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0];
166 s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0];
167 s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0];
168 s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0];
169 s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0];
170 s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0];
171 s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0];
172 s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0];
173 s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0];
174 s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0];
175 s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0];
176 if (gout_empty) {
177 gout[n*3+0] = - s[0] - s[4] - s[8];
178 gout[n*3+1] = - s[9] - s[13] - s[17];
179 gout[n*3+2] = - s[18] - s[22] - s[26];
180 } else {
181 gout[n*3+0] += - s[0] - s[4] - s[8];
182 gout[n*3+1] += - s[9] - s[13] - s[17];
183 gout[n*3+2] += - s[18] - s[22] - s[26];
184 }}}
int1e_ipkin_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)185 void int1e_ipkin_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
186 FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3};
187 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
188 }
int1e_ipkin_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)189 CACHE_SIZE_T int1e_ipkin_cart(double *out, FINT *dims, FINT *shls,
190 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
191 FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3};
192 CINTEnvVars envs;
193 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
194 envs.f_gout = &CINTgout1e_int1e_ipkin;
195 envs.common_factor *= 0.5;
196 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
197 } // int1e_ipkin_cart
int1e_ipkin_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)198 CACHE_SIZE_T int1e_ipkin_sph(double *out, FINT *dims, FINT *shls,
199 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
200 FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3};
201 CINTEnvVars envs;
202 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
203 envs.f_gout = &CINTgout1e_int1e_ipkin;
204 envs.common_factor *= 0.5;
205 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
206 } // int1e_ipkin_sph
int1e_ipkin_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)207 CACHE_SIZE_T int1e_ipkin_spinor(double complex *out, FINT *dims, FINT *shls,
208 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
209 FINT ng[] = {1, 2, 0, 0, 3, 1, 1, 3};
210 CINTEnvVars envs;
211 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
212 envs.f_gout = &CINTgout1e_int1e_ipkin;
213 envs.common_factor *= 0.5;
214 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0);
215 } // int1e_ipkin_spinor
216 ALL_CINT1E(int1e_ipkin)
ALL_CINT1E_FORTRAN_(int1e_ipkin)217 ALL_CINT1E_FORTRAN_(int1e_ipkin)
218 /* <i|OVLP |P DOT P NABLA j> */
219 void CINTgout1e_int1e_kinip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
220 FINT nf = envs->nf;
221 FINT ix, iy, iz, n;
222 double *g0 = g;
223 double *g1 = g0 + envs->g_size * 3;
224 double *g2 = g1 + envs->g_size * 3;
225 double *g3 = g2 + envs->g_size * 3;
226 double *g4 = g3 + envs->g_size * 3;
227 double *g5 = g4 + envs->g_size * 3;
228 double *g6 = g5 + envs->g_size * 3;
229 double *g7 = g6 + envs->g_size * 3;
230 double s[27];
231 G1E_D_J(g1, g0, envs->i_l+0, envs->j_l+0, 0);
232 G1E_D_J(g2, g0, envs->i_l+0, envs->j_l+1, 0);
233 G1E_D_J(g3, g2, envs->i_l+0, envs->j_l+0, 0);
234 G1E_D_J(g4, g0, envs->i_l+0, envs->j_l+2, 0);
235 G1E_D_J(g5, g4, envs->i_l+0, envs->j_l+0, 0);
236 G1E_D_J(g6, g4, envs->i_l+0, envs->j_l+1, 0);
237 G1E_D_J(g7, g6, envs->i_l+0, envs->j_l+0, 0);
238 for (n = 0; n < nf; n++) {
239 ix = idx[0+n*3];
240 iy = idx[1+n*3];
241 iz = idx[2+n*3];
242 s[0] = + g7[ix+0]*g0[iy+0]*g0[iz+0];
243 s[1] = + g6[ix+0]*g1[iy+0]*g0[iz+0];
244 s[2] = + g6[ix+0]*g0[iy+0]*g1[iz+0];
245 s[3] = + g5[ix+0]*g2[iy+0]*g0[iz+0];
246 s[4] = + g4[ix+0]*g3[iy+0]*g0[iz+0];
247 s[5] = + g4[ix+0]*g2[iy+0]*g1[iz+0];
248 s[6] = + g5[ix+0]*g0[iy+0]*g2[iz+0];
249 s[7] = + g4[ix+0]*g1[iy+0]*g2[iz+0];
250 s[8] = + g4[ix+0]*g0[iy+0]*g3[iz+0];
251 s[9] = + g3[ix+0]*g4[iy+0]*g0[iz+0];
252 s[10] = + g2[ix+0]*g5[iy+0]*g0[iz+0];
253 s[11] = + g2[ix+0]*g4[iy+0]*g1[iz+0];
254 s[12] = + g1[ix+0]*g6[iy+0]*g0[iz+0];
255 s[13] = + g0[ix+0]*g7[iy+0]*g0[iz+0];
256 s[14] = + g0[ix+0]*g6[iy+0]*g1[iz+0];
257 s[15] = + g1[ix+0]*g4[iy+0]*g2[iz+0];
258 s[16] = + g0[ix+0]*g5[iy+0]*g2[iz+0];
259 s[17] = + g0[ix+0]*g4[iy+0]*g3[iz+0];
260 s[18] = + g3[ix+0]*g0[iy+0]*g4[iz+0];
261 s[19] = + g2[ix+0]*g1[iy+0]*g4[iz+0];
262 s[20] = + g2[ix+0]*g0[iy+0]*g5[iz+0];
263 s[21] = + g1[ix+0]*g2[iy+0]*g4[iz+0];
264 s[22] = + g0[ix+0]*g3[iy+0]*g4[iz+0];
265 s[23] = + g0[ix+0]*g2[iy+0]*g5[iz+0];
266 s[24] = + g1[ix+0]*g0[iy+0]*g6[iz+0];
267 s[25] = + g0[ix+0]*g1[iy+0]*g6[iz+0];
268 s[26] = + g0[ix+0]*g0[iy+0]*g7[iz+0];
269 if (gout_empty) {
270 gout[n*3+0] = - s[0] - s[12] - s[24];
271 gout[n*3+1] = - s[1] - s[13] - s[25];
272 gout[n*3+2] = - s[2] - s[14] - s[26];
273 } else {
274 gout[n*3+0] += - s[0] - s[12] - s[24];
275 gout[n*3+1] += - s[1] - s[13] - s[25];
276 gout[n*3+2] += - s[2] - s[14] - s[26];
277 }}}
int1e_kinip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)278 void int1e_kinip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
279 FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 3};
280 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
281 }
int1e_kinip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)282 CACHE_SIZE_T int1e_kinip_cart(double *out, FINT *dims, FINT *shls,
283 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
284 FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 3};
285 CINTEnvVars envs;
286 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
287 envs.f_gout = &CINTgout1e_int1e_kinip;
288 envs.common_factor *= 0.5;
289 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 0);
290 } // int1e_kinip_cart
int1e_kinip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)291 CACHE_SIZE_T int1e_kinip_sph(double *out, FINT *dims, FINT *shls,
292 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
293 FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 3};
294 CINTEnvVars envs;
295 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
296 envs.f_gout = &CINTgout1e_int1e_kinip;
297 envs.common_factor *= 0.5;
298 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 0);
299 } // int1e_kinip_sph
int1e_kinip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)300 CACHE_SIZE_T int1e_kinip_spinor(double complex *out, FINT *dims, FINT *shls,
301 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
302 FINT ng[] = {0, 3, 0, 0, 3, 1, 1, 3};
303 CINTEnvVars envs;
304 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
305 envs.f_gout = &CINTgout1e_int1e_kinip;
306 envs.common_factor *= 0.5;
307 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 0);
308 } // int1e_kinip_spinor
309 ALL_CINT1E(int1e_kinip)
ALL_CINT1E_FORTRAN_(int1e_kinip)310 ALL_CINT1E_FORTRAN_(int1e_kinip)
311 /* <NABLA i|NUC |j> */
312 void CINTgout1e_int1e_ipnuc(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
313 FINT nf = envs->nf;
314 FINT nrys_roots = envs->nrys_roots;
315 FINT ix, iy, iz, n, i;
316 double *g0 = g;
317 double *g1 = g0 + envs->g_size * 3;
318 G2E_D_I(g1, g0, envs->i_l+0, envs->j_l, 0, 0);
319 double s[3];
320 for (n = 0; n < nf; n++) {
321 ix = idx[0+n*3];
322 iy = idx[1+n*3];
323 iz = idx[2+n*3];
324 for (i = 0; i < 3; i++) { s[i] = 0; }
325 for (i = 0; i < nrys_roots; i++) {
326 s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i];
327 s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i];
328 s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i];
329 }
330 if (gout_empty) {
331 gout[n*3+0] = + s[0];
332 gout[n*3+1] = + s[1];
333 gout[n*3+2] = + s[2];
334 } else {
335 gout[n*3+0] += + s[0];
336 gout[n*3+1] += + s[1];
337 gout[n*3+2] += + s[2];
338 }}}
int1e_ipnuc_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)339 void int1e_ipnuc_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
340 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
341 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
342 }
int1e_ipnuc_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)343 CACHE_SIZE_T int1e_ipnuc_cart(double *out, FINT *dims, FINT *shls,
344 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
345 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
346 CINTEnvVars envs;
347 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
348 envs.f_gout = &CINTgout1e_int1e_ipnuc;
349 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
350 } // int1e_ipnuc_cart
int1e_ipnuc_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)351 CACHE_SIZE_T int1e_ipnuc_sph(double *out, FINT *dims, FINT *shls,
352 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
353 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
354 CINTEnvVars envs;
355 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
356 envs.f_gout = &CINTgout1e_int1e_ipnuc;
357 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
358 } // int1e_ipnuc_sph
int1e_ipnuc_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)359 CACHE_SIZE_T int1e_ipnuc_spinor(double complex *out, FINT *dims, FINT *shls,
360 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
361 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
362 CINTEnvVars envs;
363 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
364 envs.f_gout = &CINTgout1e_int1e_ipnuc;
365 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2);
366 } // int1e_ipnuc_spinor
367 ALL_CINT1E(int1e_ipnuc)
ALL_CINT1E_FORTRAN_(int1e_ipnuc)368 ALL_CINT1E_FORTRAN_(int1e_ipnuc)
369 /* <NABLA i|RINV |j> */
370 void CINTgout1e_int1e_iprinv(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
371 FINT nf = envs->nf;
372 FINT nrys_roots = envs->nrys_roots;
373 FINT ix, iy, iz, n, i;
374 double *g0 = g;
375 double *g1 = g0 + envs->g_size * 3;
376 G2E_D_I(g1, g0, envs->i_l+0, envs->j_l, 0, 0);
377 double s[3];
378 for (n = 0; n < nf; n++) {
379 ix = idx[0+n*3];
380 iy = idx[1+n*3];
381 iz = idx[2+n*3];
382 for (i = 0; i < 3; i++) { s[i] = 0; }
383 for (i = 0; i < nrys_roots; i++) {
384 s[0] += g1[ix+i] * g0[iy+i] * g0[iz+i];
385 s[1] += g0[ix+i] * g1[iy+i] * g0[iz+i];
386 s[2] += g0[ix+i] * g0[iy+i] * g1[iz+i];
387 }
388 if (gout_empty) {
389 gout[n*3+0] = + s[0];
390 gout[n*3+1] = + s[1];
391 gout[n*3+2] = + s[2];
392 } else {
393 gout[n*3+0] += + s[0];
394 gout[n*3+1] += + s[1];
395 gout[n*3+2] += + s[2];
396 }}}
int1e_iprinv_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)397 void int1e_iprinv_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
398 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
399 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
400 }
int1e_iprinv_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)401 CACHE_SIZE_T int1e_iprinv_cart(double *out, FINT *dims, FINT *shls,
402 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
403 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
404 CINTEnvVars envs;
405 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
406 envs.f_gout = &CINTgout1e_int1e_iprinv;
407 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
408 } // int1e_iprinv_cart
int1e_iprinv_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)409 CACHE_SIZE_T int1e_iprinv_sph(double *out, FINT *dims, FINT *shls,
410 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
411 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
412 CINTEnvVars envs;
413 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
414 envs.f_gout = &CINTgout1e_int1e_iprinv;
415 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
416 } // int1e_iprinv_sph
int1e_iprinv_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)417 CACHE_SIZE_T int1e_iprinv_spinor(double complex *out, FINT *dims, FINT *shls,
418 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
419 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
420 CINTEnvVars envs;
421 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
422 envs.f_gout = &CINTgout1e_int1e_iprinv;
423 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1);
424 } // int1e_iprinv_spinor
425 ALL_CINT1E(int1e_iprinv)
ALL_CINT1E_FORTRAN_(int1e_iprinv)426 ALL_CINT1E_FORTRAN_(int1e_iprinv)
427 /* <NABLA SIGMA DOT P i|NUC |SIGMA DOT P j> */
428 void CINTgout1e_int1e_ipspnucsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
429 FINT nf = envs->nf;
430 FINT nrys_roots = envs->nrys_roots;
431 FINT ix, iy, iz, n, i;
432 double *g0 = g;
433 double *g1 = g0 + envs->g_size * 3;
434 double *g2 = g1 + envs->g_size * 3;
435 double *g3 = g2 + envs->g_size * 3;
436 double *g4 = g3 + envs->g_size * 3;
437 double *g5 = g4 + envs->g_size * 3;
438 double *g6 = g5 + envs->g_size * 3;
439 double *g7 = g6 + envs->g_size * 3;
440 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
441 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0);
442 G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0);
443 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0);
444 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0);
445 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0);
446 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0);
447 double s[27];
448 for (n = 0; n < nf; n++) {
449 ix = idx[0+n*3];
450 iy = idx[1+n*3];
451 iz = idx[2+n*3];
452 for (i = 0; i < 27; i++) { s[i] = 0; }
453 for (i = 0; i < nrys_roots; i++) {
454 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
455 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
456 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
457 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
458 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
459 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
460 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
461 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
462 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
463 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
464 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
465 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
466 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
467 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
468 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
469 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
470 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
471 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
472 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
473 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
474 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
475 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
476 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
477 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
478 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
479 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
480 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
481 }
482 if (gout_empty) {
483 gout[n*12+0] = + s[11] - s[19];
484 gout[n*12+1] = + s[18] - s[2];
485 gout[n*12+2] = + s[1] - s[9];
486 gout[n*12+3] = + s[0] + s[10] + s[20];
487 gout[n*12+4] = + s[14] - s[22];
488 gout[n*12+5] = + s[21] - s[5];
489 gout[n*12+6] = + s[4] - s[12];
490 gout[n*12+7] = + s[3] + s[13] + s[23];
491 gout[n*12+8] = + s[17] - s[25];
492 gout[n*12+9] = + s[24] - s[8];
493 gout[n*12+10] = + s[7] - s[15];
494 gout[n*12+11] = + s[6] + s[16] + s[26];
495 } else {
496 gout[n*12+0] += + s[11] - s[19];
497 gout[n*12+1] += + s[18] - s[2];
498 gout[n*12+2] += + s[1] - s[9];
499 gout[n*12+3] += + s[0] + s[10] + s[20];
500 gout[n*12+4] += + s[14] - s[22];
501 gout[n*12+5] += + s[21] - s[5];
502 gout[n*12+6] += + s[4] - s[12];
503 gout[n*12+7] += + s[3] + s[13] + s[23];
504 gout[n*12+8] += + s[17] - s[25];
505 gout[n*12+9] += + s[24] - s[8];
506 gout[n*12+10] += + s[7] - s[15];
507 gout[n*12+11] += + s[6] + s[16] + s[26];
508 }}}
int1e_ipspnucsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)509 void int1e_ipspnucsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
510 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
511 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
512 }
int1e_ipspnucsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)513 CACHE_SIZE_T int1e_ipspnucsp_cart(double *out, FINT *dims, FINT *shls,
514 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
515 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
516 CINTEnvVars envs;
517 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
518 envs.f_gout = &CINTgout1e_int1e_ipspnucsp;
519 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
520 } // int1e_ipspnucsp_cart
int1e_ipspnucsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)521 CACHE_SIZE_T int1e_ipspnucsp_sph(double *out, FINT *dims, FINT *shls,
522 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
523 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
524 CINTEnvVars envs;
525 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
526 envs.f_gout = &CINTgout1e_int1e_ipspnucsp;
527 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
528 } // int1e_ipspnucsp_sph
int1e_ipspnucsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)529 CACHE_SIZE_T int1e_ipspnucsp_spinor(double complex *out, FINT *dims, FINT *shls,
530 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
531 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
532 CINTEnvVars envs;
533 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
534 envs.f_gout = &CINTgout1e_int1e_ipspnucsp;
535 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 2);
536 } // int1e_ipspnucsp_spinor
537 ALL_CINT1E(int1e_ipspnucsp)
ALL_CINT1E_FORTRAN_(int1e_ipspnucsp)538 ALL_CINT1E_FORTRAN_(int1e_ipspnucsp)
539 /* <NABLA SIGMA DOT P i|RINV |SIGMA DOT P j> */
540 void CINTgout1e_int1e_ipsprinvsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
541 FINT nf = envs->nf;
542 FINT nrys_roots = envs->nrys_roots;
543 FINT ix, iy, iz, n, i;
544 double *g0 = g;
545 double *g1 = g0 + envs->g_size * 3;
546 double *g2 = g1 + envs->g_size * 3;
547 double *g3 = g2 + envs->g_size * 3;
548 double *g4 = g3 + envs->g_size * 3;
549 double *g5 = g4 + envs->g_size * 3;
550 double *g6 = g5 + envs->g_size * 3;
551 double *g7 = g6 + envs->g_size * 3;
552 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
553 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0);
554 G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0);
555 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0);
556 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0);
557 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0);
558 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0);
559 double s[27];
560 for (n = 0; n < nf; n++) {
561 ix = idx[0+n*3];
562 iy = idx[1+n*3];
563 iz = idx[2+n*3];
564 for (i = 0; i < 27; i++) { s[i] = 0; }
565 for (i = 0; i < nrys_roots; i++) {
566 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
567 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
568 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
569 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
570 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
571 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
572 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
573 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
574 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
575 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
576 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
577 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
578 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
579 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
580 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
581 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
582 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
583 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
584 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
585 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
586 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
587 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
588 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
589 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
590 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
591 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
592 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
593 }
594 if (gout_empty) {
595 gout[n*12+0] = + s[11] - s[19];
596 gout[n*12+1] = + s[18] - s[2];
597 gout[n*12+2] = + s[1] - s[9];
598 gout[n*12+3] = + s[0] + s[10] + s[20];
599 gout[n*12+4] = + s[14] - s[22];
600 gout[n*12+5] = + s[21] - s[5];
601 gout[n*12+6] = + s[4] - s[12];
602 gout[n*12+7] = + s[3] + s[13] + s[23];
603 gout[n*12+8] = + s[17] - s[25];
604 gout[n*12+9] = + s[24] - s[8];
605 gout[n*12+10] = + s[7] - s[15];
606 gout[n*12+11] = + s[6] + s[16] + s[26];
607 } else {
608 gout[n*12+0] += + s[11] - s[19];
609 gout[n*12+1] += + s[18] - s[2];
610 gout[n*12+2] += + s[1] - s[9];
611 gout[n*12+3] += + s[0] + s[10] + s[20];
612 gout[n*12+4] += + s[14] - s[22];
613 gout[n*12+5] += + s[21] - s[5];
614 gout[n*12+6] += + s[4] - s[12];
615 gout[n*12+7] += + s[3] + s[13] + s[23];
616 gout[n*12+8] += + s[17] - s[25];
617 gout[n*12+9] += + s[24] - s[8];
618 gout[n*12+10] += + s[7] - s[15];
619 gout[n*12+11] += + s[6] + s[16] + s[26];
620 }}}
int1e_ipsprinvsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)621 void int1e_ipsprinvsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
622 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
623 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
624 }
int1e_ipsprinvsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)625 CACHE_SIZE_T int1e_ipsprinvsp_cart(double *out, FINT *dims, FINT *shls,
626 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
627 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
628 CINTEnvVars envs;
629 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
630 envs.f_gout = &CINTgout1e_int1e_ipsprinvsp;
631 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
632 } // int1e_ipsprinvsp_cart
int1e_ipsprinvsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)633 CACHE_SIZE_T int1e_ipsprinvsp_sph(double *out, FINT *dims, FINT *shls,
634 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
635 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
636 CINTEnvVars envs;
637 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
638 envs.f_gout = &CINTgout1e_int1e_ipsprinvsp;
639 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
640 } // int1e_ipsprinvsp_sph
int1e_ipsprinvsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)641 CACHE_SIZE_T int1e_ipsprinvsp_spinor(double complex *out, FINT *dims, FINT *shls,
642 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
643 FINT ng[] = {2, 1, 0, 0, 3, 4, 0, 3};
644 CINTEnvVars envs;
645 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
646 envs.f_gout = &CINTgout1e_int1e_ipsprinvsp;
647 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_si_1e, 1);
648 } // int1e_ipsprinvsp_spinor
649 ALL_CINT1E(int1e_ipsprinvsp)
ALL_CINT1E_FORTRAN_(int1e_ipsprinvsp)650 ALL_CINT1E_FORTRAN_(int1e_ipsprinvsp)
651 /* <P* NABLA i|NUC DOT P |j> */
652 void CINTgout1e_int1e_ippnucp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
653 FINT nf = envs->nf;
654 FINT nrys_roots = envs->nrys_roots;
655 FINT ix, iy, iz, n, i;
656 double *g0 = g;
657 double *g1 = g0 + envs->g_size * 3;
658 double *g2 = g1 + envs->g_size * 3;
659 double *g3 = g2 + envs->g_size * 3;
660 double *g4 = g3 + envs->g_size * 3;
661 double *g5 = g4 + envs->g_size * 3;
662 double *g6 = g5 + envs->g_size * 3;
663 double *g7 = g6 + envs->g_size * 3;
664 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
665 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0);
666 G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0);
667 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0);
668 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0);
669 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0);
670 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0);
671 double s[27];
672 for (n = 0; n < nf; n++) {
673 ix = idx[0+n*3];
674 iy = idx[1+n*3];
675 iz = idx[2+n*3];
676 for (i = 0; i < 27; i++) { s[i] = 0; }
677 for (i = 0; i < nrys_roots; i++) {
678 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
679 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
680 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
681 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
682 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
683 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
684 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
685 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
686 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
687 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
688 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
689 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
690 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
691 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
692 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
693 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
694 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
695 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
696 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
697 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
698 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
699 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
700 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
701 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
702 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
703 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
704 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
705 }
706 if (gout_empty) {
707 gout[n*3+0] = + s[0] + s[4] + s[8];
708 gout[n*3+1] = + s[9] + s[13] + s[17];
709 gout[n*3+2] = + s[18] + s[22] + s[26];
710 } else {
711 gout[n*3+0] += + s[0] + s[4] + s[8];
712 gout[n*3+1] += + s[9] + s[13] + s[17];
713 gout[n*3+2] += + s[18] + s[22] + s[26];
714 }}}
int1e_ippnucp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)715 void int1e_ippnucp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
716 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3};
717 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
718 }
int1e_ippnucp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)719 CACHE_SIZE_T int1e_ippnucp_cart(double *out, FINT *dims, FINT *shls,
720 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
721 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3};
722 CINTEnvVars envs;
723 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
724 envs.f_gout = &CINTgout1e_int1e_ippnucp;
725 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 2);
726 } // int1e_ippnucp_cart
int1e_ippnucp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)727 CACHE_SIZE_T int1e_ippnucp_sph(double *out, FINT *dims, FINT *shls,
728 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
729 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3};
730 CINTEnvVars envs;
731 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
732 envs.f_gout = &CINTgout1e_int1e_ippnucp;
733 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 2);
734 } // int1e_ippnucp_sph
int1e_ippnucp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)735 CACHE_SIZE_T int1e_ippnucp_spinor(double complex *out, FINT *dims, FINT *shls,
736 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
737 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3};
738 CINTEnvVars envs;
739 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
740 envs.f_gout = &CINTgout1e_int1e_ippnucp;
741 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 2);
742 } // int1e_ippnucp_spinor
743 ALL_CINT1E(int1e_ippnucp)
ALL_CINT1E_FORTRAN_(int1e_ippnucp)744 ALL_CINT1E_FORTRAN_(int1e_ippnucp)
745 /* <P* NABLA i|RINV DOT P |j> */
746 void CINTgout1e_int1e_ipprinvp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
747 FINT nf = envs->nf;
748 FINT nrys_roots = envs->nrys_roots;
749 FINT ix, iy, iz, n, i;
750 double *g0 = g;
751 double *g1 = g0 + envs->g_size * 3;
752 double *g2 = g1 + envs->g_size * 3;
753 double *g3 = g2 + envs->g_size * 3;
754 double *g4 = g3 + envs->g_size * 3;
755 double *g5 = g4 + envs->g_size * 3;
756 double *g6 = g5 + envs->g_size * 3;
757 double *g7 = g6 + envs->g_size * 3;
758 G2E_D_J(g1, g0, envs->i_l+2, envs->j_l+0, 0, 0);
759 G2E_D_I(g2, g0, envs->i_l+1, envs->j_l, 0, 0);
760 G2E_D_I(g3, g1, envs->i_l+1, envs->j_l, 0, 0);
761 G2E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0, 0);
762 G2E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0, 0);
763 G2E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0, 0);
764 G2E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0, 0);
765 double s[27];
766 for (n = 0; n < nf; n++) {
767 ix = idx[0+n*3];
768 iy = idx[1+n*3];
769 iz = idx[2+n*3];
770 for (i = 0; i < 27; i++) { s[i] = 0; }
771 for (i = 0; i < nrys_roots; i++) {
772 s[0] += g7[ix+i] * g0[iy+i] * g0[iz+i];
773 s[1] += g6[ix+i] * g1[iy+i] * g0[iz+i];
774 s[2] += g6[ix+i] * g0[iy+i] * g1[iz+i];
775 s[3] += g5[ix+i] * g2[iy+i] * g0[iz+i];
776 s[4] += g4[ix+i] * g3[iy+i] * g0[iz+i];
777 s[5] += g4[ix+i] * g2[iy+i] * g1[iz+i];
778 s[6] += g5[ix+i] * g0[iy+i] * g2[iz+i];
779 s[7] += g4[ix+i] * g1[iy+i] * g2[iz+i];
780 s[8] += g4[ix+i] * g0[iy+i] * g3[iz+i];
781 s[9] += g3[ix+i] * g4[iy+i] * g0[iz+i];
782 s[10] += g2[ix+i] * g5[iy+i] * g0[iz+i];
783 s[11] += g2[ix+i] * g4[iy+i] * g1[iz+i];
784 s[12] += g1[ix+i] * g6[iy+i] * g0[iz+i];
785 s[13] += g0[ix+i] * g7[iy+i] * g0[iz+i];
786 s[14] += g0[ix+i] * g6[iy+i] * g1[iz+i];
787 s[15] += g1[ix+i] * g4[iy+i] * g2[iz+i];
788 s[16] += g0[ix+i] * g5[iy+i] * g2[iz+i];
789 s[17] += g0[ix+i] * g4[iy+i] * g3[iz+i];
790 s[18] += g3[ix+i] * g0[iy+i] * g4[iz+i];
791 s[19] += g2[ix+i] * g1[iy+i] * g4[iz+i];
792 s[20] += g2[ix+i] * g0[iy+i] * g5[iz+i];
793 s[21] += g1[ix+i] * g2[iy+i] * g4[iz+i];
794 s[22] += g0[ix+i] * g3[iy+i] * g4[iz+i];
795 s[23] += g0[ix+i] * g2[iy+i] * g5[iz+i];
796 s[24] += g1[ix+i] * g0[iy+i] * g6[iz+i];
797 s[25] += g0[ix+i] * g1[iy+i] * g6[iz+i];
798 s[26] += g0[ix+i] * g0[iy+i] * g7[iz+i];
799 }
800 if (gout_empty) {
801 gout[n*3+0] = + s[0] + s[4] + s[8];
802 gout[n*3+1] = + s[9] + s[13] + s[17];
803 gout[n*3+2] = + s[18] + s[22] + s[26];
804 } else {
805 gout[n*3+0] += + s[0] + s[4] + s[8];
806 gout[n*3+1] += + s[9] + s[13] + s[17];
807 gout[n*3+2] += + s[18] + s[22] + s[26];
808 }}}
int1e_ipprinvp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)809 void int1e_ipprinvp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
810 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3};
811 CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
812 }
int1e_ipprinvp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)813 CACHE_SIZE_T int1e_ipprinvp_cart(double *out, FINT *dims, FINT *shls,
814 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
815 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3};
816 CINTEnvVars envs;
817 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
818 envs.f_gout = &CINTgout1e_int1e_ipprinvp;
819 return CINT1e_drv(out, dims, &envs, cache, &c2s_cart_1e, 1);
820 } // int1e_ipprinvp_cart
int1e_ipprinvp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)821 CACHE_SIZE_T int1e_ipprinvp_sph(double *out, FINT *dims, FINT *shls,
822 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
823 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3};
824 CINTEnvVars envs;
825 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
826 envs.f_gout = &CINTgout1e_int1e_ipprinvp;
827 return CINT1e_drv(out, dims, &envs, cache, &c2s_sph_1e, 1);
828 } // int1e_ipprinvp_sph
int1e_ipprinvp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)829 CACHE_SIZE_T int1e_ipprinvp_spinor(double complex *out, FINT *dims, FINT *shls,
830 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
831 FINT ng[] = {2, 1, 0, 0, 3, 1, 0, 3};
832 CINTEnvVars envs;
833 CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
834 envs.f_gout = &CINTgout1e_int1e_ipprinvp;
835 return CINT1e_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e, 1);
836 } // int1e_ipprinvp_spinor
837 ALL_CINT1E(int1e_ipprinvp)
838 ALL_CINT1E_FORTRAN_(int1e_ipprinvp)
839