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| 1/r_{grids} |j> */
CINTgout1e_int1e_grids_ip(double * gout,double * g,FINT * idx,CINTEnvVars * envs,FINT gout_empty)18 void CINTgout1e_int1e_grids_ip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
19 FINT ngrids = envs->ngrids;
20 FINT bgrids = MIN(ngrids - envs->grids_offset, GRID_BLKSIZE);
21 FINT nrys_roots = envs->nrys_roots;
22 FINT nf = envs->nf;
23 FINT ix, iy, iz, n, i, ig;
24 double *g0 = g;
25 double *g1 = g0 + envs->g_size * 3;
26 double s[GRID_BLKSIZE * 3];
27 G1E_GRIDS_D_I(g1, g0, envs->i_l+0, envs->j_l);
28 for (n = 0; n < nf; n++) {
29 ix = idx[0+n*3];
30 iy = idx[1+n*3];
31 iz = idx[2+n*3];
32 for (i = 0; i < 3; i++) {
33 for (ig = 0; ig < bgrids; ig++) { s[ig+i*GRID_BLKSIZE] = 0; }}
34 for (i = 0; i < nrys_roots; i++) {
35 for (ig = 0; ig < bgrids; ig++) {
36 s[ig+GRID_BLKSIZE*0] += g1[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
37 s[ig+GRID_BLKSIZE*1] += g0[ix+ig+i*GRID_BLKSIZE] * g1[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
38 s[ig+GRID_BLKSIZE*2] += g0[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g1[iz+ig+i*GRID_BLKSIZE];
39 }};
40 if (gout_empty) {
41 for (ig = 0; ig < bgrids; ig++) {
42 gout[ig+bgrids*(n*3+0)] = + s[ig+GRID_BLKSIZE*0];
43 gout[ig+bgrids*(n*3+1)] = + s[ig+GRID_BLKSIZE*1];
44 gout[ig+bgrids*(n*3+2)] = + s[ig+GRID_BLKSIZE*2];
45 }} else {
46 for (ig = 0; ig < bgrids; ig++) {
47 gout[ig+bgrids*(n*3+0)] += + s[ig+GRID_BLKSIZE*0];
48 gout[ig+bgrids*(n*3+1)] += + s[ig+GRID_BLKSIZE*1];
49 gout[ig+bgrids*(n*3+2)] += + s[ig+GRID_BLKSIZE*2];
50 }}}}
int1e_grids_ip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)51 void int1e_grids_ip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
52 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
53 CINTall_1e_grids_optimizer(opt, ng, atm, natm, bas, nbas, env);
54 }
int1e_grids_ip_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)55 CACHE_SIZE_T int1e_grids_ip_cart(double *out, FINT *dims, FINT *shls,
56 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
57 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
58 CINTEnvVars envs;
59 CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
60 envs.f_gout = &CINTgout1e_int1e_grids_ip;
61 return CINT1e_grids_drv(out, dims, &envs, cache, &c2s_cart_1e_grids);
62 } // int1e_grids_ip_cart
int1e_grids_ip_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)63 CACHE_SIZE_T int1e_grids_ip_sph(double *out, FINT *dims, FINT *shls,
64 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
65 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
66 CINTEnvVars envs;
67 CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
68 envs.f_gout = &CINTgout1e_int1e_grids_ip;
69 return CINT1e_grids_drv(out, dims, &envs, cache, &c2s_sph_1e_grids);
70 } // int1e_grids_ip_sph
int1e_grids_ip_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)71 CACHE_SIZE_T int1e_grids_ip_spinor(double complex *out, FINT *dims, FINT *shls,
72 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
73 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
74 CINTEnvVars envs;
75 CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
76 envs.f_gout = &CINTgout1e_int1e_grids_ip;
77 return CINT1e_grids_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e_grids);
78 } // int1e_grids_ip_spinor
79 ALL_CINT1E(int1e_grids_ip)
ALL_CINT1E_FORTRAN_(int1e_grids_ip)80 ALL_CINT1E_FORTRAN_(int1e_grids_ip)
81 /* <NABLA i| 1/r_{grids} |NABLA j> */
82 void CINTgout1e_int1e_grids_ipvip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
83 FINT ngrids = envs->ngrids;
84 FINT bgrids = MIN(ngrids - envs->grids_offset, GRID_BLKSIZE);
85 FINT nrys_roots = envs->nrys_roots;
86 FINT nf = envs->nf;
87 FINT ix, iy, iz, n, i, ig;
88 double *g0 = g;
89 double *g1 = g0 + envs->g_size * 3;
90 double *g2 = g1 + envs->g_size * 3;
91 double *g3 = g2 + envs->g_size * 3;
92 double s[GRID_BLKSIZE * 9];
93 G1E_GRIDS_D_J(g1, g0, envs->i_l+1, envs->j_l+0);
94 G1E_GRIDS_D_I(g2, g0, envs->i_l+0, envs->j_l);
95 G1E_GRIDS_D_I(g3, g1, envs->i_l+0, envs->j_l);
96 for (n = 0; n < nf; n++) {
97 ix = idx[0+n*3];
98 iy = idx[1+n*3];
99 iz = idx[2+n*3];
100 for (i = 0; i < 9; i++) {
101 for (ig = 0; ig < bgrids; ig++) { s[ig+i*GRID_BLKSIZE] = 0; }}
102 for (i = 0; i < nrys_roots; i++) {
103 for (ig = 0; ig < bgrids; ig++) {
104 s[ig+GRID_BLKSIZE*0] += g3[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
105 s[ig+GRID_BLKSIZE*1] += g2[ix+ig+i*GRID_BLKSIZE] * g1[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
106 s[ig+GRID_BLKSIZE*2] += g2[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g1[iz+ig+i*GRID_BLKSIZE];
107 s[ig+GRID_BLKSIZE*3] += g1[ix+ig+i*GRID_BLKSIZE] * g2[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
108 s[ig+GRID_BLKSIZE*4] += g0[ix+ig+i*GRID_BLKSIZE] * g3[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
109 s[ig+GRID_BLKSIZE*5] += g0[ix+ig+i*GRID_BLKSIZE] * g2[iy+ig+i*GRID_BLKSIZE] * g1[iz+ig+i*GRID_BLKSIZE];
110 s[ig+GRID_BLKSIZE*6] += g1[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g2[iz+ig+i*GRID_BLKSIZE];
111 s[ig+GRID_BLKSIZE*7] += g0[ix+ig+i*GRID_BLKSIZE] * g1[iy+ig+i*GRID_BLKSIZE] * g2[iz+ig+i*GRID_BLKSIZE];
112 s[ig+GRID_BLKSIZE*8] += g0[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g3[iz+ig+i*GRID_BLKSIZE];
113 }};
114 if (gout_empty) {
115 for (ig = 0; ig < bgrids; ig++) {
116 gout[ig+bgrids*(n*9+0)] = + s[ig+GRID_BLKSIZE*0];
117 gout[ig+bgrids*(n*9+1)] = + s[ig+GRID_BLKSIZE*1];
118 gout[ig+bgrids*(n*9+2)] = + s[ig+GRID_BLKSIZE*2];
119 gout[ig+bgrids*(n*9+3)] = + s[ig+GRID_BLKSIZE*3];
120 gout[ig+bgrids*(n*9+4)] = + s[ig+GRID_BLKSIZE*4];
121 gout[ig+bgrids*(n*9+5)] = + s[ig+GRID_BLKSIZE*5];
122 gout[ig+bgrids*(n*9+6)] = + s[ig+GRID_BLKSIZE*6];
123 gout[ig+bgrids*(n*9+7)] = + s[ig+GRID_BLKSIZE*7];
124 gout[ig+bgrids*(n*9+8)] = + s[ig+GRID_BLKSIZE*8];
125 }} else {
126 for (ig = 0; ig < bgrids; ig++) {
127 gout[ig+bgrids*(n*9+0)] += + s[ig+GRID_BLKSIZE*0];
128 gout[ig+bgrids*(n*9+1)] += + s[ig+GRID_BLKSIZE*1];
129 gout[ig+bgrids*(n*9+2)] += + s[ig+GRID_BLKSIZE*2];
130 gout[ig+bgrids*(n*9+3)] += + s[ig+GRID_BLKSIZE*3];
131 gout[ig+bgrids*(n*9+4)] += + s[ig+GRID_BLKSIZE*4];
132 gout[ig+bgrids*(n*9+5)] += + s[ig+GRID_BLKSIZE*5];
133 gout[ig+bgrids*(n*9+6)] += + s[ig+GRID_BLKSIZE*6];
134 gout[ig+bgrids*(n*9+7)] += + s[ig+GRID_BLKSIZE*7];
135 gout[ig+bgrids*(n*9+8)] += + s[ig+GRID_BLKSIZE*8];
136 }}}}
int1e_grids_ipvip_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)137 void int1e_grids_ipvip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
138 FINT ng[] = {1, 1, 0, 0, 2, 1, 0, 9};
139 CINTall_1e_grids_optimizer(opt, ng, atm, natm, bas, nbas, env);
140 }
int1e_grids_ipvip_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_grids_ipvip_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, 1, 0, 9};
144 CINTEnvVars envs;
145 CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
146 envs.f_gout = &CINTgout1e_int1e_grids_ipvip;
147 return CINT1e_grids_drv(out, dims, &envs, cache, &c2s_cart_1e_grids);
148 } // int1e_grids_ipvip_cart
int1e_grids_ipvip_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_grids_ipvip_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, 1, 0, 9};
152 CINTEnvVars envs;
153 CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
154 envs.f_gout = &CINTgout1e_int1e_grids_ipvip;
155 return CINT1e_grids_drv(out, dims, &envs, cache, &c2s_sph_1e_grids);
156 } // int1e_grids_ipvip_sph
int1e_grids_ipvip_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_grids_ipvip_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, 1, 0, 9};
160 CINTEnvVars envs;
161 CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
162 envs.f_gout = &CINTgout1e_int1e_grids_ipvip;
163 return CINT1e_grids_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e_grids);
164 } // int1e_grids_ipvip_spinor
165 ALL_CINT1E(int1e_grids_ipvip)
ALL_CINT1E_FORTRAN_(int1e_grids_ipvip)166 ALL_CINT1E_FORTRAN_(int1e_grids_ipvip)
167 /* <SIGMA DOT P i| 1/r_{grids} |SIGMA DOT P j> */
168 void CINTgout1e_int1e_grids_spvsp(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
169 FINT ngrids = envs->ngrids;
170 FINT bgrids = MIN(ngrids - envs->grids_offset, GRID_BLKSIZE);
171 FINT nrys_roots = envs->nrys_roots;
172 FINT nf = envs->nf;
173 FINT ix, iy, iz, n, i, ig;
174 double *g0 = g;
175 double *g1 = g0 + envs->g_size * 3;
176 double *g2 = g1 + envs->g_size * 3;
177 double *g3 = g2 + envs->g_size * 3;
178 double s[GRID_BLKSIZE * 9];
179 G1E_GRIDS_D_J(g1, g0, envs->i_l+1, envs->j_l+0);
180 G1E_GRIDS_D_I(g2, g0, envs->i_l+0, envs->j_l);
181 G1E_GRIDS_D_I(g3, g1, envs->i_l+0, envs->j_l);
182 for (n = 0; n < nf; n++) {
183 ix = idx[0+n*3];
184 iy = idx[1+n*3];
185 iz = idx[2+n*3];
186 for (i = 0; i < 9; i++) {
187 for (ig = 0; ig < bgrids; ig++) { s[ig+i*GRID_BLKSIZE] = 0; }}
188 for (i = 0; i < nrys_roots; i++) {
189 for (ig = 0; ig < bgrids; ig++) {
190 s[ig+GRID_BLKSIZE*0] += g3[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
191 s[ig+GRID_BLKSIZE*1] += g2[ix+ig+i*GRID_BLKSIZE] * g1[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
192 s[ig+GRID_BLKSIZE*2] += g2[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g1[iz+ig+i*GRID_BLKSIZE];
193 s[ig+GRID_BLKSIZE*3] += g1[ix+ig+i*GRID_BLKSIZE] * g2[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
194 s[ig+GRID_BLKSIZE*4] += g0[ix+ig+i*GRID_BLKSIZE] * g3[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
195 s[ig+GRID_BLKSIZE*5] += g0[ix+ig+i*GRID_BLKSIZE] * g2[iy+ig+i*GRID_BLKSIZE] * g1[iz+ig+i*GRID_BLKSIZE];
196 s[ig+GRID_BLKSIZE*6] += g1[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g2[iz+ig+i*GRID_BLKSIZE];
197 s[ig+GRID_BLKSIZE*7] += g0[ix+ig+i*GRID_BLKSIZE] * g1[iy+ig+i*GRID_BLKSIZE] * g2[iz+ig+i*GRID_BLKSIZE];
198 s[ig+GRID_BLKSIZE*8] += g0[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g3[iz+ig+i*GRID_BLKSIZE];
199 }};
200 if (gout_empty) {
201 for (ig = 0; ig < bgrids; ig++) {
202 gout[ig+bgrids*(n*4+0)] = + s[ig+GRID_BLKSIZE*5] - s[ig+GRID_BLKSIZE*7];
203 gout[ig+bgrids*(n*4+1)] = + s[ig+GRID_BLKSIZE*6] - s[ig+GRID_BLKSIZE*2];
204 gout[ig+bgrids*(n*4+2)] = + s[ig+GRID_BLKSIZE*1] - s[ig+GRID_BLKSIZE*3];
205 gout[ig+bgrids*(n*4+3)] = + s[ig+GRID_BLKSIZE*0] + s[ig+GRID_BLKSIZE*4] + s[ig+GRID_BLKSIZE*8];
206 }} else {
207 for (ig = 0; ig < bgrids; ig++) {
208 gout[ig+bgrids*(n*4+0)] += + s[ig+GRID_BLKSIZE*5] - s[ig+GRID_BLKSIZE*7];
209 gout[ig+bgrids*(n*4+1)] += + s[ig+GRID_BLKSIZE*6] - s[ig+GRID_BLKSIZE*2];
210 gout[ig+bgrids*(n*4+2)] += + s[ig+GRID_BLKSIZE*1] - s[ig+GRID_BLKSIZE*3];
211 gout[ig+bgrids*(n*4+3)] += + s[ig+GRID_BLKSIZE*0] + s[ig+GRID_BLKSIZE*4] + s[ig+GRID_BLKSIZE*8];
212 }}}}
int1e_grids_spvsp_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)213 void int1e_grids_spvsp_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
214 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
215 CINTall_1e_grids_optimizer(opt, ng, atm, natm, bas, nbas, env);
216 }
int1e_grids_spvsp_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)217 CACHE_SIZE_T int1e_grids_spvsp_cart(double *out, FINT *dims, FINT *shls,
218 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
219 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
220 CINTEnvVars envs;
221 CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
222 envs.f_gout = &CINTgout1e_int1e_grids_spvsp;
223 return CINT1e_grids_drv(out, dims, &envs, cache, &c2s_cart_1e_grids);
224 } // int1e_grids_spvsp_cart
int1e_grids_spvsp_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)225 CACHE_SIZE_T int1e_grids_spvsp_sph(double *out, FINT *dims, FINT *shls,
226 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
227 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
228 CINTEnvVars envs;
229 CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
230 envs.f_gout = &CINTgout1e_int1e_grids_spvsp;
231 return CINT1e_grids_drv(out, dims, &envs, cache, &c2s_sph_1e_grids);
232 } // int1e_grids_spvsp_sph
int1e_grids_spvsp_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)233 CACHE_SIZE_T int1e_grids_spvsp_spinor(double complex *out, FINT *dims, FINT *shls,
234 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
235 FINT ng[] = {1, 1, 0, 0, 2, 4, 0, 1};
236 CINTEnvVars envs;
237 CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
238 envs.f_gout = &CINTgout1e_int1e_grids_spvsp;
239 return CINT1e_grids_spinor_drv(out, dims, &envs, cache, &c2s_si_1e_grids);
240 } // int1e_grids_spvsp_spinor
241 ALL_CINT1E(int1e_grids_spvsp)
242 ALL_CINT1E_FORTRAN_(int1e_grids_spvsp)
243