Namespace Scine::Utils::LcaoUtilΒΆ

namespace LcaoUtil

Functions

void getNumberUnrestrictedElectrons(int &nAlpha, int &nBeta, int nElectrons, int spinMultiplicity)

Calculate the numbers of alpha and beta electrons from the total number of electrons and the spin multiplicity.

void solveRestrictedEigenvalueProblem(const SpinAdaptedMatrix &fockMatrix, MolecularOrbitals &coefficientMatrix, SingleParticleEnergies &singleParticleEnergies)
void solveRestrictedGeneralizedEigenvalueProblem(const SpinAdaptedMatrix &fockMatrix, const Eigen::MatrixXd &overlapMatrix, MolecularOrbitals &coefficientMatrix, SingleParticleEnergies &singleParticleEnergies)
void solveUnrestrictedEigenvalueProblem(const SpinAdaptedMatrix &fockMatrix, MolecularOrbitals &coefficientMatrix, SingleParticleEnergies &singleParticleEnergies)
void solveUnrestrictedGeneralizedEigenvalueProblem(const SpinAdaptedMatrix &fockMatrix, const Eigen::MatrixXd &overlapMatrix, MolecularOrbitals &coefficientMatrix, SingleParticleEnergies &singleParticleEnergies)
void calculateRestrictedDensityMatrix(DensityMatrix &densityMatrix, const MolecularOrbitals &coefficientMatrix, int nElectrons)
void calculateUnrestrictedDensityMatrices(DensityMatrix &densityMatrix, const MolecularOrbitals &coefficientMatrix, int nElectrons, int spinMultiplicity)
void calculateRestrictedEnergyWeightedDensityMatrix(Eigen::MatrixXd &energyWeightedDensityMatrix, const MolecularOrbitals &coefficientMatrix, const SingleParticleEnergies &singleParticleEnergies, int nElectrons)
void calculateUnrestrictedEnergyWeightedDensityMatrix(Eigen::MatrixXd &energyWeightedDensityMatrix, const MolecularOrbitals &coefficientMatrix, const SingleParticleEnergies &singleParticleEnergies, int nElectrons, int spinMultiplicity)
void calculateBondOrderMatrix(Utils::BondOrderCollection &bondOrderMatrix, const DensityMatrix &densityMatrix, const Eigen::MatrixXd &overlapMatrix, const AtomsOrbitalsIndexes &aoIndexes)

Computes the lower-triangular bond-order matrix for an non-orthogonal basis.

void calculateOrthonormalBondOrderMatrix(Utils::BondOrderCollection &bondOrderMatrix, const DensityMatrix &densityMatrix, const AtomsOrbitalsIndexes &aoIndexes)

Computes the lower-triangular bond-order matrix for an orthogonal basis.

void calculateOrthonormalAtomicCharges(std::vector<double> &mullikenCharges, const std::vector<double> &coreCharges, const DensityMatrix &densityMatrix, const AtomsOrbitalsIndexes &aoIndexes)
void calculateMullikenAtomicCharges(std::vector<double> &mullikenCharges, const std::vector<double> &coreCharges, const DensityMatrix &densityMatrix, const Eigen::MatrixXd &overlapMatrix, const AtomsOrbitalsIndexes &aoIndexes)
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

class DensityMatrixGenerator
#include <DensityMatrixGenerator.h>

Class to convert an electronic occupation and the corresponding molecular orbitals to a density matrix.

See

DensityMatrixBuilder

class ElectronicOccupation
#include <ElectronicOccupation.h>

Class to hold information about which molecular orbitals are occupied. TODO: Implement fractional occupation ?

class ElectronicOccupationGenerator
#include <ElectronicOccupationGenerator.h>

This interface generates an ElectronicOccupation instance, from which the density matrix can be generated (in combination with the molecular orbitals).

Subclassed by Scine::Utils::LcaoUtil::AufbauPrincipleOccupationGenerator

class EnergyWeightedDensityMatrixBuilder
#include <EnergyWeightedDensityMatrixBuilder.h>

Class to generate energy-weighted density matrices for given occupations

class HFWaveFunctionOverlap
#include <HFWaveFunctionOverlap.h>

Class to calculate the overlap between two HartreeFock-like wave functions.

class HomoLumoGapCalculator
#include <HomoLumoGapCalculator.h>

This class calculates a Homo-Lumo gap, given the single-particle energies and the electronic occupation. In the unrestricted case, puts returns energy difference between the orbitals irrespectively of whether they are alpha- or beta-polarized.

class MolecularOrbitalsManipulation
#include <MolecularOrbitalsManipulation.h>

Class for transformations on molecular orbitals.