Skip to content

Commit ea3857f

Browse files
committed
Release v6.1.0
Add new integral int1e_grids_ipip
1 parent 1d64a6f commit ea3857f

File tree

6 files changed

+140
-19
lines changed

6 files changed

+140
-19
lines changed

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required (VERSION 3.5)
22
project (cint C)
33
set(cint_VERSION_MAJOR "6")
4-
set(cint_VERSION_MINOR "0")
4+
set(cint_VERSION_MINOR "1")
55
set(cint_VERSION_PATCH "0")
66
set(cint_VERSION_TWEAK "0")
77
set(cint_VERSION "${cint_VERSION_MAJOR}.${cint_VERSION_MINOR}.${cint_VERSION_PATCH}")

ChangeLog

+3
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
Version 6.1.0 (2023-11-10):
2+
* New second order derivative integrals int1e_grids_ipip
3+
14
Version 6.0.0 (2023-09-17):
25
* Add polynomial root finder using the eigenvalue algorithm
36
* Fitting Rys roots of SR integrals with Chebyshev polynomials

README.rst

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
libcint
22
=======
33

4-
version 6.0.0
5-
2023-09-17
4+
version 6.1.0
5+
2023-11-10
66

77

88
What is libcint

include/cint_funcs.h

+47-16
Original file line numberDiff line numberDiff line change
@@ -1090,6 +1090,24 @@ extern CINTIntegralFunction int1e_ipiprinvip_cart;
10901090
extern CINTIntegralFunction int1e_ipiprinvip_sph;
10911091
extern CINTIntegralFunction int1e_ipiprinvip_spinor;
10921092

1093+
/* <NABLA NABLA i|RINV |NABLA NABLA j> */
1094+
extern CINTOptimizerFunction int1e_ipiprinvipip_optimizer;
1095+
extern CINTIntegralFunction int1e_ipiprinvipip_cart;
1096+
extern CINTIntegralFunction int1e_ipiprinvipip_sph;
1097+
extern CINTIntegralFunction int1e_ipiprinvipip_spinor;
1098+
1099+
/* <NABLA NABLA NABLA i|RINV |NABLA j> */
1100+
extern CINTOptimizerFunction int1e_ipipiprinvip_optimizer;
1101+
extern CINTIntegralFunction int1e_ipipiprinvip_cart;
1102+
extern CINTIntegralFunction int1e_ipipiprinvip_sph;
1103+
extern CINTIntegralFunction int1e_ipipiprinvip_spinor;
1104+
1105+
/* <NABLA NABLA NABLA NABLA i|RINV |j> */
1106+
extern CINTOptimizerFunction int1e_ipipipiprinv_optimizer;
1107+
extern CINTIntegralFunction int1e_ipipipiprinv_cart;
1108+
extern CINTIntegralFunction int1e_ipipipiprinv_sph;
1109+
extern CINTIntegralFunction int1e_ipipipiprinv_spinor;
1110+
10931111
/* <NABLA i| 1/r_{grids} |j> */
10941112
extern CINTOptimizerFunction int1e_grids_ip_optimizer;
10951113
extern CINTIntegralFunction int1e_grids_ip_cart;
@@ -1108,20 +1126,33 @@ extern CINTIntegralFunction int1e_grids_spvsp_cart;
11081126
extern CINTIntegralFunction int1e_grids_spvsp_sph;
11091127
extern CINTIntegralFunction int1e_grids_spvsp_spinor;
11101128

1111-
/* <NABLA NABLA i|RINV |NABLA NABLA j> */
1112-
extern CINTOptimizerFunction int1e_ipiprinvipip_optimizer;
1113-
extern CINTIntegralFunction int1e_ipiprinvipip_cart;
1114-
extern CINTIntegralFunction int1e_ipiprinvipip_sph;
1115-
extern CINTIntegralFunction int1e_ipiprinvipip_spinor;
1129+
/* <NABLA NABLA i| 1/r_{grids} |j> */
1130+
extern CINTOptimizerFunction int1e_grids_ipip_optimizer;
1131+
extern CINTIntegralFunction int1e_grids_ipip_cart;
1132+
extern CINTIntegralFunction int1e_grids_ipip_sph;
1133+
extern CINTIntegralFunction int1e_grids_ipip_spinor;
1134+
1135+
/* <NABLA i|RINV |R j> */
1136+
extern CINTOptimizerFunction int1e_iprinvr_optimizer;
1137+
extern CINTIntegralFunction int1e_iprinvr_cart;
1138+
extern CINTIntegralFunction int1e_iprinvr_sph;
1139+
extern CINTIntegralFunction int1e_iprinvr_spinor;
1140+
1141+
/* <NABLA i|RINV |NABLA R NABLA j> */
1142+
extern CINTOptimizerFunction int1e_iprinviprip_optimizer;
1143+
extern CINTIntegralFunction int1e_iprinviprip_cart;
1144+
extern CINTIntegralFunction int1e_iprinviprip_sph;
1145+
extern CINTIntegralFunction int1e_iprinviprip_spinor;
1146+
1147+
/* <i|RINV |NABLA NABLA R NABLA j> */
1148+
extern CINTOptimizerFunction int1e_rinvipiprip_optimizer;
1149+
extern CINTIntegralFunction int1e_rinvipiprip_cart;
1150+
extern CINTIntegralFunction int1e_rinvipiprip_sph;
1151+
extern CINTIntegralFunction int1e_rinvipiprip_spinor;
1152+
1153+
/* <NABLA NABLA i|RINV |R NABLA j> */
1154+
extern CINTOptimizerFunction int1e_ipiprinvrip_optimizer;
1155+
extern CINTIntegralFunction int1e_ipiprinvrip_cart;
1156+
extern CINTIntegralFunction int1e_ipiprinvrip_sph;
1157+
extern CINTIntegralFunction int1e_ipiprinvrip_spinor;
11161158

