Skip to content

Commit

Permalink
3.0.12 release
Browse files Browse the repository at this point in the history
  • Loading branch information
sunqm committed May 1, 2018
1 parent ef49e8a commit 905e74f
Show file tree
Hide file tree
Showing 5 changed files with 109 additions and 3 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
cmake_minimum_required (VERSION 2.6)
project (qcint C)
set(qcint_VERSION "3.0.11")
set(qcint_VERSION "3.0.12")

if ("${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE RELWITHDEBINFO)
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.12 (2018-05-01):
* New integrals < sigma dot p i | r | sigma dot p j >
* Fix the undefined int64_t type in Fortran interface
Version 3.0.11 (2018-03-23):
* Export breit integrals
Version 3.0.10 (2018-03-20):
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ qcint (quick libcint)

An optimized libcint branch for X86 platform

version 3.0.11
version 3.0.12

2018-03-23
2018-05-01


What is qcint
Expand Down
1 change: 1 addition & 0 deletions scripts/auto_intor.cl
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@
'("int1e_spnucsp" (sigma dot p \| nuc \| sigma dot p))
'("int1e_sprinvsp" (sigma dot p \| rinv \| sigma dot p))
'("int1e_srnucsr" (sigma dot r \| nuc \| sigma dot r))
'("int1e_sprsp" (sigma dot p \| rc \| sigma dot p))
'("int1e_govlp" (g \|))
'("int1e_gnuc" (g \| nuc \|))
'("int1e_cg_sa10sa01" (.5 sigma cross rc \| sigma cross nabla-rinv \|))
Expand Down
102 changes: 102 additions & 0 deletions src/autocode/intor3.c
Original file line number Diff line number Diff line change
Expand Up @@ -673,6 +673,108 @@ return CINT1e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_1e);
} // int1e_srnucsr_spinor
ALL_CINT1E(int1e_srnucsr)
//ALL_CINT1E_FORTRAN_(cint1e_srnucsr)
/* <SIGMA DOT P i|RC |SIGMA DOT P j> */
static void CINTgout1e_int1e_sprsp(double *gout, double *g, int *idx, CINTEnvVars *envs, int count) {
CINTg1e_ovlp(g, envs, count);
int nf = envs->nf;
int nfc = nf * 12;
int ix, iy, iz, n;
DECLARE_GOUT;
double *RESTRICT g0 = g;
double *RESTRICT g1 = g0 + envs->g_size * 3 * SIMDD;
double *RESTRICT g2 = g1 + envs->g_size * 3 * SIMDD;
double *RESTRICT g3 = g2 + envs->g_size * 3 * SIMDD;
double *RESTRICT g4 = g3 + envs->g_size * 3 * SIMDD;
double *RESTRICT g5 = g4 + envs->g_size * 3 * SIMDD;
double *RESTRICT g6 = g5 + envs->g_size * 3 * SIMDD;
double *RESTRICT g7 = g6 + envs->g_size * 3 * SIMDD;
double drj[3];
drj[0] = envs->rj[0] - envs->env[PTR_COMMON_ORIG+0];
drj[1] = envs->rj[1] - envs->env[PTR_COMMON_ORIG+1];
drj[2] = envs->rj[2] - envs->env[PTR_COMMON_ORIG+2];
__MD r1;
__MD rs[27];
G1E_D_J(g1, g0, envs->i_l+1, envs->j_l+0, 0);
G1E_RCJ(g2, g0, envs->i_l+1, envs->j_l+1, 0);
G1E_D_J(g3, g2, envs->i_l+1, envs->j_l+0, 0);
G1E_D_I(g4, g0, envs->i_l+0, envs->j_l, 0);
G1E_D_I(g5, g1, envs->i_l+0, envs->j_l, 0);
G1E_D_I(g6, g2, envs->i_l+0, envs->j_l, 0);
G1E_D_I(g7, g3, envs->i_l+0, envs->j_l, 0);
for (n = 0; n < nf; n++) {
ix = idx[0+n*3];
iy = idx[1+n*3];
iz = idx[2+n*3];
rs[0] = MM_LOAD(g7+ix*SIMDD) * MM_LOAD(g0+iy*SIMDD) * MM_LOAD(g0+iz*SIMDD);
rs[1] = MM_LOAD(g6+ix*SIMDD) * MM_LOAD(g1+iy*SIMDD) * MM_LOAD(g0+iz*SIMDD);
rs[2] = MM_LOAD(g6+ix*SIMDD) * MM_LOAD(g0+iy*SIMDD) * MM_LOAD(g1+iz*SIMDD);
rs[3] = MM_LOAD(g5+ix*SIMDD) * MM_LOAD(g2+iy*SIMDD) * MM_LOAD(g0+iz*SIMDD);
rs[4] = MM_LOAD(g4+ix*SIMDD) * MM_LOAD(g3+iy*SIMDD) * MM_LOAD(g0+iz*SIMDD);
rs[5] = MM_LOAD(g4+ix*SIMDD) * MM_LOAD(g2+iy*SIMDD) * MM_LOAD(g1+iz*SIMDD);
rs[6] = MM_LOAD(g5+ix*SIMDD) * MM_LOAD(g0+iy*SIMDD) * MM_LOAD(g2+iz*SIMDD);
rs[7] = MM_LOAD(g4+ix*SIMDD) * MM_LOAD(g1+iy*SIMDD) * MM_LOAD(g2+iz*SIMDD);
rs[8] = MM_LOAD(g4+ix*SIMDD) * MM_LOAD(g0+iy*SIMDD) * MM_LOAD(g3+iz*SIMDD);
rs[9] = MM_LOAD(g3+ix*SIMDD) * MM_LOAD(g4+iy*SIMDD) * MM_LOAD(g0+iz*SIMDD);
rs[10] = MM_LOAD(g2+ix*SIMDD) * MM_LOAD(g5+iy*SIMDD) * MM_LOAD(g0+iz*SIMDD);
rs[11] = MM_LOAD(g2+ix*SIMDD) * MM_LOAD(g4+iy*SIMDD) * MM_LOAD(g1+iz*SIMDD);
rs[12] = MM_LOAD(g1+ix*SIMDD) * MM_LOAD(g6+iy*SIMDD) * MM_LOAD(g0+iz*SIMDD);
rs[13] = MM_LOAD(g0+ix*SIMDD) * MM_LOAD(g7+iy*SIMDD) * MM_LOAD(g0+iz*SIMDD);
rs[14] = MM_LOAD(g0+ix*SIMDD) * MM_LOAD(g6+iy*SIMDD) * MM_LOAD(g1+iz*SIMDD);
rs[15] = MM_LOAD(g1+ix*SIMDD) * MM_LOAD(g4+iy*SIMDD) * MM_LOAD(g2+iz*SIMDD);
rs[16] = MM_LOAD(g0+ix*SIMDD) * MM_LOAD(g5+iy*SIMDD) * MM_LOAD(g2+iz*SIMDD);
rs[17] = MM_LOAD(g0+ix*SIMDD) * MM_LOAD(g4+iy*SIMDD) * MM_LOAD(g3+iz*SIMDD);
rs[18] = MM_LOAD(g3+ix*SIMDD) * MM_LOAD(g0+iy*SIMDD) * MM_LOAD(g4+iz*SIMDD);
rs[19] = MM_LOAD(g2+ix*SIMDD) * MM_LOAD(g1+iy*SIMDD) * MM_LOAD(g4+iz*SIMDD);
rs[20] = MM_LOAD(g2+ix*SIMDD) * MM_LOAD(g0+iy*SIMDD) * MM_LOAD(g5+iz*SIMDD);
rs[21] = MM_LOAD(g1+ix*SIMDD) * MM_LOAD(g2+iy*SIMDD) * MM_LOAD(g4+iz*SIMDD);
rs[22] = MM_LOAD(g0+ix*SIMDD) * MM_LOAD(g3+iy*SIMDD) * MM_LOAD(g4+iz*SIMDD);
rs[23] = MM_LOAD(g0+ix*SIMDD) * MM_LOAD(g2+iy*SIMDD) * MM_LOAD(g5+iz*SIMDD);
rs[24] = MM_LOAD(g1+ix*SIMDD) * MM_LOAD(g0+iy*SIMDD) * MM_LOAD(g6+iz*SIMDD);
rs[25] = MM_LOAD(g0+ix*SIMDD) * MM_LOAD(g1+iy*SIMDD) * MM_LOAD(g6+iz*SIMDD);
rs[26] = MM_LOAD(g0+ix*SIMDD) * MM_LOAD(g0+iy*SIMDD) * MM_LOAD(g7+iz*SIMDD);
GOUT_SCATTER(gout, n*12+0, MM_SET1(0.));
r1 = + rs[18] - rs[2]; GOUT_SCATTER(gout, n*12+1, r1);
r1 = + rs[1] - rs[9]; GOUT_SCATTER(gout, n*12+2, r1);
r1 = + rs[0] + rs[10] + rs[20]; GOUT_SCATTER(gout, n*12+3, r1);
r1 = + rs[14] - rs[22]; GOUT_SCATTER(gout, n*12+4, r1);
GOUT_SCATTER(gout, n*12+5, MM_SET1(0.));
r1 = + rs[4] - rs[12]; GOUT_SCATTER(gout, n*12+6, r1);
r1 = + rs[3] + rs[13] + rs[23]; GOUT_SCATTER(gout, n*12+7, r1);
r1 = + rs[17] - rs[25]; GOUT_SCATTER(gout, n*12+8, r1);
r1 = + rs[24] - rs[8]; GOUT_SCATTER(gout, n*12+9, r1);
GOUT_SCATTER(gout, n*12+10, MM_SET1(0.));
r1 = + rs[6] + rs[16] + rs[26]; GOUT_SCATTER(gout, n*12+11, r1);
}}
void int1e_sprsp_optimizer(CINTOpt **opt, int *atm, int natm, int *bas, int nbas, double *env) {
int ng[] = {1, 2, 0, 0, 3, 4, 1, 3};
CINTall_1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
}
int int1e_sprsp_cart(double *out, int *dims, int *shls,
int *atm, int natm, int *bas, int nbas, double *env, CINTOpt *opt, double *cache) {
int ng[] = {1, 2, 0, 0, 3, 4, 1, 3};
CINTEnvVars envs;
CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
envs.f_gout = &CINTgout1e_int1e_sprsp;
return CINT1e_drv(out, dims, &envs, opt, cache, &c2s_cart_1e);
} // int1e_sprsp_cart
int int1e_sprsp_sph(double *out, int *dims, int *shls,
int *atm, int natm, int *bas, int nbas, double *env, CINTOpt *opt, double *cache) {
int ng[] = {1, 2, 0, 0, 3, 4, 1, 3};
CINTEnvVars envs;
CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
envs.f_gout = &CINTgout1e_int1e_sprsp;
return CINT1e_drv(out, dims, &envs, opt, cache, &c2s_sph_1e);
} // int1e_sprsp_sph
int int1e_sprsp_spinor(double complex *out, int *dims, int *shls,
int *atm, int natm, int *bas, int nbas, double *env, CINTOpt *opt, double *cache) {
int ng[] = {1, 2, 0, 0, 3, 4, 1, 3};
CINTEnvVars envs;
CINTinit_int1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
envs.f_gout = &CINTgout1e_int1e_sprsp;
return CINT1e_spinor_drv(out, dims, &envs, opt, cache, &c2s_si_1e);
} // int1e_sprsp_spinor
ALL_CINT1E(int1e_sprsp)
//ALL_CINT1E_FORTRAN_(cint1e_sprsp)
/* <G i|OVLP |j> */
static void CINTgout1e_int1e_govlp(double *gout, double *g, int *idx, CINTEnvVars *envs, int count) {
CINTg1e_ovlp(g, envs, count);
Expand Down

0 comments on commit 905e74f

Please sign in to comment.