LIBINT
2.1.0-stable
|
A generic Horizontal Recurrence Relation: More...
#include <hrr.h>
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. | |
![]() | |
typedef RecurrenceRelation | this_type |
typedef AlgebraicOperator< DGVertex > | ExprType |
Numerical expression of a recurrence relation is always expressed as an AlgebraicOperator<DGVertex> | |
Public Member Functions | |
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< DGVertex > | rr_target () const |
Implementation of RecurrenceRelation::target() | |
SafePtr< DGVertex > | rr_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... | |
![]() | |
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< ThisType > | Instance (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 | |
![]() | |
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. | |
![]() | |
unsigned int | nflops_ |
std::string | label_ |
SafePtr< ExprType > | expr_ |
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).
|
inlinestatic |
is this recurrence relation parameterized by a direction.
the default is false if BasisFunctionSet is CGShell, true otherwise.
|
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.
References libint2::exists(), libint2::Prefactors::X_Y, and libint2::Prefactors::Y_X.
|
virtual |
Implementation of RecurrenceRelation::spfunction_call()
WARNING !!!
Reimplemented from libint2::RecurrenceRelation.
References libint2::LibraryTaskManager::current(), libint2::label_to_funcname(), and libint2::SubIterator::num_iter().