8 #ifndef SPARROW_DFTB_PAIRWISEREPULSION_H
9 #define SPARROW_DFTB_PAIRWISEREPULSION_H
23 struct RepulsionParameters;
29 void calculate(
const Eigen::Ref<Eigen::Vector3d>& R, Utils::DerivativeOrder order);
31 double getRepulsionEnergy()
const;
32 template<Utils::Derivative O>
33 Utils::AutomaticDifferentiation::DerivativeType<O> getDerivative()
const;
36 template<Utils::DerivativeOrder O>
37 Utils::AutomaticDifferentiation::Value1DType<O> calculateRepulsion(
double r)
const;
40 double repulsionEnergy_ = 0;
41 Eigen::RowVector3d repulsionGradient_;
45 inline double PairwiseRepulsion::getRepulsionEnergy()
const {
46 return repulsionEnergy_;
50 inline Utils::AutomaticDifferentiation::DerivativeType<Utils::Derivative::First>
51 PairwiseRepulsion::getDerivative<Utils::Derivative::First>()
const {
52 return repulsionGradient_;
55 inline Utils::AutomaticDifferentiation::DerivativeType<Utils::Derivative::SecondAtomic>
56 PairwiseRepulsion::getDerivative<Utils::Derivative::SecondAtomic>()
const {
57 return repulsionHessian_;
60 inline Utils::AutomaticDifferentiation::DerivativeType<Utils::Derivative::SecondFull>
61 PairwiseRepulsion::getDerivative<Utils::Derivative::SecondFull>()
const {
62 return repulsionHessian_;
69 #endif // SPARROW_DFTB_PAIRWISEREPULSION_H
Definition: PairwiseRepulsion.h:25
Definition: RepulsionParameters.h:20