/usr/include/libmints/sobasis.h is in libpsi3-dev 3.4.0-6.
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 | #ifndef _psi_src_lib_libmints_sobasis_h_
#define _psi_src_lib_libmints_sobasis_h_
/*!
\file libmints/sobasis.h
\ingroup MINTS
*/
#include <vector>
namespace psi {
class SOTransformComponent
{
protected:
/// Coefficient of the AO
double coef_;
/// AO function number
int aofunc_;
/// SO function number
int sofunc_;
/// SO function's irrep
int irrep_;
/// SO function in irrep
int sofuncirrep_;
public:
SOTransformComponent();
/// Returns the coefficient of the AO
double coef() const { return coef_; }
/// Returns the AO function number
int aofunc() const { return aofunc_; }
/// Returns the SO function number
int sofunc() const { return sofunc_; }
/// Returns the SO function's irrep
int irrep() const { return irrep_; }
/// Return the SO function number in its irrep
int sofuncirrep() const { return sofuncirrep_; }
void init(int aofunc, int sofunc, int sofuncirrep, int irrep, double coef);
};
class SOTransformShell
{
protected:
/// The number of the AO shell from which these functions come.
int aoshell_;
/// Array of SOTransformComponent objects describing the transform
std::vector<SOTransformComponent> funcs_;
public:
SOTransformShell();
void add_function(int irrep, double coef, int aofunc, int sofunc, int sofuncirrep);
void aoshell(int i) { aoshell_ = i; }
int aoshell() const { return aoshell_; }
int nfunc() const { return funcs_.size(); }
SOTransformComponent* func(int i) { return &(funcs_[i]); }
};
class SOTransformIter
{
private:
SOTransformShell *trans_;
int i_;
public:
SOTransformIter(SOTransformShell* trans) { trans_ = trans; i_ = 0; }
void first() { i_ = 0; }
void next() { i_++; }
bool is_done() { return i_ < trans_->nfunc() ? true : false; }
/// Returns the coefficient of component i
double coef() const { return trans_->func(i_)->coef(); }
/// Returns the AO function number of component i
int aofunc() const { return trans_->func(i_)->aofunc(); }
/// Returns the SO function number of component i
int sofunc() const { return trans_->func(i_)->sofunc(); }
/// Returns the SO function's irrep of component i
int irrep() const { return trans_->func(i_)->irrep(); }
/// Returns the SO function number in its irrep for component i
int sofuncirrep() const { return trans_->func(i_)->sofuncirrep(); }
};
class SOTransform
{
protected:
/// The SOTransformShell object for each AO
std::vector<SOTransformShell> aoshell_;
public:
SOTransform() {};
/// Initialize
void init(int nshells);
/// Add another term to the transform.
void add_transform(int aoshell, int irrep, int sofuncirrep, double coef, int aofunc, int sofunc);
/// Returns the number of ao shells
int naoshell() const { return aoshell_.size(); }
/// Return the i'th ao shell
SOTransformShell* aoshell(int i) { return &(aoshell_[i]); }
};
}
#endif
|