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>
40 #include <libint2/boys.h>
41 #include <chemistry/qc/libint2/core_ints_engine.h>
43 #ifndef _chemistry_qc_libint2_g12nc_h
44 #define _chemistry_qc_libint2_g12nc_h
66 static const int num_te_types_ = TwoBodyIntDescrG12NC::num_intsets;
69 typedef IntParamsG12::ContractedGeminal ContractedGeminal;
71 ContractedGeminal geminal_bra_;
73 ContractedGeminal geminal_ket_;
76 enum OperType {coulomb, f12_coulomb, f12, f12_2, f12_T1_f12};
79 double *target_ints_buffer_[num_te_types_];
82 double *cart_ints_[num_te_types_];
83 double *sphharm_ints_;
87 double *prim_ints_[num_te_types_];
88 double *contr_quartets_[num_te_types_];
89 double *shell_quartet_[num_te_types_];
100 int *op1, *op2, *op3, *op4;
102 double A[3], B[3], C[3], D[3];
104 int gc1, gc2, gc3, gc4;
108 typedef Libint_t prim_data;
112 void g12nc_quartet_data_(prim_data *Data,
double scale, OperType otype,
113 const ContractedGeminal* gbra,
114 const ContractedGeminal* gket);
116 std::vector<Libint_t> Libint_;
117 typedef ::libint2::FmEval_Chebyshev7<double> _FmEvalType;
122 class ExpensiveMath {
125 double fac[4*LIBINT2_MAX_AM_eri+1];
126 double bc[4*LIBINT2_MAX_AM_eri+1][4*LIBINT2_MAX_AM_eri+1];
128 ExpensiveMath ExpMath_;
138 const ContractedGeminal& gbra,
139 const ContractedGeminal& gket
144 return target_ints_buffer_[t];
158 #include <chemistry/qc/libint2/g12nc_quartet_data.h>
160 #endif // header guard
A template class that maintains references counts.
Definition: ref.h:361
G12NCLibint2(Integral *, const Ref< GaussianBasisSet > &, const Ref< GaussianBasisSet > &, const Ref< GaussianBasisSet > &, const Ref< GaussianBasisSet > &, size_t storage, const ContractedGeminal &gbra, const ContractedGeminal &gket)
When integrals with 1 geminal are needed, gket should be IntParamsG12::null_geminal.
ShellPairLibint2 is an interface to PrimPairsLibint2.
Definition: shellpairs.h:40
Definition: core_ints_engine.h:50
The Integral abstract class acts as a factory to provide objects that compute one and two electron in...
Definition: integral.h:111
double * buffer(unsigned int t) const
Returns the location of the buffer with target integrals.
Definition: g12nc.h:143
std::pair< double, double > PrimitiveGeminal
std::pair< g, c > as in c * exp( - g*r12^2)
Definition: intparams.h:147
void compute_quartet(int *, int *, int *, int *)
Evaluate the target quartet of integrals.
G12NCLibint2 is a specialization of Int2eLibint2 that computes two-electron integrals specific to exp...
Definition: g12nc.h:63
Int2eLibint2 is an interface to various specializations of two-electron integral evaluators implement...
Definition: int2e.h:46
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
Generated at Sun Jan 26 2020 23:23:58 for MPQC
3.0.0-alpha using the documentation package Doxygen
1.8.16.