31 #include <util/ref/ref.h>
32 #include <util/misc/scexception.h>
33 #include <chemistry/qc/basis/basis.h>
34 #include <chemistry/qc/basis/intparams.h>
35 #include <chemistry/qc/basis/intdescr.h>
36 #include <chemistry/qc/libint2/shellpairs.h>
37 #include <chemistry/qc/basis/fjt.h>
38 #include <chemistry/qc/libint2/int2e.h>
41 #if LIBINT2_SUPPORT_G12DKH
42 #ifndef _chemistry_qc_libint2_g12dkh_h
43 #define _chemistry_qc_libint2_g12dkh_h
54 class G12DKHLibint2:
public Int2eLibint2 {
57 static const int num_te_types_ = TwoBodyIntDescrG12DKH::num_intsets;
60 typedef IntParamsG12::ContractedGeminal ContractedGeminal;
62 ContractedGeminal geminal_bra_;
64 ContractedGeminal geminal_ket_;
67 double *target_ints_buffer_[num_te_types_];
70 double *cart_ints_[num_te_types_];
71 double *sphharm_ints_;
75 double *prim_ints_[num_te_types_];
76 double *contr_quartets_[num_te_types_];
77 double *shell_quartet_[num_te_types_];
80 Ref<ShellPairsLibint2> shell_pairs12_;
81 Ref<ShellPairsLibint2> shell_pairs34_;
86 ShellPairLibint2 *shell_pair12, *shell_pair34;
88 int *op1, *op2, *op3, *op4;
90 double A[3], B[3], C[3], D[3];
92 int gc1, gc2, gc3, gc4;
96 typedef Libint_t prim_data;
97 void g12dkh_quartet_data_(prim_data *Data,
double scale,
double gamma_bra,
double gamma_ket);
102 class ExpensiveMath {
105 double fac[4*LIBINT2_MAX_AM_G12DKH+1];
106 double bc[4*LIBINT2_MAX_AM_G12DKH+1][4*LIBINT2_MAX_AM_G12DKH+1];
108 ExpensiveMath ExpMath_;
112 G12DKHLibint2(Integral *,
113 const Ref<GaussianBasisSet>&,
114 const Ref<GaussianBasisSet>&,
115 const Ref<GaussianBasisSet>&,
116 const Ref<GaussianBasisSet>&,
118 const ContractedGeminal& gbra
122 double *buffer(
unsigned int t)
const {
123 return target_ints_buffer_[t];
126 static size_t storage_required(
const Ref<GaussianBasisSet>& b1,
127 const Ref<GaussianBasisSet>& b2 = 0,
128 const Ref<GaussianBasisSet>& b3 = 0,
129 const Ref<GaussianBasisSet>& b4 = 0);
132 void compute_quartet(
int*,
int*,
int*,
int*);
137 #include <chemistry/qc/libint2/g12dkh_quartet_data.h>
139 #endif // header guard
140 #endif // if LIBINT2_SUPPORT_G12DKH