1 /* 2 * Copyright (C) 2013- Qiming Sun <osirpt.sun@gmail.com> 3 * 4 * Provide the intermediate variable g(nroots,i,j,k,l,[xyz]) 5 */ 6 7 #include "config.h" 8 #include "g1e.h" 9 10 #ifndef HAVE_BC 11 #define HAVE_BC 12 struct _BC { 13 double c00[MXRYSROOTS*3]; 14 double c0p[MXRYSROOTS*3]; 15 double b01[MXRYSROOTS]; 16 double b00[MXRYSROOTS]; 17 double b10[MXRYSROOTS]; 18 }; 19 #endif 20 21 void CINTg2e_index_xyz(FINT *idx, const CINTEnvVars *envs); 22 23 void CINTinit_int2e_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, 24 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env); 25 void CINTinit_int3c2e_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, 26 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env); 27 void CINTinit_int2c2e_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, 28 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env); 29 30 FINT CINTg0_2e(double *g, const CINTEnvVars *envs); 31 void CINTg0_2e_2d(double *g, struct _BC *bc, const CINTEnvVars *envs); 32 void CINTg0_2e_lj2d4d(double *g, struct _BC *bc, const CINTEnvVars *envs); 33 void CINTg0_2e_kj2d4d(double *g, struct _BC *bc, const CINTEnvVars *envs); 34 void CINTg0_2e_il2d4d(double *g, struct _BC *bc, const CINTEnvVars *envs); 35 void CINTg0_2e_ik2d4d(double *g, struct _BC *bc, const CINTEnvVars *envs); 36 37 void CINTg0_lj2d_4d(double *g, const CINTEnvVars *envs); 38 void CINTg0_kj2d_4d(double *g, const CINTEnvVars *envs); 39 void CINTg0_il2d_4d(double *g, const CINTEnvVars *envs); 40 void CINTg0_ik2d_4d(double *g, const CINTEnvVars *envs); 41 42 void CINTnabla1i_2e(double *f, const double *g, 43 const FINT li, const FINT lj, const FINT lk, const FINT ll, 44 const CINTEnvVars *envs); 45 46 void CINTnabla1j_2e(double *f, const double *g, 47 const FINT li, const FINT lj, const FINT lk, const FINT ll, 48 const CINTEnvVars *envs); 49 50 void CINTnabla1k_2e(double *f, const double *g, 51 const FINT li, const FINT lj, const FINT lk, const FINT ll, 52 const CINTEnvVars *envs); 53 54 void CINTnabla1l_2e(double *f, const double *g, 55 const FINT li, const FINT lj, const FINT lk, const FINT ll, 56 const CINTEnvVars *envs); 57 58 void CINTx1i_2e(double *f, const double *g, const double *ri, 59 const FINT li, const FINT lj, const FINT lk, const FINT ll, 60 const CINTEnvVars *envs); 61 62 void CINTx1j_2e(double *f, const double *g, const double *rj, 63 const FINT li, const FINT lj, const FINT lk, const FINT ll, 64 const CINTEnvVars *envs); 65 66 void CINTx1k_2e(double *f, const double *g, const double *rk, 67 const FINT li, const FINT lj, const FINT lk, const FINT ll, 68 const CINTEnvVars *envs); 69 70 void CINTx1l_2e(double *f, const double *g, const double *rl, 71 const FINT li, const FINT lj, const FINT lk, const FINT ll, 72 const CINTEnvVars *envs); 73 74 #ifdef WITH_F12 75 void CINTinit_int2e_stg_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, 76 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env); 77 void CINTinit_int2e_yp_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, 78 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env); 79 #endif 80 81 #ifdef WITH_GTG 82 void CINTinit_int2e_gtg_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, 83 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env); 84 void CINTinit_int3c2e_gtg_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, 85 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env); 86 void CINTinit_int2c2e_gtg_EnvVars(CINTEnvVars *envs, FINT *ng, FINT *shls, 87 FINT *atm, FINT natm, FINT *bas, FINT nbas, double *env); 88 #endif 89 90 91 #define G2E_D_I(f, g, li, lj, lk, ll) CINTnabla1i_2e(f, g, li, lj, lk, ll, envs) 92 #define G2E_D_J(f, g, li, lj, lk, ll) CINTnabla1j_2e(f, g, li, lj, lk, ll, envs) 93 #define G2E_D_K(f, g, li, lj, lk, ll) CINTnabla1k_2e(f, g, li, lj, lk, ll, envs) 94 #define G2E_D_L(f, g, li, lj, lk, ll) CINTnabla1l_2e(f, g, li, lj, lk, ll, envs) 95 /* r-R_0, R_0 is (0,0,0) */ 96 #define G2E_R0I(f, g, li, lj, lk, ll) CINTx1i_2e(f, g, envs->ri, li, lj, lk, ll, envs) 97 #define G2E_R0J(f, g, li, lj, lk, ll) CINTx1j_2e(f, g, envs->rj, li, lj, lk, ll, envs) 98 #define G2E_R0K(f, g, li, lj, lk, ll) CINTx1k_2e(f, g, envs->rk, li, lj, lk, ll, envs) 99 #define G2E_R0L(f, g, li, lj, lk, ll) CINTx1l_2e(f, g, envs->rl, li, lj, lk, ll, envs) 100 /* r-R_C, R_C is common origin */ 101 #define G2E_RCI(f, g, li, lj, lk, ll) CINTx1i_2e(f, g, dri, li, lj, lk, ll, envs) 102 #define G2E_RCJ(f, g, li, lj, lk, ll) CINTx1j_2e(f, g, drj, li, lj, lk, ll, envs) 103 #define G2E_RCK(f, g, li, lj, lk, ll) CINTx1k_2e(f, g, drk, li, lj, lk, ll, envs) 104 #define G2E_RCL(f, g, li, lj, lk, ll) CINTx1l_2e(f, g, drl, li, lj, lk, ll, envs) 105 /* origin from center of each basis 106 * x1[ijkl]_2e(f, g, ng, li, lj, lk, ll, 0d0) */ 107 #define G2E_R_I(f, g, li, lj, lk, ll) f = g + envs->g_stride_i 108 #define G2E_R_K(f, g, li, lj, lk, ll) f = g + envs->g_stride_k 109 #define G2E_R_L(f, g, li, lj, lk, ll) f = g + envs->g_stride_l 110 #define G2E_R_J(f, g, li, lj, lk, ll) f = g + envs->g_stride_j 111