1
#ifndef _psi_src_lib_libmints_osrecur_h
2
#define _psi_src_lib_libmints_osrecur_h
5
\file libmints/osrecur.h
11
/// Generic Obara and Saika recursion object.
12
class ObaraSaikaTwoCenterRecursion
21
// No default constructor
22
ObaraSaikaTwoCenterRecursion();
23
// No assignment operator
24
ObaraSaikaTwoCenterRecursion& operator=(const ObaraSaikaTwoCenterRecursion&);
27
/// Constructor, max_am1 and max_am2 are the max angular momentum on center 1 and 2.
28
/// Needed to allocate enough memory.
29
ObaraSaikaTwoCenterRecursion(int max_am1, int max_am2);
30
~ObaraSaikaTwoCenterRecursion();
32
/// Returns the x recursion matrix.
33
double **x() const { return x_; }
34
/// Returns the y recursion matrix.
35
double **y() const { return y_; }
36
/// Returns the z recursion matrix.
37
double **z() const { return z_; }
39
/// Computes the recursion matrices for the data provided.
40
void compute(double PA[3], double PB[3], double gamma, int am1, int am2);
43
/// Obara and Saika recursion object for moment integrals. Currently not used by DipoleInt, hopefully soon.
44
/// THIS CLASS HAS NOT BEEN TESTED!!!
45
class ObaraSaikaTwoCenterMIRecursion
55
// No default constructor
56
ObaraSaikaTwoCenterMIRecursion();
57
// No assignment operator
58
ObaraSaikaTwoCenterMIRecursion& operator=(const ObaraSaikaTwoCenterMIRecursion&);
61
ObaraSaikaTwoCenterMIRecursion(int max_am1, int max_am2, int max_m);
62
~ObaraSaikaTwoCenterMIRecursion();
64
double ***x() const { return x_; }
65
double ***y() const { return y_; }
66
double ***z() const { return z_; }
67
void compute(double PA[3], double PB[3], double gamma, int am1, int am2);
70
/// Obara and Saika recursion object for potential integrals.
71
class ObaraSaikaTwoCenterVIRecursion
80
// Forms Fm(U) from A20 (OS 1986)
81
void calculate_f(double *F, int n, double t);
84
// No default constructor
85
ObaraSaikaTwoCenterVIRecursion();
86
// No assignment operator
87
ObaraSaikaTwoCenterVIRecursion& operator=(const ObaraSaikaTwoCenterVIRecursion&);
90
/// Constructor, max_am1 and max_am2 are the max angular momentum on center 1 and 2.
91
/// Needed to allocate enough memory.
92
ObaraSaikaTwoCenterVIRecursion(int max_am1, int max_am2);
93
virtual ~ObaraSaikaTwoCenterVIRecursion();
95
/// Returns the potential integral 3D matrix
96
double ***vi() const { return vi_; }
98
/// Computes the potential integral 3D matrix using the data provided.
99
virtual void compute(double PA[3], double PB[3], double PC[3], double zeta, int am1, int am2);
102
//! Obara and Saika recursion object for computing potential derivatives.
103
class ObaraSaikaTwoCenterVIDerivRecursion : public ObaraSaikaTwoCenterVIRecursion
111
// No default constructor();
112
ObaraSaikaTwoCenterVIDerivRecursion();
113
// No assignment operator
114
ObaraSaikaTwoCenterVIDerivRecursion& operator=(const ObaraSaikaTwoCenterVIDerivRecursion&);
117
ObaraSaikaTwoCenterVIDerivRecursion(int max_am1, int max_am2);
118
virtual ~ObaraSaikaTwoCenterVIDerivRecursion();
120
double ***vx() const { return vx_; }
121
double ***vy() const { return vy_; }
122
double ***vz() const { return vz_; }
124
virtual void compute(double PA[3], double PB[3], double PC[3], double zeta, int am1, int am2);