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
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.
-
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 LcaoUtil::ElectronicOccupation &
getElectronicOccupation
() const Returns a const reference to the object containing information about the electronic occupation.
-
void
setElectronicOccupationGenerator
(std::unique_ptr<LcaoUtil::ElectronicOccupationGenerator> &&electronicOccupationSetter) Set how the electronic occupation is to be set. By default, the Aufbau principle is used.
-
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_
¶
-
LcaoUtil::ElectronicOccupation
occupation_
¶
-
int
molecularCharge_
= 0¶
-
bool
unrestrictedCalculationPossible_
¶
-
bool
unrestrictedCalculationRunning_
= false¶
-
int
spinMultiplicity_
= 1¶
-
std::vector<double>
coreCharges_
¶
-
std::unique_ptr<LcaoUtil::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