Skip to content

Commit

Permalink
* Fix undefined varialbe in nabla-rinv integral
Browse files Browse the repository at this point in the history
* Add integral < i | nabla-rinv | j >
  • Loading branch information
sunqm committed Jul 3, 2019
1 parent 7b707fb commit 7efe346
Show file tree
Hide file tree
Showing 13 changed files with 641 additions and 621 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
cmake_minimum_required (VERSION 2.6)
project (cint C)
set(cint_SOVERSION "3")
set(cint_VERSION "3.0.17")
set(cint_VERSION "3.0.18")

#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O2 -DNDEBUG")
if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
Expand Down
3 changes: 3 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
Version 3.0.18 (2019-07-02):
* Fix undefined varialbe in nabla-rinv integral
* Add integral < i | nabla-rinv | j >
Version 3.0.17 (2019-04-29):
* 3c2e and 2c2e integrals for Gaussian type geminals
Version 3.0.16 (2019-03-23):
Expand Down
4 changes: 2 additions & 2 deletions README
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
libcint
=======

version 3.0.17
2019-04-28
version 3.0.18
2019-07-02


What is libcint
Expand Down
3 changes: 2 additions & 1 deletion scripts/auto_intor.cl
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@
'("int1e_ggkin" (.5 \| g g nabla dot nabla \|))
'("int1e_ggnuc" ( \| g g nuc \|))
'("int1e_grjxp" ( \| g r cross p \|))
'("int1e_rinv" (\| rinv \|))
'("int1e_drinv" (\| nabla-rinv \|))
)

(gen-cint "intor2.c"
Expand Down Expand Up @@ -125,7 +127,6 @@
'("int1e_kinip" (.5 \| p dot p nabla))
'("int1e_ipnuc" (nabla \| nuc \|))
'("int1e_iprinv" (nabla \| rinv \|))
'("int1e_rinv" (\| rinv \|))
'("int1e_ipspnucsp" (nabla sigma dot p \| nuc \| sigma dot p))
'("int1e_ipsprinvsp" (nabla sigma dot p \| rinv \| sigma dot p))
'("int1e_ippnucp" (p* nabla \| nuc dot p \|))
Expand Down
82 changes: 41 additions & 41 deletions scripts/gen-code.cl
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,14 @@ iz = idx[2];~%")
(format nil "&c2s_sph_~a" sfx))
(t (format nil "&c2s_cart_~a" sfx))))

;;; g-intermediates are g0, g1, g2, ...
(defun num-g-intermediates (tot-bits op i-len j-len)
(if (and (intersection *act-left-right* op)
; nabla-rinv is the last one in the operation list
(<= (+ i-len (length op) j-len) 1))
(ash 1 tot-bits)
(1- (ash 1 tot-bits))))