1117-
/* <NABLA NABLA NABLA i|RINV |NABLA j> */
1118-
extern CINTOptimizerFunction int1e_ipipiprinvip_optimizer;
1119-
extern CINTIntegralFunction int1e_ipipiprinvip_cart;
1120-
extern CINTIntegralFunction int1e_ipipiprinvip_sph;
1121-
extern CINTIntegralFunction int1e_ipipiprinvip_spinor;
1122-
1123-
/* <NABLA NABLA NABLA NABLA i|RINV |j> */
1124-
extern CINTOptimizerFunction int1e_ipipipiprinv_optimizer;
1125-
extern CINTIntegralFunction int1e_ipipipiprinv_cart;
1126-
extern CINTIntegralFunction int1e_ipipipiprinv_sph;
1127-
extern CINTIntegralFunction int1e_ipipipiprinv_spinor;

scripts/auto_intor.cl

+1
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,7 @@
235235
'("int1e_grids_ip" ( nabla \| grids \| ))
236236
'("int1e_grids_ipvip" ( nabla \| grids \| nabla ))
237237
'("int1e_grids_spvsp" ( sigma dot p \| grids \| sigma dot p ))
238+
'("int1e_grids_ipip" ( nabla nabla \| grids \| ))
238239
)
239240

240241

src/autocode/int1e_grids1.c

