20 #ifndef _libint2_src_bin_libint_cr11gtg111d_h_ 21 #define _libint2_src_bin_libint_cr11gtg111d_h_ 23 #include <generic_rr.h> 24 #include <util_types.h> 32 template <CartesianAxis Axis>
35 GenIntegralSet_11_11<CGShell1d<Axis>,GTG_1d,EmptySet> >
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 {
return true; }
64 std::string generic_header()
const {
return "VRR_GTG_1d_xx_xx.h"; }
66 std::string generic_instance(
const SafePtr<CodeContext>& context,
const SafePtr<CodeSymbols>& args)
const;
70 template <CartesianAxis Axis>
81 if (target_->oper()->descr().contracted())
85 auto _00_GTG_00 = factory.
make_child(_0,_0,_0,_0,0u,oper);
89 #if LIBINT_ENABLE_GENERIC_CODE 90 template <CartesianAxis Axis>
94 std::ostringstream oss;
95 auto a = target_->bra(0,0);
96 auto b = target_->ket(0,0);
97 auto c = target_->bra(1,0);
98 auto d = target_->kt(1,0);
100 const bool vec = (context->cparams()->max_vector_length() != 1);
102 oss <<
"VRR_GTG_1d_xx_xx::compute<" 103 << to_string<Axis> <<
"," 108 << (vec ?
"true" :
"false") <<
">::compute(";
110 const unsigned int nargs = args->n();
111 for(
unsigned int a=0; a<nargs; a++) {
112 oss << args->symbol(a) <<
",";
115 oss <<
",inteval->_00_GTG1d_00_" <<
to_string(Axis) <<
");";
120 std::list<std::string> forced_symbol;
121 forced_symbol.push_back(std::string(
"AB_") +
to_string(Axis));
122 forced_symbol.push_back(std::string(
"CD_") +
to_string(Axis));
123 forced_symbol.push_back(std::string(
"R12kG12_pfac0_0_") +
to_string(Axis));
124 forced_symbol.push_back(std::string(
"R12kG12_pfac0_1_") +
to_string(Axis));
125 forced_symbol.push_back(std::string(
"R12kG12_pfac1_0"));
126 forced_symbol.push_back(std::string(
"R12kG12_pfac1_1"));
127 forced_symbol.push_back(std::string(
"R12kG12_pfac2"));
128 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
Defaults definitions for various parameters assumed by Libint.
Definition: algebra.cc:23
a "shell" of 1D CGFs with quantum number L is a set of 1D CGFs with quantum numbers 0 ...
Definition: bfset.h:614
Definition: stdarray.h:18
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
std::string to_string(const T &x)
Converts x to its string representation.
Definition: entity.h:71
Compute relation for 1-dimensional Gaussian-type geminal integrals.
Definition: comp_11_gtg_11_1d.h:33
static bool directional()
This relation is not directional.
Definition: comp_11_gtg_11_1d.h:48
Helps GenericRecurrenceRelation to work around the compiler problem with make_child.
Definition: generic_rr.h:148