21 #ifndef _libint2_src_bin_libint_cr11r12kr12lg1211_h_ 22 #define _libint2_src_bin_libint_cr11r12kr12lg1211_h_ 24 #include <generic_rr.h> 25 #include <integral_11_11.h> 26 #include <gaussoper.h> 36 template <
class BFSet>
40 GenIntegralSet_11_11<BFSet,R12kR12lG12,EmptySet> >
48 static const unsigned int max_nchildren = 3;
50 using ParentType::Instance;
56 using ParentType::RecurrenceRelation::expr_;
57 using ParentType::RecurrenceRelation::nflops_;
58 using ParentType::target_;
59 using ParentType::is_simple;
64 static std::string descr() {
return "CR"; }
69 CR_11_R12kR12lG12_11<F>::CR_11_R12kR12lG12_11(
const SafePtr<TargetType>& Tint,
73 using namespace libint2::algebra;
74 using namespace libint2::prefactor;
85 const IntVec3& r12pbra = Tint->oper()->descr().K();
86 const IntVec3& r12pket = Tint->oper()->descr().L();
87 const int norm = r12pbra.
norm1() + r12pket.norm1();
90 for(
int xyz=0; xyz<3; ++xyz) {
92 const IntVec3& _1 = unit_intvec3(xyz);
93 const IntVec3 r12pbra_m1 = r12pbra - _1;
97 typedef GenIntegralSet_11_11<BasisFunctionType,R12kG12,mType> ChildType;
98 ChildFactory<ThisType,ChildType> factory(
this);
102 typedef GenIntegralSet_11_11<BasisFunctionType,R12kR12lG12,EmptySet> ChildType;
103 ChildFactory<ThisType,ChildType> factory(
this);
104 R12k_R12l_G12_Descr odescr(r12pbra_m1,r12pket);
112 for(
int xyz=0; xyz<3; ++xyz) {
114 const IntVec3& _1 = unit_intvec3(xyz);
115 const IntVec3 r12pket_m1 = r12pket - _1;
117 if (!
ltzero(r12pket_m1)) {
119 typedef GenIntegralSet_11_11<BasisFunctionType,R12kG12,mType> ChildType;
120 ChildFactory<ThisType,ChildType> factory(
this);
124 typedef GenIntegralSet_11_11<BasisFunctionType,R12kR12lG12,EmptySet> ChildType;
125 ChildFactory<ThisType,ChildType> factory(
this);
126 R12k_R12l_G12_Descr odescr(r12pbra,r12pket_m1);
Defaults definitions for various parameters assumed by Libint.
Definition: algebra.cc:24
BraketPair< F, PKet > _pket(const F &f1, const F &f2)
Physicists ket.
Definition: braket.h:276
static bool directional()
This relation is not directional.
Definition: comp_11_r12kr12lg12_11.h:53
Compute relation for integrals of operator R12k_R12l_G12.
Definition: comp_11_r12kr12lg12_11.h:37
Generic integral over a two-body operator with one bfs for each particle in bra and ket.
Definition: integral_11_11.h:33
DefaultQuantumNumbers< unsigned int, 1 >::Result mType
mType is the type that describes the auxiliary index of standard 2-body repulsion integrals
Definition: quanta.h:411
RRImpl must inherit GenericRecurrenceRelation<RRImpl>
Definition: generic_rr.h:49
bool ltzero(const IntVec3 &a)
return true if has elements < 0
Definition: vectorn.h:91
LinearCombination< SafePtr< DGVertex >, BraketPair< F, BKType > > R12v(const BraketPair< F, BKType > &bkt, unsigned int xyz)
Applies R12v to a physicists' braket.
Definition: gaussoper.h:198
these objects help to construct BraketPairs
Definition: braket.h:270
T norm1() const
1-norm
Definition: vectorn.h:48
Set of basis functions.
Definition: bfset.h:42
BraketPair< F, PBra > _pbra(const F &f1, const F &f2)
Physicists bra.
Definition: braket.h:272
Helps GenericRecurrenceRelation to work around the compiler problem with make_child.
Definition: generic_rr.h:149
DefaultQuantumNumbers< int, 0 >::Result EmptySet
EmptySet is the type that describes null set of auxiliary indices.
Definition: quanta.h:407