LIBINT  2.6.0
Public Types | Public Member Functions | Static Public Member Functions | List of all members
libint2::HRR< IntType, BFSet, part, loc_a, pos_a, loc_b, pos_b > Class Template Reference

A generic Horizontal Recurrence Relation: More...

#include <hrr.h>

Inheritance diagram for libint2::HRR< IntType, BFSet, part, loc_a, pos_a, loc_b, pos_b >:
Inheritance graph
[legend]
Collaboration diagram for libint2::HRR< IntType, BFSet, part, loc_a, pos_a, loc_b, pos_b >:
Collaboration graph
[legend]

Public Types

typedef RecurrenceRelation ParentType
 
typedef BFSet BasisFunctionType
 
typedef HRR< IntType, BFSet, part, loc_a, pos_a, loc_b, pos_b > ThisType
 
typedef IntType TargetType
 
typedef IntType ChildType
 
typedef RecurrenceRelation::ExprType ExprType
 A short alias.
 
- Public Types inherited from libint2::RecurrenceRelation
typedef RecurrenceRelation this_type
 
typedef AlgebraicOperator< DGVertexExprType
 Numerical expression of a recurrence relation is always expressed as an AlgebraicOperator<DGVertex>
 

Public Member Functions

BraketDirection braket_direction () const
 overrides RecurrenceRelation::braket_direction()
 
unsigned int num_children () const
 Implementation of RecurrenceRelation::num_children()
 
SafePtr< TargetType > target () const
 returns pointer to the target
 
SafePtr< ChildType > child (unsigned int i) const
 child(i) returns pointer to i-th child
 
SafePtr< DGVertexrr_target () const
 Implementation of RecurrenceRelation::target()
 
SafePtr< DGVertexrr_child (unsigned int i) const
 Implementation of RecurrenceRelation::child()
 
bool is_simple () const
 Implementation of RecurrenceRelation::is_simple()
 
std::string spfunction_call (const SafePtr< CodeContext > &context, const SafePtr< ImplicitDimensions > &dims) const
 Implementation of RecurrenceRelation::spfunction_call() More...
 
- Public Member Functions inherited from libint2::RecurrenceRelation
const SafePtr< ExprType > & rr_expr () const
 Returns the expression.
 
virtual bool invariant_type () const
 Returns true is the type of target and all children are exactly the same.
 
virtual int partindex_direction () const
 
size_t size_of_children () const
 
const std::string & label () const
 label() returns a unique, short, descriptive label of this RR (e.g. More...
 
virtual std::string description () const
 description() returns a verbose description of this RR
 
virtual void generate_code (const SafePtr< CodeContext > &context, const SafePtr< ImplicitDimensions > &dims, const std::string &funcname, std::ostream &decl, std::ostream &def)
 Generate declaration and definition for the recurrence relation.
 
virtual void generate_generic_code (const SafePtr< CodeContext > &context, const SafePtr< ImplicitDimensions > &dims, const std::string &funcname, std::ostream &decl, std::ostream &def)
 Generate declaration and definition for the recurrence relation using generic code (typically, a manually written code)
 
unsigned int nflops () const
 Return the number of FLOPs per this recurrence relation.
 
void inst_id (const SingletonStack< RecurrenceRelation, string >::InstanceID &i)
 RecurrenceRelation is managed by SingletonStack but doesn't need to keep track of instance ID.
 

Static Public Member Functions

static SafePtr< ThisTypeInstance (const SafePtr< TargetType > &, unsigned int dir=0)
 Use Instance() to obtain an instance of RR. More...
 
static bool directional ()
 is this recurrence relation parameterized by a direction. More...
 

Additional Inherited Members

- Protected Member Functions inherited from libint2::RecurrenceRelation
void add_expr (const SafePtr< ExprType > &a, int minus=1)
 Adds a (or -a, if minus = -1) to expr_.
 
template<class RR >
bool register_with_rrstack ()
 Registers with the stack.
 
- Protected Attributes inherited from libint2::RecurrenceRelation
unsigned int nflops_
 
std::string label_
 
SafePtr< ExprTypeexpr_
 

Detailed Description

template<class IntType, class BFSet, int part, FunctionPosition loc_a, unsigned int pos_a, FunctionPosition loc_b, unsigned int pos_b>
class libint2::HRR< IntType, BFSet, part, loc_a, pos_a, loc_b, pos_b >

A generic Horizontal Recurrence Relation:

|a b) = |a+1_i b-1_i) + AB_i |a b-1_i) + extra terms for derivative Gaussians

Int is the integral class. part specifies for which particle the angular momentum is shifted. Function a is assumed to gain quanta, function b loses quanta. loc_a and loc_b specify where functions a and b are located (bra or ket). pos_a and pos_b specify which function to be used (usually pos_a and pos_b are set to 0 to refer to the first function for this particle in this location).

Member Function Documentation

◆ directional()

template<class IntType , class BFSet , int part, FunctionPosition loc_a, unsigned int pos_a, FunctionPosition loc_b, unsigned int pos_b>
static bool libint2::HRR< IntType, BFSet, part, loc_a, pos_a, loc_b, pos_b >::directional ( )
inlinestatic

is this recurrence relation parameterized by a direction.

the default is false if BasisFunctionSet is CGShell, true otherwise.

◆ Instance()

template<class IntType , class F , int part, FunctionPosition loc_a, unsigned int pos_a, FunctionPosition loc_b, unsigned int pos_b>
SafePtr< HRR< IntType, F, part, loc_a, pos_a, loc_b, pos_b > > libint2::HRR< IntType, F, part, loc_a, pos_a, loc_b, pos_b >::Instance ( const SafePtr< TargetType > &  Tint,
unsigned int  dir = 0 
)
static

Use Instance() to obtain an instance of RR.

This function is provided to avoid issues with getting a SafePtr from constructor (as needed for registry to work).

dir specifies which quantum number of a and b is shifted. For example, dir can be 0 (x), 1(y), or 2(z) if F is a Cartesian Gaussian.

◆ spfunction_call()

template<class IntType , class F , int part, FunctionPosition loc_a, unsigned int pos_a, FunctionPosition loc_b, unsigned int pos_b>
std::string libint2::HRR< IntType, F, part, loc_a, pos_a, loc_b, pos_b >::spfunction_call ( const SafePtr< CodeContext > &  context,
const SafePtr< ImplicitDimensions > &  dims 
) const
virtual

The documentation for this class was generated from the following file: