21 #ifndef _libint2_src_bin_libint_cr11tig1211_h_ 22 #define _libint2_src_bin_libint_cr11tig1211_h_ 24 #include <generic_rr.h> 25 #include <tig12_11_11.h> 26 #include <gaussoper.h> 34 template <
class BFSet>
37 GenIntegralSet_11_11<BFSet,TiG12,mType> >
45 static const unsigned int max_nchildren = 8;
47 using ParentType::Instance;
53 using ParentType::RecurrenceRelation::expr_;
54 using ParentType::RecurrenceRelation::nflops_;
55 using ParentType::target_;
56 using ParentType::is_simple;
61 static std::string descr() {
return "CR"; }
66 CR_11_TiG12_11<F>::CR_11_TiG12_11(
const SafePtr<TargetType>& Tint,
72 using namespace libint2::algebra;
73 using namespace libint2::prefactor;
76 const int i = target_->oper()->descr().K();
77 const R12kG12 G0(R12_k_G12_Descr(0));
78 const R12kG12 G2(R12_k_G12_Descr(2));
86 if (b.contracted() || target_->oper()->descr().contracted())
90 if (d.contracted() || target_->oper()->descr().contracted())
96 typedef GenIntegralSet_11_11<BasisFunctionType,R12kR12lG12,EmptySet> ChildType;
97 ChildFactory<ThisType,ChildType> factory(
this);
98 for(
int xyz=0; xyz<3; ++xyz) {
99 R12k_R12l_G12_Descr descr(IntVec3(),unit_intvec3(xyz));
102 if (
is_simple()) expr_ *= Scalar(2.0) * Scalar(
"gamma");
106 typedef GenIntegralSet_11_11<BasisFunctionType,R12kR12lG12,EmptySet> ChildType;
107 ChildFactory<ThisType,ChildType> factory(
this);
108 for(
int xyz=0; xyz<3; ++xyz) {
109 R12k_R12l_G12_Descr descr(IntVec3(),unit_intvec3(xyz));
112 if (
is_simple()) expr_ *= Scalar(-2.0) * Scalar(
"gamma");
116 typedef GenIntegralSet_11_11<BasisFunctionType,R12kG12,mType> ChildType;
117 ChildFactory<ThisType,ChildType> factory(
this);
118 auto ab_G0_cd = factory.make_child(a,b,c,d,0u,G0);
120 expr_ += Scalar(3.0) * Scalar(
"gamma") * ab_G0_cd;
122 auto ab_G2_cd = factory.make_child(a,b,c,d,0u,G2);
124 expr_ += Scalar(-2.0) * Scalar(
"gamma") * Scalar(
"gamma") * ab_G2_cd;
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
bool is_simple() const
Implementation of RecurrenceRelation::is_simple()
Definition: generic_rr.h:81
LinearCombination< SafePtr< DGVertex >, BraketPair< F, BKType > > Nabla1(const BraketPair< F, BKType > &bkt, int xyz)
Applies Nabla1 to a physicists' braket.
Definition: gaussoper.h:132
Generic integral over a two-body operator with one bfs for each particle in bra and ket.
Definition: integral_11_11.h:33
Compute relation for 2-e integrals of the Ti_G12 operators.
Definition: comp_11_tig12_11.h:35
RRImpl must inherit GenericRecurrenceRelation<RRImpl>
Definition: generic_rr.h:49
these objects help to construct BraketPairs
Definition: braket.h:270
Set of basis functions.
Definition: bfset.h:42
LinearCombination< SafePtr< DGVertex >, BraketPair< F, BKType > > Nabla2(const BraketPair< F, BKType > &bkt, int xyz)
Applies Nabla2 to a physicists' braket.
Definition: gaussoper.h:165
static bool directional()
This relation is not directional.
Definition: comp_11_tig12_11.h:50
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