8 #ifndef SPARROW_DFTB_SECONDORDERFOCK_H
9 #define SPARROW_DFTB_SECONDORDERFOCK_H
32 const DFTBCommon::DiatomicParameterContainer& diatomicPar,
const Utils::DensityMatrix& densityMatrix,
33 const Eigen::MatrixXd& energyWeightedDensityMatrix, std::vector<double>& atomicCharges,
35 const Eigen::MatrixXd& overlapMatrix,
const bool& unrestrictedCalculationRunning);
43 void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::Derivative::First>& derivatives)
const override;
44 void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::Derivative::SecondAtomic>& derivatives)
const override;
45 void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::Derivative::SecondFull>& derivatives)
const override;
48 template<Utils::DerivativeOrder O>
49 Utils::AutomaticDifferentiation::Value1DType<O>
gamma(
int a,
int b)
const;
54 void completeH()
override;
55 void constructG(Utils::DerivativeOrder order)
override;
56 template<Utils::DerivativeOrder O>
58 template<Utils::Derivative O>
59 void addSecondOrderDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<O>& derivatives)
const;
69 #endif // SPARROW_DFTB_SECONDORDERFOCK_H
void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType< Utils::Derivative::First > &derivatives) const override
adds the derivatives for the first, second atomic and second full types.
void initialize() override
Initializes the gamma matrix G and the gamma matrix with the derivatives dG.
Definition: SecondOrderFock.cpp:36
SecondOrderFock(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 calling the ScfFock constructor.
Definition: SecondOrderFock.cpp:24
This class calculates the matrices resulting from the zeroth order expansion of the DFT energy for th...
Definition: ZeroOrderMatricesCalculator.h:32
Implementation of FockMatrixCalculator for DFTB2, the SCC-DFTB. It calculates the electronic contribu...
Definition: SecondOrderFock.h:27
double calculateElectronicEnergy() const override
Sums up the electronic contributions of the zeroth order Hamiltonian, the gamma matrix and the spin c...
Definition: SecondOrderFock.cpp:187
Utils::AutomaticDifferentiation::Value1DType< O > gamma(int a, int b) const