File ZeroOrderMatricesCalculator.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 ZeroOrderMatricesCalculator
#include <ZeroOrderMatricesCalculator.h>

This class calculates the matrices resulting from the zeroth order expansion of the DFT energy for the DFTB methods.

Public Functions

ZeroOrderMatricesCalculator(const Utils::ElementTypeCollection &elements, const Utils::PositionCollection &positions, const Utils::AtomsOrbitalsIndexes &aoIndexes, const DFTBCommon::AtomicParameterContainer &atomicPar, const DFTBCommon::DiatomicParameterContainer &diatomicPar, const Utils::DensityMatrix &densityMatrix)
void initializeH0S()

Initializes the zeroth order corrected Hamiltonian and the overlap matrices.

Furthermore, the one-center blocks are already pre-calculated, as they remain constant.

void constructH0S(Utils::derivOrder order)

Calculate the remaining parts of the Hamiltonian and overlap matrices.

void initializeFockCalculator()

Correspond to functions from ElectronicContributionCalculator Some of these functions do nothing to avoid double initialization (also called for the overlap)

void calculateFockMatrix(Utils::derivOrder)
void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::first> &derivatives, const Eigen::MatrixXd &overlapDerivativeMultiplier) const
void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::second_atomic> &derivatives, const Eigen::MatrixXd &overlapDerivativeMultiplier) const
void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::second_full> &derivatives, const Eigen::MatrixXd &overlapDerivativeMultiplier) const
void calculateOverlap(Utils::derivOrder highestRequiredOrder)
const Utils::MatrixWithDerivatives &getOverlap() const
const Utils::MatrixWithDerivatives &getZeroOrderHamiltonian() const
void resetOverlap()

Private Functions

template<Utils::derivOrder O>
void constructH0S()
template<Utils::derivOrder O>
void constructPartOfH0S()
template<Utils::derivativeType O>
void addDerivativesImpl(Utils::AutomaticDifferentiation::DerivativeContainerType<O> &derivatives, const Eigen::MatrixXd &overlapDerivativeMultiplier) const

Private Members

Utils::MatrixWithDerivatives zeroOrderHamiltonian_
Utils::MatrixWithDerivatives overlap_
const Utils::ElementTypeCollection &elements_
const Utils::PositionCollection &positions_
const Utils::AtomsOrbitalsIndexes &aoIndexes_
const DFTBCommon::AtomicParameterContainer &atomicPar_
const DFTBCommon::DiatomicParameterContainer &diatomicPar_
const Utils::DensityMatrix &densityMatrix_