;!!! Be very cautious of the reverse on i-operators and k operators!
;!!! When multiple tensor components (>= rank 2) provided by the operators
;!!! on bra functions, the ordering of the multiple tensor components are
Expand All @@ -341,8 +349,8 @@ FINT nf = envs->nf;
FINT ix, iy, iz, n;
double *g0 = g;~%")
(loop
for i in (range (1- (ash 1 tot-bits))) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i))
for i in (range (num-g-intermediates tot-bits op i-len j-len)) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i))
(dump-declare-dri-for-rc fout bra-i "i")
(dump-declare-dri-for-rc fout (append op ket-j) "j")
(dump-declare-giao-ij fout bra-i (append op ket-j))
Expand Down Expand Up @@ -411,10 +419,10 @@ iz = idx[2+n*3];~%")
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {~%" intname)
(format fout envs-common)
(when (member 'g raw-infix)
(format fout "FINT i, nout;
FINT counts[4];~%")
(when (or (member 'g bra-i) (member 'g ket-j))
(format fout "if (out != NULL && envs.shls[0] == envs.shls[1]) {
FINT i, nout;
FINT counts[4];
counts[0] = envs.nfi * envs.x_ctr[0];
counts[1] = envs.nfj * envs.x_ctr[1];
counts[2] = 1;
Expand All @@ -431,10 +439,10 @@ return 0; }~%")))
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {~%" intname)
(format fout envs-common)
(when (member 'g raw-infix)
(format fout "FINT i, nout;
FINT counts[4];~%")
(when (or (member 'g bra-i) (member 'g ket-j))
(format fout "if (out != NULL && envs.shls[0] == envs.shls[1]) {
FINT i, nout;
FINT counts[4];
counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
counts[2] = 1;
Expand All @@ -451,10 +459,10 @@ return 0; }~%")))
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {~%" intname)
(format fout envs-common)
(when (member 'g raw-infix)
(format fout "FINT i, nout;
FINT counts[4];~%")
(when (or (member 'g bra-i) (member 'g ket-j))
(format fout "if (out != NULL && envs.shls[0] == envs.shls[1]) {
FINT i, nout;
FINT counts[4];
counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
counts[2] = 1;
Expand Down Expand Up @@ -569,11 +577,9 @@ double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {~%" intname)
FINT nrys_roots = envs->nrys_roots;
FINT ix, iy, iz, i, n;
double *g0 = g;~%")
(if (intersection *act-left-right* op)
(loop for i in (range (ash 1 tot-bits)) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i))
(loop for i in (range (1- (ash 1 tot-bits))) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i)))
(loop
for i in (range (num-g-intermediates tot-bits op i-len j-len)) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i))
(dump-declare-dri-for-rc fout bra-i "i")
(dump-declare-dri-for-rc fout ket-j "j")
(dump-declare-dri-for-rc fout bra-k "k")
Expand Down Expand Up @@ -770,11 +776,9 @@ double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {~%" intname)
FINT nrys_roots = envs->nrys_roots;
FINT ix, iy, iz, i, n;
double *g0 = g;~%")
(if (intersection *act-left-right* op)
(loop for i in (range (ash 1 tot-bits)) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i))
(loop for i in (range (1- (ash 1 tot-bits))) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i)))
(loop
for i in (range (num-g-intermediates tot-bits op i-len j-len)) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i))
(dump-declare-dri-for-rc fout bra-i "i")
(dump-declare-dri-for-rc fout ket-j "j")
(dump-declare-dri-for-rc fout bra-k "k")
Expand All @@ -791,7 +795,7 @@ double *g0 = g;~%")
(fmt-l ""))
(dump-combo-braket fout fmt-k fmt-op fmt-l k-rev '() '() 0)))
(let ((fmt-i "G2E_~aI(g~a, g~a, envs->i_l+~a, envs->j_l, envs->k_l, 0);~%")
(fmt-op (mkstr "G2E_~aJ_SIMD1(g~a, g~a, envs->i_l+~d, envs->j_l+~a, envs->k_l, 0);
(fmt-op (mkstr "G2E_~aJ(g~a, g~a, envs->i_l+~d, envs->j_l+~a, envs->k_l, 0);
G2E_~aI(g~a, g~a, envs->i_l+~a, envs->j_l+~a, envs->k_l, 0);
for (ix = 0; ix < envs->g_size * 3; ix++) {g~a[ix] += g~a[ix];}~%"))
(fmt-j (mkstr "G2E_~aJ(g~a, g~a, envs->i_l+~d, envs->j_l+~a, envs->k_l, 0);~%")))
Expand Down Expand Up @@ -849,10 +853,10 @@ for (ix = 0; ix < envs->g_size * 3; ix++) {g~a[ix] += g~a[ix];}~%"))
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {~%" intname)
(format fout envs-common)
(when (member 'g raw-infix)
(format fout "FINT i, nout;
FINT counts[4];~%")
(when (or (member 'g bra-i) (member 'g ket-j))
(format fout "if (out != NULL && envs.shls[0] == envs.shls[1]) {
FINT i, nout;
FINT counts[4];
counts[0] = envs.nfi * envs.x_ctr[0];
counts[1] = envs.nfj * envs.x_ctr[1];
counts[2] = envs.nfk * envs.x_ctr[2];
Expand All @@ -868,10 +872,10 @@ return 0; }~%")))
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {~%" intname)
(format fout envs-common)
(when (member 'g raw-infix)
(format fout "FINT i, nout;
FINT counts[4];~%")
(when (or (member 'g bra-i) (member 'g ket-j))
(format fout "if (out != NULL && envs.shls[0] == envs.shls[1]) {
FINT i, nout;
FINT counts[4];
counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
counts[2] = (envs.k_l*2+1) * envs.x_ctr[2];
Expand All @@ -888,10 +892,10 @@ return 0; }~%")))
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {~%" intname)
(format fout envs-common)
(when (member 'g raw-infix)
(format fout "FINT i, nout;
FINT counts[4];~%")
(when (or (member 'g bra-i) (member 'g ket-j))
(format fout "if (out != NULL && envs.shls[0] == envs.shls[1]) {
FINT i, nout;
FINT counts[4];
counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
counts[2] = (envs.k_l*2+1) * envs.x_ctr[2];
Expand Down Expand Up @@ -924,11 +928,9 @@ double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {~%" intname)
FINT nrys_roots = envs->nrys_roots;
FINT ix, iy, iz, i, n;
double *g0 = g;~%")
(if (intersection *act-left-right* op)
(loop for i in (range (ash 1 tot-bits)) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i))
(loop for i in (range (1- (ash 1 tot-bits))) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i)))
(loop
for i in (range (num-g-intermediates tot-bits op i-len 0)) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i))
(dump-declare-dri-for-rc fout bra-i "i")
(dump-declare-dri-for-rc fout bra-k "k")
(if (intersection *act-left-right* op)
Expand Down Expand Up @@ -1032,11 +1034,9 @@ double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {~%" intname)
(format fout "FINT nf = envs->nf;
FINT ix, iy, iz, n;
double *g0 = g;~%")
(if (intersection *act-left-right* op)
(loop for i in (range (ash 1 tot-bits)) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i))
(loop for i in (range (1- (ash 1 tot-bits))) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i)))
(loop
for i in (range (num-g-intermediates tot-bits op i-len j-len)) do
(format fout "double *g~a = g~a + envs->g_size * 3;~%" (1+ i) i))
(dump-declare-dri-for-rc fout bra-i "i")
(dump-declare-dri-for-rc fout (append op ket-j) "j")
(dump-declare-dri-for-rc fout bra-k "k")
Expand Down Expand Up @@ -1119,10 +1119,10 @@ iz = idx[2+n*3];~%")
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {~%" intname)
(format fout envs-common)
(when (member 'g raw-infix)
(format fout "FINT i, nout;
FINT counts[4];~%")
(when (or (member 'g bra-i) (member 'g ket-j))
(format fout "if (out != NULL && envs.shls[0] == envs.shls[1]) {
FINT i, nout;
FINT counts[4];
counts[0] = envs.nfi * envs.x_ctr[0];
counts[1] = envs.nfj * envs.x_ctr[1];
counts[2] = envs.nfk * envs.x_ctr[2];
Expand All @@ -1139,10 +1139,10 @@ return 0; }~%")))
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {~%" intname)
(format fout envs-common)
(when (member 'g raw-infix)
(format fout "FINT i, nout;
FINT counts[4];~%")
(when (or (member 'g bra-i) (member 'g ket-j))
(format fout "if (out != NULL && envs.shls[0] == envs.shls[1]) {
FINT i, nout;
FINT counts[4];
counts[0] = (envs.i_l*2+1) * envs.x_ctr[0];
counts[1] = (envs.j_l*2+1) * envs.x_ctr[1];
counts[2] = (envs.k_l*2+1) * envs.x_ctr[2];
Expand All @@ -1159,10 +1159,10 @@ return 0; }~%")))
FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {~%" intname)
(format fout envs-common)
(when (member 'g raw-infix)
(format fout "FINT i, nout;
FINT counts[4];~%")
(when (or (member 'g bra-i) (member 'g ket-j))
(format fout "if (out != NULL && envs.shls[0] == envs.shls[1]) {
FINT i, nout;
FINT counts[4];
counts[0] = CINTcgto_spinor(envs.shls[0], envs.bas);
counts[1] = CINTcgto_spinor(envs.shls[1], envs.bas);
counts[2] = (envs.k_l*2+1) * envs.x_ctr[2];
Expand Down
8 changes: 0 additions & 8 deletions src/autocode/breit1.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ double *g12 = g11 + envs->g_size * 3;
double *g13 = g12 + envs->g_size * 3;
double *g14 = g13 + envs->g_size * 3;
double *g15 = g14 + envs->g_size * 3;
double *g16 = g15 + envs->g_size * 3;
G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+3, envs->k_l+0, envs->l_l+0);
G2E_D_J(g2, g0, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
G2E_D_J(g3, g1, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
Expand Down Expand Up @@ -234,7 +233,6 @@ double *g12 = g11 + envs->g_size * 3;
double *g13 = g12 + envs->g_size * 3;
double *g14 = g13 + envs->g_size * 3;
double *g15 = g14 + envs->g_size * 3;
double *g16 = g15 + envs->g_size * 3;
G2E_D_K(g1, g0, envs->i_l+1, envs->j_l+3, envs->k_l+0, envs->l_l);
G2E_D_J(g2, g0, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
G2E_D_J(g3, g1, envs->i_l+0, envs->j_l+0, envs->k_l, envs->l_l);
Expand Down Expand Up @@ -433,7 +431,6 @@ double *g12 = g11 + envs->g_size * 3;
double *g13 = g12 + envs->g_size * 3;
double *g14 = g13 + envs->g_size * 3;
double *g15 = g14 + envs->g_size * 3;
double *g16 = g15 + envs->g_size * 3;
G2E_D_L(g1, g0, envs->i_l+2, envs->j_l+2, envs->k_l+0, envs->l_l+0);
G2E_R0J(g2, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
G2E_R0J(g3, g1, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
Expand Down Expand Up @@ -632,7 +629,6 @@ double *g12 = g11 + envs->g_size * 3;
double *g13 = g12 + envs->g_size * 3;
double *g14 = g13 + envs->g_size * 3;
double *g15 = g14 + envs->g_size * 3;
double *g16 = g15 + envs->g_size * 3;
G2E_D_K(g1, g0, envs->i_l+2, envs->j_l+2, envs->k_l+0, envs->l_l);
G2E_R0J(g2, g0, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
G2E_R0J(g3, g1, envs->i_l+1, envs->j_l+0, envs->k_l, envs->l_l);
Expand Down Expand Up @@ -831,7 +827,6 @@ double *g12 = g11 + envs->g_size * 3;
double *g13 = g12 + envs->g_size * 3;
double *g14 = g13 + envs->g_size * 3;
double *g15 = g14 + envs->g_size * 3;
double *g16 = g15 + envs->g_size * 3;
G2E_D_L(g1, g0, envs->i_l+1, envs->j_l+2, envs->k_l+0, envs->l_l+0);
G2E_R0L(g2, g0, envs->i_l+1, envs->j_l+2, envs->k_l+0, envs->l_l+1);
G2E_D_L(g3, g2, envs->i_l+1, envs->j_l+2, envs->k_l+0, envs->l_l+0);
Expand Down Expand Up @@ -1034,7 +1029,6 @@ double *g12 = g11 + envs->g_size * 3;
double *g13 = g12 + envs->g_size * 3;
double *g14 = g13 + envs->g_size * 3;
double *g15 = g14 + envs->g_size * 3;
double *g16 = g15 + envs->g_size * 3;
G2E_R0L(g1, g0, envs->i_l+1, envs->j_l+2, envs->k_l+1, envs->l_l+0);
G2E_D_K(g2, g0, envs->i_l+1, envs->j_l+2, envs->k_l+0, envs->l_l);
G2E_D_K(g3, g1, envs->i_l+1, envs->j_l+2, envs->k_l+0, envs->l_l);
Expand Down Expand Up @@ -1237,7 +1231,6 @@ double *g12 = g11 + envs->g_size * 3;
double *g13 = g12 + envs->g_size * 3;
double *g14 = g13 + envs->g_size * 3;
double *g15 = g14 + envs->g_size * 3;
double *g16 = g15 + envs->g_size * 3;
G2E_D_L(g1, g0, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l+0);
G2E_R0L(g2, g0, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l+1);
G2E_D_L(g3, g2, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l+0);
Expand Down Expand Up @@ -1440,7 +1433,6 @@ double *g12 = g11 + envs->g_size * 3;
double *g13 = g12 + envs->g_size * 3;
double *g14 = g13 + envs->g_size * 3;
double *g15 = g14 + envs->g_size * 3;
double *g16 = g15 + envs->g_size * 3;
G2E_R0L(g1, g0, envs->i_l+2, envs->j_l+1, envs->k_l+1, envs->l_l+0);
G2E_D_K(g2, g0, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l);
G2E_D_K(g3, g1, envs->i_l+2, envs->j_l+1, envs->k_l+0, envs->l_l);
Expand Down
16 changes: 8 additions & 8 deletions src/autocode/dkb.c
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ void CINTgout1e_int1e_spspsp(double *gout, double *g, FINT *idx, CINTEnvVars *en
FINT nf = envs->nf;
FINT ix, iy, iz, n;
double *g0 = g;
double *g1 = g0 + envs->g_size * 3;
double *g2 = g1 + envs->g_size * 3;
double *g3 = g2 + envs->g_size * 3;
double *g4 = g3 + envs->g_size * 3;
double *g5 = g4 + envs->g_size * 3;
double *g6 = g5 + envs->g_size * 3;
double *g7 = g6 + envs->g_size * 3;
double *g1 = g0 + envs->g_size * 3;
double *g2 = g1 + envs->g_size * 3;
double *g3 = g2 + envs->g_size * 3;
double *g4 = g3 + envs->g_size * 3;
double *g5 = g4 + envs->g_size * 3;
double *g6 = g5 + envs->g_size * 3;
double *g7 = g6 + envs->g_size * 3;
double s[27];
G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
G1E_D_J(g2, g0, envs->i_l+1, envs->j_l+1, 0);
Expand Down Expand Up @@ -103,7 +103,7 @@ void CINTgout1e_int1e_spnuc(double *gout, double *g, FINT *idx, CINTEnvVars *env
FINT nf = envs->nf;
FINT ix, iy, iz, n;
double *g0 = g;
double *g1 = g0 + envs->g_size * 3;
double *g1 = g0 + envs->g_size * 3;
double s[3];
G1E_D_I(g1, g0, envs->i_l+0, envs->j_l, 0);
for (n = 0; n < nf; n++) {
Expand Down
Loading

0 comments on commit 7efe346

Please sign in to comment.