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"
CINTgout1e_int3c1e_p2(double * gout,double * g,FINT * idx,CINTEnvVars * envs,FINT gout_empty)17 static void CINTgout1e_int3c1e_p2(double *gout,
18 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 *g2 = g1 + envs->g_size * 3;
24 double *g3 = g2 + envs->g_size * 3;
25 double s[9];
26 G1E_D_K(g1, g0, envs->i_l+0, envs->j_l+0, envs->k_l+1);
27 G1E_D_K(g2, g0, envs->i_l+0, envs->j_l+0, envs->k_l+0);
28 G1E_D_K(g3, g1, envs->i_l+0, envs->j_l+0, envs->k_l+0);
29 for (n = 0; n < nf; n++) {
30 ix = idx[0+n*3];
31 iy = idx[1+n*3];
32 iz = idx[2+n*3];
33 s[0] = + g3[ix+0]*g0[iy+0]*g0[iz+0];
34 s[1] = + g2[ix+0]*g1[iy+0]*g0[iz+0];
35 s[2] = + g2[ix+0]*g0[iy+0]*g1[iz+0];
36 s[3] = + g1[ix+0]*g2[iy+0]*g0[iz+0];
37 s[4] = + g0[ix+0]*g3[iy+0]*g0[iz+0];
38 s[5] = + g0[ix+0]*g2[iy+0]*g1[iz+0];
39 s[6] = + g1[ix+0]*g0[iy+0]*g2[iz+0];
40 s[7] = + g0[ix+0]*g1[iy+0]*g2[iz+0];
41 s[8] = + g0[ix+0]*g0[iy+0]*g3[iz+0];
42 if (gout_empty) {
43 gout[n*1+0] = - s[0] - s[4] - s[8];
44 } else {
45 gout[n*1+0] += - s[0] - s[4] - s[8];
46 }}}
int3c1e_p2_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)47 void int3c1e_p2_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
48 FINT ng[] = {0, 0, 2, 0, 2, 1, 1, 1};
49 CINTall_3c1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
50 }
int3c1e_p2_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)51 CACHE_SIZE_T int3c1e_p2_cart(double *out, FINT *dims, FINT *shls,
52 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
53 FINT ng[] = {0, 0, 2, 0, 2, 1, 1, 1};
54 CINTEnvVars envs;
55 CINTinit_int3c1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
56 envs.f_gout = &CINTgout1e_int3c1e_p2;
57 return CINT3c1e_drv(out, dims, &envs, opt, cache, &c2s_cart_3c1e, 0, 0);
58 }
59 // int3c1e_p2_cart
int3c1e_p2_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)60 CACHE_SIZE_T int3c1e_p2_sph(double *out, FINT *dims, FINT *shls,
61 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
62 FINT ng[] = {0, 0, 2, 0, 2, 1, 1, 1};
63 CINTEnvVars envs;
64 CINTinit_int3c1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
65 envs.f_gout = &CINTgout1e_int3c1e_p2;
66 return CINT3c1e_drv(out, dims, &envs, opt, cache, &c2s_sph_3c1e, 0, 0);
67 } // int3c1e_p2_sph
int3c1e_p2_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)68 CACHE_SIZE_T int3c1e_p2_spinor(double complex *out, FINT *dims, FINT *shls,
69 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
70 FINT ng[] = {0, 0, 2, 0, 2, 1, 1, 1};
71 CINTEnvVars envs;
72 CINTinit_int3c1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
73 envs.f_gout = &CINTgout1e_int3c1e_p2;
74 return CINT3c1e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_3c2e1, 0, 0);
75 } // int3c1e_p2_spinor
76 ALL_CINT(int3c1e_p2)
ALL_CINT_FORTRAN_(int3c1e_p2)77 ALL_CINT_FORTRAN_(int3c1e_p2)
78 static void CINTgout1e_int3c1e_iprinv(double *gout,
79 double *g, FINT *idx, CINTEnvVars *envs, FINT gout_empty) {
80 FINT nf = envs->nf;
81 FINT ix, iy, iz, n;
82 double *g0 = g;
83 double *g1 = g0 + envs->g_size * 3;
84 double s[3];
85 G1E_D_I(g1, g0, envs->i_l+0, envs->j_l, envs->k_l);
86 for (n = 0; n < nf; n++) {
87 ix = idx[0+n*3];
88 iy = idx[1+n*3];
89 iz = idx[2+n*3];
90 s[0] = + g1[ix+0]*g0[iy+0]*g0[iz+0];
91 s[1] = + g0[ix+0]*g1[iy+0]*g0[iz+0];
92 s[2] = + g0[ix+0]*g0[iy+0]*g1[iz+0];
93 if (gout_empty) {
94 gout[n*3+0] = + s[0];
95 gout[n*3+1] = + s[1];
96 gout[n*3+2] = + s[2];
97 } else {
98 gout[n*3+0] += + s[0];
99 gout[n*3+1] += + s[1];
100 gout[n*3+2] += + s[2];
101 }}}
int3c1e_iprinv_optimizer(CINTOpt ** opt,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env)102 void int3c1e_iprinv_optimizer(CINTOpt **opt, FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env) {
103 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
104 CINTall_3c1e_optimizer(opt, ng, atm, natm, bas, nbas, env);
105 }
int3c1e_iprinv_cart(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)106 CACHE_SIZE_T int3c1e_iprinv_cart(double *out, FINT *dims, FINT *shls,
107 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
108 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
109 CINTEnvVars envs;
110 CINTinit_int3c1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
111 envs.f_gout = &CINTgout1e_int3c1e_iprinv;
112 return CINT3c1e_drv(out, dims, &envs, opt, cache, &c2s_cart_3c1e, 1, 0);
113 }
114 // int3c1e_iprinv_cart
int3c1e_iprinv_sph(double * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)115 CACHE_SIZE_T int3c1e_iprinv_sph(double *out, FINT *dims, FINT *shls,
116 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
117 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
118 CINTEnvVars envs;
119 CINTinit_int3c1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
120 envs.f_gout = &CINTgout1e_int3c1e_iprinv;
121 return CINT3c1e_drv(out, dims, &envs, opt, cache, &c2s_sph_3c1e, 1, 0);
122 } // int3c1e_iprinv_sph
int3c1e_iprinv_spinor(double complex * out,FINT * dims,FINT * shls,FINT * atm,FINT natm,FINT * bas,FINT nbas,double * env,CINTOpt * opt,double * cache)123 CACHE_SIZE_T int3c1e_iprinv_spinor(double complex *out, FINT *dims, FINT *shls,
124 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env, CINTOpt *opt, double *cache) {
125 FINT ng[] = {1, 0, 0, 0, 1, 1, 0, 3};
126 CINTEnvVars envs;
127 CINTinit_int3c1e_EnvVars(&envs, ng, shls, atm, natm, bas, nbas, env);
128 envs.f_gout = &CINTgout1e_int3c1e_iprinv;
129 return CINT3c1e_spinor_drv(out, dims, &envs, opt, cache, &c2s_sf_3c2e1i, 1, 0);
130 } // int3c1e_iprinv_spinor
131 ALL_CINT(int3c1e_iprinv)
132 ALL_CINT_FORTRAN_(int3c1e_iprinv)
133