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
PairwiseRepulsion.h
Go to the documentation of this file.
1 
8 #ifndef SPARROW_DFTB_PAIRWISEREPULSION_H
9 #define SPARROW_DFTB_PAIRWISEREPULSION_H
10 
13 
14 namespace Scine {
15 
16 namespace {
17 enum class DerivativeOrder;
18 }
19 
20 namespace Sparrow {
21 
22 namespace dftb {
23 struct RepulsionParameters;
24 
26  public:
27  explicit PairwiseRepulsion(const RepulsionParameters& repulsionPars);
28 
29  void calculate(const Eigen::Ref<Eigen::Vector3d>& R, Utils::DerivativeOrder order);
30 
31  double getRepulsionEnergy() const;
32  template<Utils::Derivative O>
33  Utils::AutomaticDifferentiation::DerivativeType<O> getDerivative() const;
34 
35  private:
36  template<Utils::DerivativeOrder O>
37  Utils::AutomaticDifferentiation::Value1DType<O> calculateRepulsion(double r) const;
38 
39  const RepulsionParameters& repulsionPars_;
40  double repulsionEnergy_ = 0;
41  Eigen::RowVector3d repulsionGradient_;
43 };
44 
45 inline double PairwiseRepulsion::getRepulsionEnergy() const {
46  return repulsionEnergy_;
47 }
48 
49 template<>
50 inline Utils::AutomaticDifferentiation::DerivativeType<Utils::Derivative::First>
51 PairwiseRepulsion::getDerivative<Utils::Derivative::First>() const {
52  return repulsionGradient_;
53 }
54 template<>
55 inline Utils::AutomaticDifferentiation::DerivativeType<Utils::Derivative::SecondAtomic>
56 PairwiseRepulsion::getDerivative<Utils::Derivative::SecondAtomic>() const {
57  return repulsionHessian_;
58 }
59 template<>
60 inline Utils::AutomaticDifferentiation::DerivativeType<Utils::Derivative::SecondFull>
61 PairwiseRepulsion::getDerivative<Utils::Derivative::SecondFull>() const {
62  return repulsionHessian_;
63 }
64 
65 } // namespace dftb
66 
67 } // namespace Sparrow
68 } // namespace Scine
69 #endif // SPARROW_DFTB_PAIRWISEREPULSION_H
Definition: PairwiseRepulsion.h:25
Definition: RepulsionParameters.h:20