Class Avogadro::Core::SlaterSet#

class SlaterSet : public BasisSet#

SlaterSet Class.

The SlaterSet class has a transparent data structure for storing the basis sets output by many quantum mechanical codes. It has a certain hierarchy where shells are built up from n primitives, in this case Slater Type Orbitals (STOs). Each shell has a type (S, P, D, F, etc) and is composed of one or more STOs. Each STO has a contraction coefficient, c, and an exponent, a.


Marcus D. Hanwell

When calculating Molecular Orbitals (MOs) each orthogonal shell has an independent coefficient. That is the S type orbitals have one coefficient, the P type orbitals have three coefficients (Px, Py and Pz), the D type orbitals have five (or six if cartesian types) coefficients, and so on.

Public Types

enum slater#

Enumeration of the Slater orbital types.


enumerator S#
enumerator PX#
enumerator PY#
enumerator PZ#
enumerator X2#
enumerator XZ#
enumerator Z2#
enumerator YZ#
enumerator XY#
enumerator UU#

Public Functions



~SlaterSet() override#


inline virtual SlaterSet *clone() const override#


bool addSlaterIndices(const std::vector<int> &i)#

Add a basis to the basis set.


i – Index of the atom to add the Basis too.


The index of the added Basis.

bool addSlaterTypes(const std::vector<int> &t)#

Add the symmetry types for the orbitals.


t – Vector containing the types of symmetry using the slater enum.

bool addZetas(const std::vector<double> &zetas)#

Add a STO to the supplied basis.


zetas – The exponents of the STOs


True if successful.

bool addPQNs(const std::vector<int> &pqns)#

The PQNs for the orbitals.

bool addOverlapMatrix(const Eigen::MatrixXd &m)#

The overlap matrix.


m – Matrix containing the overlap matrix for the basis.

bool addEigenVectors(const Eigen::MatrixXd &e)#

Add Eigen Vectors to the SlaterSet.


e – Matrix of the eigen vectors for the SlaterSet.

bool addDensityMatrix(const Eigen::MatrixXd &d)#

Add the density matrix to the SlaterSet.


d – Density matrix for the SlaterSet.

virtual unsigned int molecularOrbitalCount(ElectronType type = Paired) override#

The number of molecular orbitals in the BasisSet.

inline virtual bool isValid() override#

True of the basis set is valid, false otherwise. Default is true, if false then the basis set is likely unusable.

void initCalculation()#

Initialize the calculation, this must normally be done before anything.

inline std::vector<int> &slaterIndices()#

Accessors for the various properties of the GaussianSet.

inline std::vector<int> &slaterTypes()#
inline std::vector<double> &zetas()#
inline std::vector<double> &factors()#
inline std::vector<int> &PQNs()#
inline MatrixX &normalizedMatrix()#
inline MatrixX &densityMatrix()#
void outputAll()#