File ZeroOrderFock.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
namespace Sparrow
namespace dftb
class ZeroOrderFock : public ElectronicContributionCalculator
#include <ZeroOrderFock.h>

Implementation of FockMatrixCalculator for DFTB0.

Public Functions

ZeroOrderFock(ZeroOrderMatricesCalculator &matricesCalculator, const Utils::SingleParticleEnergies &singleParticleEnergies, const Eigen::MatrixXd &energyWeightedDensityMatrix, const int &nElectrons)
void initialize()
void calculateDensityIndependentPart(Utils::derivOrder order)
void calculateDensityDependentPart(Utils::derivOrder order)
void finalize(Utils::derivOrder)
Utils::SpinAdaptedMatrix getMatrix() const
double calculateElectronicEnergy() const
void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::first> &derivatives) const
void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::second_atomic> &derivatives) const
void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::second_full> &derivatives) const
void addDensityDependentElectronicContribution(std::shared_ptr<Utils::AdditiveElectronicContribution> contribution)

This function adds an additive electronic contribution to the Hamiltonian that will be evaluated each SCF iteration.

At zero order no SCF is done. This just calls the density independent version

void addDensityIndependentElectronicContribution(std::shared_ptr<Utils::AdditiveElectronicContribution> contribution)

This function adds an additive electronic contribution to the Hamiltonian that will be evaluated once per single-point calculation.

Private Members

ZeroOrderMatricesCalculator &matricesCalculator_
const Utils::SingleParticleEnergies &singleParticleEnergies_
const Eigen::MatrixXd &energyWeightedDensityMatrix_
const int &nElectrons_
std::vector<std::shared_ptr<Utils::AdditiveElectronicContribution>> densityIndependentContributions_