File FockMatrix.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 nddo
class FockMatrix : public ElectronicContributionCalculator

Public Functions

FockMatrix(const Utils::ElementTypeCollection &elements, const Utils::PositionCollection &positions, const Utils::DensityMatrix &densityMatrix, const OneCenterIntegralContainer &oneCIntegrals, const ElementParameters &elementPar, const Utils::AtomsOrbitalsIndexes &aoIndexes, const Utils::OverlapCalculator &overlapCalculator, const bool &unrestrictedCalculationRunning)
void initialize()
void calculateDensityIndependentPart(Utils::derivOrder order)
void calculateDensityDependentPart(Utils::derivOrder order)
void finalize(Utils::derivOrder order)
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
const OneElectronMatrix &getOneElectronMatrix() const
const TwoElectronMatrix &getTwoElectronMatrix() const
const std::vector<std::shared_ptr<Utils::AdditiveElectronicContribution>> &getDensityDependentContributions() const
const std::vector<std::shared_ptr<Utils::AdditiveElectronicContribution>> &getDensityIndependentContributions() 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.

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.

void clearElectronicContributions()
void eraseElectronicContribution(std::shared_ptr<Utils::AdditiveElectronicContribution> contribution)

Private Functions

template<Utils::derivativeType O>
void addDerivativesImpl(Utils::AutomaticDifferentiation::DerivativeContainerType<O> &derivatives) const

Private Members

TwoCenterIntegralContainer twoCenterIntegrals_
OneElectronMatrix F1_
TwoElectronMatrix F2_
const Utils::OverlapCalculator &overlapCalculator_
const bool &unrestrictedCalculationRunning_
std::unique_ptr<Utils::ElectronicEnergyCalculator> electronicEnergyCalculator_
std::vector<std::shared_ptr<Utils::AdditiveElectronicContribution>> densityDependentContributions_
std::vector<std::shared_ptr<Utils::AdditiveElectronicContribution>> densityIndependentContributions_