File SecondOrderFock.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
SecondOrderFock: public Scine::Sparrow::dftb::ScfFock - #include <SecondOrderFock.h>
Implementation of FockMatrixCalculator for DFTB2, the SCC-DFTB.
It calculates the electronic contributions to the energy and their derivatives with respect to the nuclear cartesian coordinates.
Public Functions
-
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.
-
void
initialize() Initializes the gamma matrix G and the gamma matrix with the derivatives dG.
-
double
calculateElectronicEnergy() const Sums up the electronic contributions of the zeroth order Hamiltonian, the gamma matrix and the spin contribution.
-
void
addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::first> &derivatives) const adds the derivatives for the first, second atomic and second full types.
-
void
addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::second_atomic> &derivatives) const¶
-
void
addDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<Utils::derivativeType::second_full> &derivatives) const¶
Private Functions
-
void
completeH()¶ completes the H matrix by adding the first order correction to H0.
-
void
constructG(Utils::derivOrder order)¶
-
template<Utils::derivOrder
O>
voidconstructG()¶
-
template<Utils::derivOrder
O>
Utils::AutomaticDifferentiation::Value1DType<O>gamma(int a, int b) const¶ Return gamma and its derivative(s).
-
template<Utils::derivativeType
O>
voidaddSecondOrderDerivatives(Utils::AutomaticDifferentiation::DerivativeContainerType<O> &derivatives) const¶
-
-
class
-
namespace
-
namespace