/usr/include/libmints/osrecur.h is in libpsi3-dev 3.4.0-6build2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | #ifndef _psi_src_lib_libmints_osrecur_h
#define _psi_src_lib_libmints_osrecur_h
/*!
\file libmints/osrecur.h
\ingroup MINTS
*/
namespace psi {
/// Generic Obara and Saika recursion object.
class ObaraSaikaTwoCenterRecursion
{
int max_am1_;
int max_am2_;
double **x_;
double **y_;
double **z_;
// No default constructor
ObaraSaikaTwoCenterRecursion();
// No assignment operator
ObaraSaikaTwoCenterRecursion& operator=(const ObaraSaikaTwoCenterRecursion&);
public:
/// Constructor, max_am1 and max_am2 are the max angular momentum on center 1 and 2.
/// Needed to allocate enough memory.
ObaraSaikaTwoCenterRecursion(int max_am1, int max_am2);
~ObaraSaikaTwoCenterRecursion();
/// Returns the x recursion matrix.
double **x() const { return x_; }
/// Returns the y recursion matrix.
double **y() const { return y_; }
/// Returns the z recursion matrix.
double **z() const { return z_; }
/// Computes the recursion matrices for the data provided.
void compute(double PA[3], double PB[3], double gamma, int am1, int am2);
};
/// Obara and Saika recursion object for moment integrals. Currently not used by DipoleInt, hopefully soon.
/// THIS CLASS HAS NOT BEEN TESTED!!!
class ObaraSaikaTwoCenterMIRecursion
{
int max_am1_;
int max_am2_;
int max_m_;
double ***x_;
double ***y_;
double ***z_;
// No default constructor
ObaraSaikaTwoCenterMIRecursion();
// No assignment operator
ObaraSaikaTwoCenterMIRecursion& operator=(const ObaraSaikaTwoCenterMIRecursion&);
public:
ObaraSaikaTwoCenterMIRecursion(int max_am1, int max_am2, int max_m);
~ObaraSaikaTwoCenterMIRecursion();
double ***x() const { return x_; }
double ***y() const { return y_; }
double ***z() const { return z_; }
void compute(double PA[3], double PB[3], double gamma, int am1, int am2);
};
/// Obara and Saika recursion object for potential integrals.
class ObaraSaikaTwoCenterVIRecursion
{
protected:
int max_am1_;
int max_am2_;
int size_;
double ***vi_;
// Forms Fm(U) from A20 (OS 1986)
void calculate_f(double *F, int n, double t);
private:
// No default constructor
ObaraSaikaTwoCenterVIRecursion();
// No assignment operator
ObaraSaikaTwoCenterVIRecursion& operator=(const ObaraSaikaTwoCenterVIRecursion&);
public:
/// Constructor, max_am1 and max_am2 are the max angular momentum on center 1 and 2.
/// Needed to allocate enough memory.
ObaraSaikaTwoCenterVIRecursion(int max_am1, int max_am2);
virtual ~ObaraSaikaTwoCenterVIRecursion();
/// Returns the potential integral 3D matrix
double ***vi() const { return vi_; }
/// Computes the potential integral 3D matrix using the data provided.
virtual void compute(double PA[3], double PB[3], double PC[3], double zeta, int am1, int am2);
};
//! Obara and Saika recursion object for computing potential derivatives.
class ObaraSaikaTwoCenterVIDerivRecursion : public ObaraSaikaTwoCenterVIRecursion
{
protected:
double ***vx_;
double ***vy_;
double ***vz_;
private:
// No default constructor();
ObaraSaikaTwoCenterVIDerivRecursion();
// No assignment operator
ObaraSaikaTwoCenterVIDerivRecursion& operator=(const ObaraSaikaTwoCenterVIDerivRecursion&);
public:
ObaraSaikaTwoCenterVIDerivRecursion(int max_am1, int max_am2);
virtual ~ObaraSaikaTwoCenterVIDerivRecursion();
double ***vx() const { return vx_; }
double ***vy() const { return vy_; }
double ***vz() const { return vz_; }
virtual void compute(double PA[3], double PB[3], double PC[3], double zeta, int am1, int am2);
};
}
#endif
|