20 #ifndef _libint2_src_bin_libint_cr11g12tig1211_h_ 21 #define _libint2_src_bin_libint_cr11g12tig1211_h_ 23 #include <generic_rr.h> 24 #include <gaussoper.h> 32 template <
class BFSet>
35 GenIntegralSet_11_11<BFSet,G12TiG12,mType> >
43 static const unsigned int max_nchildren = 1;
45 using ParentType::Instance;
51 using ParentType::RecurrenceRelation::expr_;
52 using ParentType::RecurrenceRelation::nflops_;
53 using ParentType::target_;
54 using ParentType::is_simple;
58 static std::string descr() {
return "CR"; }
60 #if LIBINT_ENABLE_GENERIC_CODE 61 bool has_generic(
const SafePtr<CompilationParameters>& cparams)
const;
64 std::string generic_header()
const {
return "GenericScale.h"; }
66 std::string generic_instance(
const SafePtr<CodeContext>& context,
const SafePtr<CodeSymbols>& args)
const;
89 if (target_->oper()->descr().contracted())
96 auto ab_G2_cd = factory.
make_child(a,b,c,d,0u,G2);
98 expr_ = Scalar(
"R12_2_G12_scale_to_G12T1G12") * ab_G2_cd;
105 #if LIBINT_ENABLE_GENERIC_CODE 110 F sh_a(target_->bra(0,0));
111 F sh_b(target_->ket(0,0));
112 F sh_c(target_->bra(1,0));
113 F sh_d(target_->ket(1,0));
114 const unsigned int max_opt_am = cparams->max_am_opt();
117 (sh_a.norm() > max_opt_am ||
118 sh_b.norm() > max_opt_am ||
119 sh_c.norm() > max_opt_am ||
120 sh_d.norm() > max_opt_am
130 std::ostringstream oss;
132 const bool vec = (context->cparams()->max_vector_length() != 1);
134 oss <<
"_libint2_static_api_scale_vec_short_(";
136 oss <<
"_libint2_static_api_scale_short_(";
138 const unsigned int nargs = args->n();
139 for(
unsigned int a=0; a<nargs; a++) {
140 oss << args->symbol(a) <<
",";
143 oss << target_->size() <<
"*" << (vec ?
"inteval->veclen" :
"1")
144 <<
",inteval->R12_2_G12_scale_to_G12T1G12" << (vec ?
",inteval->veclen" :
"[0]") <<
");";
150 std::list<std::string> forced_symbol;
151 forced_symbol.push_back(std::string(
"R12_2_G12_scale_to_G12T1G12"));
152 taskmgr.
current().symbols()->add(forced_symbol);
const SafePtr< DGVertex > & make_child(const F &A, const F &B, const F &C, const F &D, const AuxIndexType &aux=AuxIndexType(), const OperType &oper=OperType())
make_child
Definition: generic_rr.h:157
Manages tasks. This is a Singleton.
Definition: task.h:62
TrivialBFSet<T> defines static member result, which is true if T is a basis function set consisting o...
Definition: bfset.h:879
Defaults definitions for various parameters assumed by Libint.
Definition: algebra.cc:23
Definition: stdarray.h:18
Definition: prefactors.h:159
GenOper is a single operator described by descriptor Descr.
Definition: oper.h:152
Generic integral over a two-body operator with one bfs for each particle in bra and ket...
Definition: integral_11_11.h:32
void current(const std::string &task_label)
Makes this task current (must have been added already)
Definition: task.cc:64
RRImpl must inherit GenericRecurrenceRelation<RRImpl>
Definition: generic_rr.h:48
these objects help to construct BraketPairs
Definition: braket.h:442
Compute relation for 2-e integrals of the G12_Ti_G12 operators.
Definition: comp_11_g12tig12_11.h:33
static bool directional()
This relation is not directional.
Definition: comp_11_g12tig12_11.h:48
Set of basis functions.
Definition: bfset.h:41
Helps GenericRecurrenceRelation to work around the compiler problem with make_child.
Definition: generic_rr.h:148