+86
Original file line numberDiff line numberDiff line change
@@ -240,3 +240,89 @@ return CINT1e_grids_spinor_drv(out, dims, &envs, cache, &c2s_si_1e_grids);
240240
} // int1e_grids_spvsp_spinor
241241
ALL_CINT1E(int1e_grids_spvsp)
242242
ALL_CINT1E_FORTRAN_(int1e_grids_spvsp)
243+
/* <NABLA NABLA i| 1/r_{grids} |j> */
244+
void CINTgout1e_int1e_grids_ipip(double *gout, double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
245+
FINT ngrids = envs->ngrids;
246+
FINT bgrids = MIN(ngrids - envs->grids_offset, GRID_BLKSIZE);
247+
FINT nrys_roots = envs->nrys_roots;
248+
FINT nf = envs->nf;
249+
FINT ix, iy, iz, n, i, ig;
250+
double *g0 = g;
251+
double *g1 = g0 + envs->g_size * 3;
252+
double *g2 = g1 + envs->g_size * 3;
253+
double *g3 = g2 + envs->g_size * 3;
254+
double s[GRID_BLKSIZE * 9];
255+
G1E_GRIDS_D_I(g1, g0, envs->i_l+1, envs->j_l);
256+
G1E_GRIDS_D_I(g2, g0, envs->i_l+0, envs->j_l);
257+
G1E_GRIDS_D_I(g3, g1, envs->i_l+0, envs->j_l);
258+
for (n = 0; n < nf; n++) {
259+
ix = idx[0+n*3];
260+
iy = idx[1+n*3];
261+
iz = idx[2+n*3];
262+
for (i = 0; i < 9; i++) {
263+
for (ig = 0; ig < bgrids; ig++) { s[ig+i*GRID_BLKSIZE] = 0; }}
264+
for (i = 0; i < nrys_roots; i++) {
265+
for (ig = 0; ig < bgrids; ig++) {
266+
s[ig+GRID_BLKSIZE*0] += g3[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
267+
s[ig+GRID_BLKSIZE*1] += g2[ix+ig+i*GRID_BLKSIZE] * g1[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
268+
s[ig+GRID_BLKSIZE*2] += g2[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g1[iz+ig+i*GRID_BLKSIZE];
269+
s[ig+GRID_BLKSIZE*3] += g1[ix+ig+i*GRID_BLKSIZE] * g2[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
270+
s[ig+GRID_BLKSIZE*4] += g0[ix+ig+i*GRID_BLKSIZE] * g3[iy+ig+i*GRID_BLKSIZE] * g0[iz+ig+i*GRID_BLKSIZE];
271+
s[ig+GRID_BLKSIZE*5] += g0[ix+ig+i*GRID_BLKSIZE] * g2[iy+ig+i*GRID_BLKSIZE] * g1[iz+ig+i*GRID_BLKSIZE];
272+
s[ig+GRID_BLKSIZE*6] += g1[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g2[iz+ig+i*GRID_BLKSIZE];
273+
s[ig+GRID_BLKSIZE*7] += g0[ix+ig+i*GRID_BLKSIZE] * g1[iy+ig+i*GRID_BLKSIZE] * g2[iz+ig+i*GRID_BLKSIZE];
274+
s[ig+GRID_BLKSIZE*8] += g0[ix+ig+i*GRID_BLKSIZE] * g0[iy+ig+i*GRID_BLKSIZE] * g3[iz+ig+i*GRID_BLKSIZE];
275+
}};
276+
if (gout_empty) {
277+
for (ig = 0; ig < bgrids; ig++) {
278+
gout[ig+bgrids*(n*9+0)] = + s[ig+GRID_BLKSIZE*0];
279+
gout[ig+bgrids*(n*9+1)] = + s[ig+GRID_BLKSIZE*3];
280+
gout[ig+bgrids*(n*9+2)] = + s[ig+GRID_BLKSIZE*6];
281+
gout[ig+bgrids*(n*9+3)] = + s[ig+GRID_BLKSIZE*1];
282+
gout[ig+bgrids*(n*9+4)] = + s[ig+GRID_BLKSIZE*4];
283+
gout[ig+bgrids*(n*9+5)] = + s[ig+GRID_BLKSIZE*7];
284+
gout[ig+bgrids*(n*9+6)] = + s[ig+GRID_BLKSIZE*2];
285+
gout[ig+bgrids*(n*9+7)] = + s[ig+GRID_BLKSIZE*5];
286+
gout[ig+bgrids*(n*9+8)] = + s[ig+GRID_BLKSIZE*8];
287+
}} else {
288+
for (ig = 0; ig < bgrids; ig++) {
289+
gout[ig+bgrids*(n*9+0)] += + s[ig+GRID_BLKSIZE*0];
290+
gout[ig+bgrids*(n*9+1)] += + s[ig+GRID_BLKSIZE*3];
291+
gout[ig+bgrids*(n*9+2)] += + s[ig+GRID_BLKSIZE*6];
292+
gout[ig+bgrids*(n*9+3)] += + s[ig+GRID_BLKSIZE*1];
293+
gout[ig+bgrids*(n*9+4)] += + s[ig+GRID_BLKSIZE*4];
294+
gout[ig+bgrids*(n*9+5)] += + s[ig+GRID_BLKSIZE*7];
295+
gout[ig+bgrids*(n*9+6)] += + s[ig+GRID_BLKSIZE*2];
296+
gout[ig+bgrids*(n*9+7)] += + s[ig+GRID_BLKSIZE*5];
297+
gout[ig+bgrids*(n*9+8)] += + s[ig+GRID_BLKSIZE*8];
298+
}}}}
299+
void int1e_grids_ipip_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
300+
FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
301+
CINTall_1e_grids_optimizer(opt, ng, atm, natm, bas, nbas, env);
302+
}
303+
CACHE_SIZE_T int1e_grids_ipip_cart(double *out, FINT *dims, FINT *shls,
304+
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
305+
FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
306+
CINTEnvVars envs;
307+
CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
308+
envs.f_gout = &CINTgout1e_int1e_grids_ipip;
309+
return CINT1e_grids_drv(out, dims, &envs, cache, &c2s_cart_1e_grids);
310+
} // int1e_grids_ipip_cart
311+
CACHE_SIZE_T int1e_grids_ipip_sph(double *out, FINT *dims, FINT *shls,
312+
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
313+
FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
314+
CINTEnvVars envs;
315+
CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
316+
envs.f_gout = &CINTgout1e_int1e_grids_ipip;
317+
return CINT1e_grids_drv(out, dims, &envs, cache, &c2s_sph_1e_grids);
318+
} // int1e_grids_ipip_sph
319+
CACHE_SIZE_T int1e_grids_ipip_spinor(double complex *out, FINT *dims, FINT *shls,
320+
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
321+
FINT ng[] = {2, 0, 0, 0, 2, 1, 0, 9};
322+
CINTEnvVars envs;
323+
CINTinit_int1e_grids_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
324+
envs.f_gout = &CINTgout1e_int1e_grids_ipip;
325+
return CINT1e_grids_spinor_drv(out, dims, &envs, cache, &c2s_sf_1e_grids);
326+
} // int1e_grids_ipip_spinor
327+
ALL_CINT1E(int1e_grids_ipip)
328+
ALL_CINT1E_FORTRAN_(int1e_grids_ipip)

0 commit comments

Comments
 (0)