File DFTBCommon.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 DFTBCommon : public StructureDependentInitializer

Public Types

using AtomicParameterContainer = std::vector<std::unique_ptr<SKAtom>>
using SKPairPtr = std::unique_ptr<SKPair>
using SKPairLine = std::array<SKPairPtr, 110>
using DiatomicParameterContainer = std::array<SKPairLine, 110>

Public Functions

DFTBCommon(const Utils::ElementTypeCollection &elements, int &nEl, int &charge, AtomicParameterContainer &atomicPar, DiatomicParameterContainer &diatomicPar)
~DFTBCommon()
void initialize(const std::string &path, unsigned dftbType)
void setMethodDetails(const std::string &path, unsigned dftbType)
void initialize(const Utils::ElementTypeCollection &elementTypes)
void reinitializeParameters()
unsigned int getnAOs() const
bool hasHubbardDerivatives() const
bool unrestrictedCalculationPossible() const
const DiatomicParameterContainer &getPairParameters() const
std::vector<double> getCoreCharges() const
Utils::AtomsOrbitalsIndexes getAtomsOrbitalsIndexes() const
unsigned getNumberElectronsForUnchargedSpecies() const

Private Functions

void readSpinConstants(const std::string &path)
void readHubbardDerivatives(const std::string &path)

Private Members

const int nElements_
std::vector<bool> atomTypePresent
std::vector<std::string> listAtomTypes
AtomicParameterContainer &atomParameters
DiatomicParameterContainer &pairParameters
unsigned int nAOs
unsigned int nAtoms
int &nElectrons_
unsigned int nInitialElectrons_
int &molecularCharge_
double noInteractionEnergy
bool spinPolarizedPossible
bool DFTB3Possible
std::vector<double> coreCharges_
Utils::AtomsOrbitalsIndexes aoIndexes_
const Utils::ElementTypeCollection &elementTypes_
std::string path_
unsigned dftbType_