/usr/include/libmints/basisset.h is in libpsi3-dev 3.4.0-6+b1.
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 | #ifndef _psi_src_lib_libmints_basisset_h_
#define _psi_src_lib_libmints_basisset_h_
/*!
\defgroup MINTS libmints: Integral library
\file libmints/basisset.h
\ingroup MINTS
*/
#include <cstdio>
#include <libchkpt/chkpt.hpp>
#include <libmints/ref.h>
#include <libmints/molecule.h>
#include <libmints/gshell.h>
#include <libmints/sobasis.h>
#include <libmints/integral.h>
extern FILE *outfile;
namespace psi {
//! Basis set container class
/*!
Reads the basis set from a checkpoint file object. Also reads the molecule
from the checkpoint file storing the information in an internal Molecule class
which can be accessed using molecule().
*/
class BasisSet
{
//! Number of primitives.
int nprimitives_;
//! Number of shells.
int nshells_;
//! Number of atomic orbitals.
int nao_;
//! Number of basis functions (either cartesian or spherical)
int nbf_;
//! Maximum angular momentum
int max_am_;
//! Maximum number of primitives.
int max_nprimitives_;
//! Shell number to first basis function index.
int *shell_first_basis_function_;
//! Shell number to first atomic function index.
int *shell_first_ao_;
//! Shell number to atomic center.
int *shell_center_;
//! Not used, yet.
int max_stability_index_;
//! Unique symmetry orbitals to atomic orbitals.
double **uso2ao_;
//! Does the loaded basis set contain pure angular momentum functions?
bool puream_;
//! Array of gaussian shells
Ref<Ref<GaussianShell>, SimpleReferenceCount, StandardArrayPolicy> shells_;
//! Molecule object.
Ref<Molecule> molecule_;
//! Symmetry orbital transformation (used in one-electron integrals)
Ref<SOTransform> sotransform_;
//! Spherical transfromation (used in two-electron integrals)
std::vector<SphericalTransform> sphericaltransforms_;
//! No default constructor
BasisSet();
//! No assignment
BasisSet& operator=(const BasisSet&);
//! Initialize shells bases on information found in checkpoint
void initialize_shells(Ref<psi::Chkpt> &chkpt);
public:
/// Constructor, reads in the basis set from the checkpoint file
BasisSet(Ref<psi::Chkpt> &chkpt);
/// Copy constructor, currently errors if used
BasisSet(const BasisSet&);
/// Destructor
~BasisSet();
/// Total number of primitives
int nprimitive() const { return nprimitives_; }
/// Maximum number of primitives in a shell
int max_nprimitive() const { return max_nprimitives_; }
/// Number of shells
int nshell() const { return nshells_; }
/// Number of atomic orbitals
int nao() const { return nao_; }
/// Number of basis functions
int nbf() const { return nbf_; }
/// Maximum angular momentum
int max_am() const { return max_am_; }
/// Spherical harmonics?
bool has_puream() const { return puream_; }
/// Molecule this basis is for
Ref<Molecule> molecule() const { return molecule_; }
/// Maximum stabilizer index
int max_stability_index() const { return max_stability_index_; }
/// Given a shell what is its first AO function
int shell_to_function(int i) const { return shell_first_ao_[i]; }
int shell_to_basis_function(int i) const { return shell_first_basis_function_[i]; }
/// Return the si'th Gaussian shell
Ref<GaussianShell>& shell(int si) const;
/// Returns i'th shell's transform
SOTransformShell* so_transform(int i) { return sotransform_->aoshell(i); }
/// Returns the transformation object for a given angular momentum. Used in ERIs.
SphericalTransform* spherical_transform(int am) { return &sphericaltransforms_[am]; }
/// Print the basis set
void print(FILE *out = outfile) const;
};
}
#endif
|