File DensityMatrixBuilder.h¶
- Copyright
This code is licensed under the 3-clause BSD license.
Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.
See LICENSE.txt for details.
-
namespace
Scine
This header file contains functions that allow for common notation for common things that can be done at a different degree of derivatives.
This header contains alias definitions defining which classes to use for the different degrees of derivatives.
-
namespace
Utils
-
namespace
LcaoUtil
-
class
DensityMatrixBuilder
- #include <DensityMatrixBuilder.h>
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
-
DensityMatrixBuilder
(const MolecularOrbitals &coefficientMatrix)¶
-
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.
Private Functions
-
Eigen::MatrixXd
calculateSingleOrbitalDensity
(const Eigen::VectorXd &eigenvector) const¶
-
Eigen::MatrixXd
calculateBlockOrbitalDensity
(const Eigen::MatrixXd &eigenvectors) const¶
-
Eigen::MatrixXd
calculateDensityMatrix
(const Eigen::MatrixXd &coefficientMatrix, int nOccupiedLevels) const¶
-
Eigen::MatrixXd
calculateDifferenceSwapDensity
(const Eigen::MatrixXd &coefficientMatrix, const std::vector<MolecularOrbitalsManipulation::DeprecatedSwap> &swaps, int homoIndex) const¶
-
Eigen::MatrixXd
calculateDifferenceMixDensity
(const Eigen::MatrixXd &coefficientMatrix, const std::vector<MolecularOrbitalsManipulation::DeprecatedMix> &mix, int homoIndex) const¶
Private Members
-
const MolecularOrbitals &
coefficientMatrix_
¶
-
class
-
namespace
-
namespace