8 #ifndef SPARROW_DFTB_THIRDORDERFOCK_H
9 #define SPARROW_DFTB_THIRDORDERFOCK_H
31 const DFTBCommon::DiatomicParameterContainer& diatomicPar,
const Utils::DensityMatrix& densityMatrix,
32 const Eigen::MatrixXd& energyWeightedDensityMatrix, std::vector<double>& atomicCharges,
34 const Eigen::MatrixXd& overlapMatrix,
const bool& unrestrictedCalculationRunning);
41 void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::Derivative::First>& derivatives)
const override;
42 void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::Derivative::SecondAtomic>& derivatives)
const override;
43 void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::Derivative::SecondFull>& derivatives)
const override;
44 Eigen::MatrixXd getGammaMatrix()
const;
48 void completeH()
override;
49 void constructG(Utils::DerivativeOrder order)
override;
50 template<Utils::DerivativeOrder O>
52 template<Utils::DerivativeOrder O>
53 void gammah(
int a,
int b, Utils::AutomaticDifferentiation::Value1DType<O>& gamma,
54 Utils::AutomaticDifferentiation::Value1DType<O>& Gab, Utils::AutomaticDifferentiation::Value1DType<O>& Gba)
const;
55 template<Utils::DerivativeOrder O>
56 void hFactor(
double Ua,
double Ub,
const Utils::AutomaticDifferentiation::Value1DType<O>& R,
57 Utils::AutomaticDifferentiation::Value1DType<O>& h, Utils::AutomaticDifferentiation::Value1DType<O>& dhdU)
const;
58 template<Utils::Derivative O>
59 void addThirdOrderDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<O>& derivatives)
const;
72 #endif // SPARROW_DFTB_THIRDORDERFOCK_H
ThirdOrderFock(ZeroOrderMatricesCalculator &matricesCalculator, const Utils::ElementTypeCollection &elements, const Utils::PositionCollection &positions, const DFTBCommon::AtomicParameterContainer &atomicPar, const DFTBCommon::DiatomicParameterContainer &diatomicPar, const Utils::DensityMatrix &densityMatrix, const Eigen::MatrixXd &energyWeightedDensityMatrix, std::vector< double > &atomicCharges, const std::vector< double > &coreCharges, const Utils::AtomsOrbitalsIndexes &aoIndexes, const Eigen::MatrixXd &overlapMatrix, const bool &unrestrictedCalculationRunning)
Constructor, calls the ScfFock constructor and sets zeta to 4.0.
Definition: ThirdOrderFock.cpp:23
void initialize() override
Calls ScfFock::initialize() and initializes the gamma, Gamma and the matrices containing the derivati...
Definition: ThirdOrderFock.cpp:36
void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType< Utils::Derivative::First > &derivatives) const override
calculates automatically the derivatives of the energy with respect to the nuclear cartesian coordina...
Definition: ThirdOrderFock.cpp:198
This class calculates the matrices resulting from the zeroth order expansion of the DFT energy for th...
Definition: ZeroOrderMatricesCalculator.h:32
double calculateElectronicEnergy() const override
Sums up the electronic energy contributions of the zeroth, first and second order Hamiltonian correct...
Definition: ThirdOrderFock.cpp:242
Implementation of FockMatrixCalculator for DFTB3. It calculates the electronic contributions to the e...
Definition: ThirdOrderFock.h:26