File LcaoMethod.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 -
class
UnrestrictedCalculationNotAvailableException: public exception Public Functions
-
const char *
what() const¶
-
const char *
-
class
LcaoMethod: public Scine::Utils::SinglePointMethod - #include <LcaoMethod.h>
Base class describing a method based on a LCAO ansatz.
Subclassed by Scine::Utils::ScfMethod
Getters and setters for matrices
-
const Eigen::MatrixXd &
getOverlapMatrix() const¶
-
void
setOverlapMatrix(const Eigen::MatrixXd &S)¶
-
const SpinAdaptedMatrix &
getFockMatrix() const¶
-
void
setFockMatrix(SpinAdaptedMatrix F)¶
-
const DensityMatrix &
getDensityMatrix() const¶
-
void
setDensityMatrix(DensityMatrix P)¶
-
MolecularOrbitals &
getMolecularOrbitals()¶
-
const MolecularOrbitals &
getMolecularOrbitals() const¶
-
void
setMolecularOrbitals(MolecularOrbitals C)¶
-
const Eigen::MatrixXd &
getEnergyWeightedDensityMatrix() const¶
-
void
setEnergyWeightedDensityMatrix(const Eigen::MatrixXd &W)¶
Public Functions
-
LcaoMethod(bool unrestrictedCalculationPossible, Utils::derivOrder maximalOrder, bool orthogonalBasisSet = false)¶
-
virtual
~LcaoMethod()¶
-
virtual void
initialize() Initialize the method after the parameters have been set or loaded.
-
void
calculate(Utils::derivativeType d) Performs one single-point calculation of the energy.
- Parameters
derivativesOrder: which derivative to calculate up to, if possible.
-
void
calculateDensityIndependentQuantities(Utils::derivativeType d = Utils::derivativeType::first)¶
-
void
assembleFockMatrix()¶
-
void
computeEnergyAndDerivatives(Utils::derivativeType d = Utils::derivativeType::first)¶
-
bool
basisSetIsOrthogonal() const - Return
true if the basis set is orthogonal and the electronic structure is optimized in a normal eigenvalue problem, false if it is a generalized eigenvalue problem.
-
bool
solvesOnlyOccupiedManifold() const True if only the eigenpairs corresponding to the occupied MOs need to be calculated.
Subspace calculation is then performed with the Davidson-Liu Algorithm.
-
void
setOnlyOccupiedManifoldToSolve(bool onlyOccupiedToSolve)¶
-
int
getNumberElectrons() const¶
-
int
getNumberAtomicOrbitals() const¶
-
void
setMolecularCharge(int c)¶
-
int
getMolecularCharge() const¶
-
void
setSpinMultiplicity(int s)¶
-
int
spinMultiplicity() const¶
-
void
setUnrestrictedCalculation(bool b)¶
-
bool
unrestrictedCalculationRunning() const¶
-
bool
unrestrictedCalculationPossible() const¶
-
double
getElectronicEnergy() const¶
-
double
getRepulsionEnergy() const¶
-
double
getHomoLumoGap() const Get the HOMO-LUMO gap (Unit: Hartree).
-
const AtomsOrbitalsIndexes &
getAtomsOrbitalsIndexesHolder() const Returns a const reference to the object containing information about which atoms have how many orbitals and what their indexes are.
-
const SingleParticleEnergies &
getSingleParticleEnergies() const Returns a const reference to the object containing information about single-particle energies.
-
const LcaoUtils::ElectronicOccupation &
getElectronicOccupation() const Returns a const reference to the object containing information about the electronic occupation.
-
void
setElectronicOccupationGenerator(std::unique_ptr<LcaoUtils::ElectronicOccupationGenerator> &&electronicOccupationSetter) Set how the electronic occupation is to be set. By default, the Aufbau principle is used.
Adds an electronic contribution to the Fock matrix.
-
void
verifyPesValidity()¶
-
void
calculateDensity()¶
Protected Functions
-
void
resizeLcaoMethodMatrices() Resets the size of the different matrices. To be called during initialization of the specific method.
-
void
calculateOccupation()¶
-
void
calculateEnergyWeightedDensity()¶
-
void
calculateBondOrderMatrix()¶
-
void
calculateAtomicCharges()¶
Protected Attributes
-
Eigen::MatrixXd
overlapMatrix_¶
-
Eigen::MatrixXd
energyWeightedDensityMatrix_¶
-
SpinAdaptedMatrix
fockMatrix_¶
-
MolecularOrbitals
eigenvectorMatrix_¶
-
DensityMatrix
densityMatrix_¶
-
int
nAOs_¶
-
int
nElectrons_= 0¶
-
int
nElectronsForUnchargedSpecies_= 0¶
-
SingleParticleEnergies
singleParticleEnergies_¶
-
AtomsOrbitalsIndexes
aoIndexes_¶
-
LcaoUtils::ElectronicOccupation
occupation_¶
-
int
molecularCharge_= 0¶
-
bool
unrestrictedCalculationPossible_¶
-
bool
unrestrictedCalculationRunning_= false¶
-
bool
solveOnlyOccupiedManifold_= false¶
-
int
spinMultiplicity_= 1¶
-
std::vector<double>
coreCharges_¶
-
std::unique_ptr<LcaoUtils::ElectronicOccupationGenerator>
electronicOccupationGenerator_¶
-
std::shared_ptr<StructureDependentInitializer>
initializer_¶
-
std::shared_ptr<RepulsionCalculator>
rep_¶
-
std::shared_ptr<OverlapCalculator>
overlapCalculator_¶
-
std::shared_ptr<ElectronicContributionCalculator>
electronicPart_¶
-
double
electronicEnergy_¶
-
double
repulsionEnergy_¶
Private Functions
-
void
verifyChargeValidity()¶
-
void
verifyMultiplicityValidity()¶
-
void
verifyUnrestrictedValidity()¶
-
void
calculateOccupationAndDensity()¶
-
template<Utils::derivativeType
O>
voidcalculateDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<O> &derivatives)¶
Private Members
-
const bool
basisSetIsOrthogonal_¶
-
const Eigen::MatrixXd &
-
class
-
namespace