Scine::Sparrow  5.0.0
Library for fast and agile quantum chemical calculations with semiempirical methods.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Pages
MultipoleChargePair.h
Go to the documentation of this file.
1 
8 #ifndef SPARROW_MULTIPOLECHARGEPAIR_H
9 #define SPARROW_MULTIPOLECHARGEPAIR_H
10 
11 #include "MultipoleCharge.h"
12 
13 namespace Scine {
14 namespace Sparrow {
15 
16 namespace nddo {
17 
18 namespace multipole {
19 
20 // d=dist, p=plus, m=minus
21 enum class ChargeDistanceSeparation {
22  d00,
23  d01,
24  d10,
25  d02,
26  d20,
27  d0s2,
28  ds20,
29  p11,
30  m11,
31  p12,
32  p21,
33  m12,
34  m21,
35  p1s2,
36  ps21,
37  m1s2,
38  ms21,
39  p22,
40  m22,
41  p2s2,
42  ps22,
43  m2s2,
44  ms22,
45  ps2s2,
46  ms2s2
47 };
48 
55  public:
57 
58  ChargeDistanceSeparation getXDistance() const {
59  return dx_;
60  }
61  ChargeDistanceSeparation getYDistance() const {
62  return dy_;
63  }
64  // ChargeDistanceSeparation getZDistance() const { return dz_; }
65  void setChargeProduct(double q) {
66  q_ = q;
67  }
68  double getChargeProduct() const {
69  return q_;
70  }
71  const MultipoleCharge& firstCharge() const {
72  return c1_;
73  }
74  const MultipoleCharge& secondCharge() const {
75  return c2_;
76  }
77 
78  private:
79  void calculateCharges();
80  void calculateDistances();
81  ChargeDistanceSeparation calculateXYDistance(ChargeDistance d1, ChargeDistance d2);
82 
83  MultipoleCharge c1_, c2_;
84  ChargeDistanceSeparation dx_, dy_; //,dz_;
85  double q_;
86 };
87 
88 } // namespace multipole
89 
90 } // namespace nddo
91 
92 } // namespace Sparrow
93 } // namespace Scine
94 #endif // SPARROW_MULTIPOLECHARGEPAIR_H
Definition: MultipoleChargePair.h:54
Definition: MultipoleCharge.h:24