8 #ifndef SPARROW_DFTB_SCFFOCK_H
9 #define SPARROW_DFTB_SCFFOCK_H
20 class AtomsOrbitalsIndexes;
22 class AdditiveElectronicContribution;
28 class ZeroOrderMatricesCalculator;
37 const DFTBCommon::DiatomicParameterContainer& diatomicPar,
const Utils::DensityMatrix& densityMatrix,
38 const Eigen::MatrixXd& energyWeightedDensityMatrix, std::vector<double>& atomicCharges,
40 const Eigen::MatrixXd& overlapMatrix,
const bool& unrestrictedCalculationRunning);
42 void initialize()
override;
43 void calculateDensityDependentPart(Utils::DerivativeOrder order)
override;
44 void calculateDensityIndependentPart(Utils::DerivativeOrder order)
override;
46 void finalize(Utils::DerivativeOrder order)
override;
60 int getNumberAtoms()
const;
61 void populationAnalysis();
63 void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::Derivative::First>& derivatives)
const override;
64 void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::Derivative::SecondAtomic>& derivatives)
const override;
65 void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::Derivative::SecondFull>& derivatives)
const override;
69 const DFTBCommon::AtomicParameterContainer& atomicPar_;
70 const DFTBCommon::DiatomicParameterContainer& diatomicPar_;
72 const Eigen::MatrixXd& energyWeightedDensityMatrix_;
73 std::vector<double>& atomicCharges_;
74 const std::vector<double>& coreCharges_;
76 const Eigen::MatrixXd& overlapMatrix_;
77 const bool& unrestrictedCalculationRunning_;
80 Eigen::MatrixXd HXoverS_;
82 Eigen::MatrixXd correctionToFock;
83 std::vector<std::shared_ptr<Utils::AdditiveElectronicContribution>> densityDependentContributions_,
84 densityIndependentContributions_;
87 virtual void completeH() = 0;
88 virtual void constructG(Utils::DerivativeOrder order) = 0;
91 inline int ScfFock::getNumberAtoms()
const {
92 return elements_.size();
99 #endif // SPARROW_DFTB_SCFFOCK_H
void addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType< Utils::Derivative::First > &derivatives) const override
adds the derivatives for the first, second atomic and second full types.
Definition: ScfFock.cpp:113
void addDensityIndependentElectronicContribution(std::shared_ptr< Utils::AdditiveElectronicContribution > contribution) final
Definition: ScfFock.cpp:109
void addDensityDependentElectronicContribution(std::shared_ptr< Utils::AdditiveElectronicContribution > contribution) final
Definition: ScfFock.cpp:105
This class calculates the matrices resulting from the zeroth order expansion of the DFT energy for th...
Definition: ZeroOrderMatricesCalculator.h:32