8 #ifndef SPARROW_DFTB_SKPAIR_H
9 #define SPARROW_DFTB_SKPAIR_H
23 template<Utils::DerivativeOrder O>
25 std::array<Utils::AutomaticDifferentiation::Value1DType<O>, 28> derivIntegral;
26 std::array<std::array<Utils::AutomaticDifferentiation::Value1DType<O>, 8>, 28> C;
27 std::array<std::array<Utils::AutomaticDifferentiation::Value1DType<O>, 8>, 28> D;
28 std::array<double, 8> xa;
29 std::array<std::array<double, 8>, 28> ya;
39 template<Utils::DerivativeOrder O>
41 template<Utils::DerivativeOrder O>
42 Utils::AutomaticDifferentiation::Value1DType<O> getRepulsion(
double const& r)
const;
45 double g1a, g1b, g2a, g2b;
50 double dgab1a, dgab1b, dgab2a, dgab2b, dgba1a, dgba1b, dgba2a, dgba2b, dgadr, dgbdr;
54 void precalculateGammaTerms();
55 int getNIntegrals()
const {
64 template<Utils::DerivativeOrder O>
65 int getHSIntegral(InterpolationValues<O>& val,
double dist)
const;
66 template<Utils::DerivativeOrder O>
67 void interpolate(InterpolationValues<O>& val,
double x,
int start)
const;
68 void precompute5Extrapolation();
71 static constexpr
double distFudge = 1.0;
74 static constexpr
int nInter = 8;
75 static constexpr
int nInterRight = 4;
76 static constexpr
int nInterLeft = 4;
79 static constexpr
double deltaR = 1e-5;
82 static constexpr std::array<int, 28> integralIndexes = {
83 {19, 9, 18, 8, 15, 5, 16, 6, 27, 23, 17, 7, 26, 22, 13, 3, 14, 4, 24, 20, 25, 21, 10, 0, 11, 1, 12, 2}};
91 std::array<std::vector<double>, 28> integralTable;
93 dftb::RepulsionParameters repulsion_;
96 std::vector<double> extrC3, extrC4, extrC5;
101 GammaDerivativeTerms gammaDerivative;
Definition: SkfParser.h:21
Definition: RepulsionParameters.h:20