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

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_