Scine::Sparrow  5.1.0
Library for fast and agile quantum chemical calculations with semiempirical methods.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
Scine::Sparrow::dftb::SecondOrderFock Class Reference

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. More...

#include <SecondOrderFock.h>

Inheritance diagram for Scine::Sparrow::dftb::SecondOrderFock:
Inheritance graph
Collaboration diagram for Scine::Sparrow::dftb::SecondOrderFock:
Collaboration graph

Public Member 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 () override
 Initializes the gamma matrix G and the gamma matrix with the derivatives dG.
 
double calculateElectronicEnergy () const override
 Sums up the electronic contributions of the zeroth order Hamiltonian, the gamma matrix and the spin contribution.
 
void addDerivatives (Utils::AutomaticDifferentiation::DerivativeContainerType< Utils::Derivative::First > &derivatives) const override
 adds the derivatives for the first, second atomic and second full types.
 
void addDerivatives (Utils::AutomaticDifferentiation::DerivativeContainerType< Utils::Derivative::SecondAtomic > &derivatives) const override
 
void addDerivatives (Utils::AutomaticDifferentiation::DerivativeContainerType< Utils::Derivative::SecondFull > &derivatives) const override
 
template<Utils::DerivativeOrder O>
Utils::AutomaticDifferentiation::Value1DType
< O > 
gamma (int a, int b) const
 
template<Utils::DerivativeOrder O>
Value1DType< O > gamma (int a, int b) const
 
template<Utils::Derivative O>
void addSecondOrderDerivatives (DerivativeContainerType< O > &derivatives) const
 
- Public Member Functions inherited from Scine::Sparrow::dftb::ScfFock
 ScfFock (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)
 
void calculateDensityDependentPart (Utils::DerivativeOrder order) override
 
void calculateDensityIndependentPart (Utils::DerivativeOrder order) override
 
Utils::SpinAdaptedMatrix getMatrix () const override
 
void finalize (Utils::DerivativeOrder order) override
 
void addDensityDependentElectronicContribution (std::shared_ptr< Utils::AdditiveElectronicContribution > contribution) final
 
void addDensityIndependentElectronicContribution (std::shared_ptr< Utils::AdditiveElectronicContribution > contribution) final
 
- Public Member Functions inherited from Scine::Utils::ElectronicContributionCalculator
virtual void addDensityDependentElectronicContribution (std::shared_ptr< AdditiveElectronicContribution > contribution)=0
 
virtual void addDensityIndependentElectronicContribution (std::shared_ptr< AdditiveElectronicContribution > contribution)=0
 

Additional Inherited Members

- Protected Member Functions inherited from Scine::Sparrow::dftb::ScfFock
int getNumberAtoms () const
 
void populationAnalysis ()
 
void addDerivatives (Utils::AutomaticDifferentiation::DerivativeContainerType< Utils::Derivative::First > &derivatives) const override
 adds the derivatives for the first, second atomic and second full types.
 
void addDerivatives (Utils::AutomaticDifferentiation::DerivativeContainerType< Utils::Derivative::SecondAtomic > &derivatives) const override
 
void addDerivatives (Utils::AutomaticDifferentiation::DerivativeContainerType< Utils::Derivative::SecondFull > &derivatives) const override
 
- Protected Attributes inherited from Scine::Sparrow::dftb::ScfFock
ZeroOrderMatricesCalculatorzeroOrderMatricesCalculator_
 
const
Utils::ElementTypeCollection
elements_
 
const Utils::PositionCollectionpositions_
 
const
DFTBCommon::AtomicParameterContainer & 
atomicPar_
 
const
DFTBCommon::DiatomicParameterContainer & 
diatomicPar_
 
const Utils::DensityMatrixdensityMatrix_
 
const Eigen::MatrixXd & energyWeightedDensityMatrix_
 
std::vector< double > & atomicCharges_
 
const std::vector< double > & coreCharges_
 
const Utils::AtomsOrbitalsIndexesaoIndexes_
 
const Eigen::MatrixXd & overlapMatrix_
 
const bool & unrestrictedCalculationRunning_
 
SDFTB spinDFTB
 
Eigen::MatrixXd HXoverS_
 
Eigen::MatrixXd H0_
 
Eigen::MatrixXd correctionToFock
 
std::vector< std::shared_ptr
< Utils::AdditiveElectronicContribution > > 
densityDependentContributions_
 
std::vector< std::shared_ptr
< Utils::AdditiveElectronicContribution > > 
densityIndependentContributions_
 

Detailed Description

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.

Member Function Documentation

template<Utils::DerivativeOrder O>
Utils::AutomaticDifferentiation::Value1DType<O> Scine::Sparrow::dftb::SecondOrderFock::gamma ( int  a,
int  b 
) const

Return gamma and its derivative(s).


The documentation for this class was generated from the following files: