Class Scine::Utils::LcaoUtil::DensityMatrixBuilder

class DensityMatrixBuilder

Class to generate density matrices from coefficient matrices. Different possibilities to do so:

  • Specify the number of electrons

  • Specify which orbitals to consider

  • Specify the number of electrons and some number of swaps TODO: Use the class MolecularOrbitalsManipulation instead of reimplementing the mixes and swaps

Public Types

using PartlyOccupiedOrbital = std::pair<int, double>

Alias for partly occupied orbital, given by orbital index and its occupation [0-1] (UHF) vs [0-2] (RHF).

Public Functions

DensityMatrix generateRestrictedForNumberElectrons(int nElectrons) const

Generates a restricted density matrix for the given number of electrons.

DensityMatrix generateUnrestrictedForNumberElectronsAndMultiplicity(int nElectrons, int spinMultiplicity) const

Generates an unrestricted density matrix for the given number of electrons and corresponding spin multiplicity.

DensityMatrix generateUnrestrictedForNumberAlphaAndBetaElectrons(int nAlpha, int nBeta) const

Generates an unrestricted density matrix for the given number of alpha and beta electrons.

DensityMatrix generateRestrictedForSpecifiedOrbitals(const std::vector<int> &doublyOccupiedOrbitals) const

Generates a restricted density matrix from specified molecular orbitals (eigenvectors), which will be doubly filled.

DensityMatrix generateUnrestrictedForSpecifiedOrbitals(const std::vector<int> &alphaOrbitals, const std::vector<int> &betaOrbitals) const

Generates an unrestricted density matrix from specified molecular orbitals (eigenvectors).

DensityMatrix generateRestrictedWithSwaps(const std::vector<MolecularOrbitalsManipulation::DeprecatedSwap> &swaps, int nElectrons) const

Generates a restricted density matrix with given Swaps.

Pre

nElectrons is even.

DensityMatrix generateUnrestrictedWithSwaps(const std::vector<MolecularOrbitalsManipulation::DeprecatedSwap> &alphaSwaps, const std::vector<MolecularOrbitalsManipulation::DeprecatedSwap> &betaSwaps, int nAlpha, int nBeta) const

Generates an unrestricted density matrix with given Swaps.

DensityMatrix generateRestrictedForSpecifiedPartlyOccupiedOrbitals(const std::vector<PartlyOccupiedOrbital> &orbitals)

Generates a restricted density matrix from specified molecular orbitals (eigenvectors) and their occupation [0-2].

DensityMatrix generateUnrestrictedForSpecifiedPartlyOccupiedOrbitals(const std::vector<PartlyOccupiedOrbital> &alphaOrbitals, const std::vector<PartlyOccupiedOrbital> &betaOrbitals)

Generates an unrestricted density matrix from specified molecular orbitals (eigenvectors) and their occupation [0-1].

DensityMatrix generateRestrictedWithMixing(const std::vector<MolecularOrbitalsManipulation::DeprecatedMix> &mix, int nElectrons) const

Generates a restricted density matrix with given Mixing.

Pre

nElectrons is even.

DensityMatrix generateUnrestrictedWithMixing(const std::vector<MolecularOrbitalsManipulation::DeprecatedMix> &alphaMix, const std::vector<MolecularOrbitalsManipulation::DeprecatedMix> &betaMix, int nAlpha, int nBeta) const

Generates an unrestricted density matrix with given Mixing.