28 #ifndef _mpqc_src_lib_chemistry_qc_basis_inttraits_h
29 #define _mpqc_src_lib_chemistry_qc_basis_inttraits_h
32 #include <chemistry/qc/basis/integral.h>
33 #include <chemistry/qc/basis/intparams.h>
43 return factory->overlap();
58 static const int size = TypeMap::size;
63 return OneBodyEvalCreator::eval(factory,params);
67 MPQC_ASSERT(t <
size);
68 return TypeMap::value[t];
72 for(
unsigned int i=0; i<
size; ++i)
73 if (TypeMap::value[i] == t)
83 template <
int NumCenters>
struct ERIEvalCreator {
84 static Ref< typename TwoBodyIntEvalType<NumCenters>::value >
85 eval(
const Ref<Integral>& factory,
const Ref<IntParamsVoid>& params) {
86 return factory->coulomb<NumCenters>();
90 template <
int NumCenters>
struct R12EvalCreator {
91 static Ref< typename TwoBodyIntEvalType<NumCenters>::value >
92 eval(
const Ref<Integral>& factory,
const Ref<IntParamsVoid>& params) {
93 return factory->grt<NumCenters>();
97 template <
int NumCenters>
struct G12EvalCreator {
98 static Ref< typename TwoBodyIntEvalType<NumCenters>::value >
99 eval(
const Ref<Integral>& factory,
const Ref<IntParamsG12>& params) {
100 return factory->g12<NumCenters>(params);
104 template <
int NumCenters>
struct G12NCEvalCreator {
105 static Ref< typename TwoBodyIntEvalType<NumCenters>::value >
106 eval(
const Ref<Integral>& factory,
const Ref<IntParamsG12>& params) {
107 return factory->g12nc<NumCenters>(params);
111 template <
int NumCenters>
struct G12DKHEvalCreator {
112 static Ref< typename TwoBodyIntEvalType<NumCenters>::value >
113 eval(
const Ref<Integral>& factory,
const Ref<IntParamsG12>& params) {
114 return factory->g12dkh<NumCenters>(params);
118 template <
int NumCenters, TwoBodyOperSet::type Type>
struct TwoBodyEvalCreator;
119 template <
int NumCenters>
struct TwoBodyEvalCreator<NumCenters,TwoBodyOperSet::ERI> {
120 typedef ERIEvalCreator<NumCenters> value;
122 template <
int NumCenters>
struct TwoBodyEvalCreator<NumCenters,TwoBodyOperSet::R12> {
123 typedef R12EvalCreator<NumCenters> value;
125 template <
int NumCenters>
struct TwoBodyEvalCreator<NumCenters,TwoBodyOperSet::G12> {
126 typedef G12EvalCreator<NumCenters> value;
128 template <
int NumCenters>
struct TwoBodyEvalCreator<NumCenters,TwoBodyOperSet::G12NC> {
129 typedef G12NCEvalCreator<NumCenters> value;
131 template <
int NumCenters>
struct TwoBodyEvalCreator<NumCenters,TwoBodyOperSet::G12DKH> {
132 typedef G12DKHEvalCreator<NumCenters> value;
146 static const int size = TypeMap::size;
151 return TwoBodyEvalCreator::eval(factory,params);
155 MPQC_ASSERT(t <
size);
156 return TypeMap::value[t];
160 for(
unsigned int i=0; i<
size; ++i)
161 if (TypeMap::value[i] == t)
170 #endif // end of header guard
static OneBodyOper::type intset(unsigned int t)
maps index of the integral type within this set to TwoBodyOper::type
Definition: inttraits.h:66
type
Types of one-body operators, includes various context-dependent "projectors", such as 1-RDM,...
Definition: operator.h:103
A template class that maintains references counts.
Definition: ref.h:361
Describes sets of two-body operators (.
Definition: operator.h:195
static unsigned int intset(OneBodyOper::type t)
inverse of the above intset
Definition: inttraits.h:71
Definition: integral.h:79
Describes sets of two-body operators (.
Definition: operator.h:368
static Ref< EvalType > eval(const Ref< Integral > &factory, const Ref< ParamsType > ¶ms)
creates an Eval object
Definition: inttraits.h:60
Definition: integral.h:69
which parameter set needed to specify the operator set?
Definition: operator.h:272
Traits of a set of two-body integrals.
Definition: inttraits.h:137
static Ref< EvalType > eval(const Ref< Integral > &factory, const Ref< ParamsType > ¶ms)
creates an Eval object
Definition: inttraits.h:148
returns the type of the evaluator for evaluating this set of two-body integrals
Definition: integral.h:60
Traits of a set of one-body integrals.
Definition: inttraits.h:49
static const int size
number of integral types
Definition: inttraits.h:58
returns the type of the evaluator for evaluating this set of two-body integrals
Definition: integral.h:83
TwoBodyOperSetProperties< Type > TypeMap
the type of the NBodyInt object that evaluates this set
Definition: inttraits.h:144
static TwoBodyOper::type intset(unsigned int t)
maps index of the integral type within this set to TwoBodyOper::type
Definition: inttraits.h:154
static unsigned int intset(TwoBodyOper::type t)
inverse of the above intset
Definition: inttraits.h:159
Definition: integral.h:104
static const int size
number of integral types
Definition: inttraits.h:146
OneBodyOperSetProperties< Type > TypeMap
the type of the NBodyInt object that evaluates this set
Definition: inttraits.h:56
which parameter set needed to specify the operator set?
Definition: operator.h:438
OneBodyIntParamsType< Type >::value ParamsType
the type of IntParams object needed to initialize the evaluator for computing this set of integrals
Definition: inttraits.h:54
type
types of known two-body operators
Definition: operator.h:318
TwoBodyIntParamsType< Type >::value ParamsType
the type of IntParams object needed to initialize the evaluator for computing this set of integrals
Definition: inttraits.h:142
TwoBodyIntEvalType< NumCenters >::value EvalType
the type of the NBodyInt object that evaluates this set
Definition: inttraits.h:139
Contains all MPQC code up to version 3.
Definition: mpqcin.h:14
OneBodyIntEvalType< NumCenters >::value EvalType
the type of the NBodyInt object that evaluates this set
Definition: inttraits.h:51
Generated at Sun Jan 26 2020 23:23:57 for MPQC
3.0.0-alpha using the documentation package Doxygen
1.8.16.