Avogadro::Core::BasisSet#

class BasisSet#

BasisSet contains basis set data.

This is the base class for basis sets, and has two derived classes - GaussianSet and SlaterSet. It must be populated with data, with other classes capable of performing calculations on the data or writing it out.

Author

Marcus D. Hanwell

Subclassed by GaussianSet, SlaterSet

Public Types

enum ElectronType#

The ElectronType enum describes the type of electrons being set or retrieved. If Paired, then Alpha and Beta cannot be set, if Alpha or Beta then both must be set.

Values:

enumerator Paired#
enumerator Alpha#
enumerator Beta#

Public Functions

BasisSet() = default#

Constructor.

virtual ~BasisSet() = default#

Destructor.

virtual BasisSet *clone() const = 0#

Clone.

inline virtual void setElectronCount(unsigned int n, ElectronType type = Paired)#

Set the number of electrons in the BasisSet.

Parameters:
  • n – The number of electrons in the BasisSet.

  • type – The type of the electrons (Alpha, Beta, or Paired).

inline unsigned int electronCount(ElectronType type = Paired) const#
Parameters:

type – The type of the electrons (Alpha, Beta, or Paired).

Returns:

The number of electrons in the molecule.

inline void setMolecule(Molecule *molecule_)#

Set the molecule for the basis set.

inline Molecule *molecule()#

Get the molecule this basis set belongs to.

inline const Molecule *molecule() const#
inline void setName(const std::string &name)#

Set the name of the basis set.

inline std::string name() const#

Get the name of the basis set.

inline void setTheoryName(const std::string &name)#

Set the name of the basis set.

inline std::string theoryName() const#

Get the name of the basis set.

virtual unsigned int molecularOrbitalCount(ElectronType type = Paired) const = 0#
Returns:

The number of molecular orbitals in the BasisSet.

inline unsigned int homo(ElectronType type = Paired) const#
Returns:

The molecular orbital number corresponding to the HOMO orbital.

inline unsigned int lumo(ElectronType type = Paired) const#
Returns:

The molecular orbital number corresponding to the LUMO orbital.

virtual bool isValid() = 0#
Returns:

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

inline std::vector<std::string> symmetryLabels(ElectronType type = Paired) const#
Returns:

the orbital symmetry labels (if they exist) for the MOs

inline void setSymmetryLabels(const std::vector<std::string> &labels, ElectronType type = Paired)#

Set the orbital symmetry labels (a1, t2g, etc.) for the molecular orbitals

inline void setMolecularOrbitalEnergy(const std::vector<double> &energies, ElectronType type = Paired)#

Set the molecular orbital energies, expected in Hartrees.

Parameters:
  • energies – The vector containing energies for the MOs of type

  • type – The type of the electrons being set.

inline void setMolecularOrbitalOccupancy(const std::vector<unsigned char> &occ, ElectronType type = Paired)#

Set the molecular orbital occupancies.

Parameters:
  • occ – The occupancies for the MOs of type.

  • type – The type of the electrons being set.

inline std::vector<double> &moEnergy(ElectronType type = Paired)#
inline std::vector<double> moEnergy(ElectronType type = Paired) const#
inline std::vector<unsigned char> &moOccupancy(ElectronType type = Paired)#
inline std::vector<unsigned char> moOccupancy(ElectronType type = Paired) const#

Protected Attributes

std::array<unsigned int, 2> m_electrons = {}#

Total number of electrons, 0 is alpha electrons and 1 is beta electrons. For closed shell calculations alpha is doubly occupied and there are no beta electrons.

Molecule *m_molecule = nullptr#

The Molecule holds the atoms (and possibly bonds) read in from the output file. Most basis sets have orbitals around these atoms, but this is not necessarily the case.

std::string m_name#

The name of the basis set, this is usually a string identifier referencing a standard basis set when only one is used.

std::string m_theoryName#

The name of the theory used for the calculation.

std::vector<std::string> m_symmetryLabels[2]#

The orbital symmetry labels (if they exist) for the MOs

std::vector<double> m_moEnergy[2]#

This block stores energies for the molecular orbitals (same convention as the molecular orbital coefficients).

std::vector<unsigned char> m_moOccupancy[2]#

The occupancy of the molecular orbitals.