aboutsummaryrefslogtreecommitdiffstats
path: root/science/mpqc/files/patch-center-of-charge
blob: d6827a77008cbcce4da9221ebd99aa26184a3ba6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Add a method that return center of charge of the system

--- src/lib/chemistry/molecule/molecule.cc.orig Wed Apr  3 15:44:33 2002
+++ src/lib/chemistry/molecule/molecule.cc  Fri Feb 11 11:37:29 2005
@@ -607,6 +607,27 @@
   return ret;
 }
 
+SCVector3
+Molecule::center_of_charge() const
+{
+  SCVector3 ret;
+  double C;
+
+  ret = 0.0;
+  C = 0.0;
+
+  for (int i=0; i < natom(); i++) {
+    double c = charge(i);
+    ret += c * SCVector3(r(i));
+    C += c;
+  }
+
+  ret *= 1.0/C;
+
+  return ret;
+}
+
+
 double
 Molecule::nuclear_repulsion_energy()
 {

--- src/lib/chemistry/molecule/molecule.h.orig  Sat Nov 23 04:00:23 2002
+++ src/lib/chemistry/molecule/molecule.h   Fri Feb 11 11:36:30 2005
@@ -209,6 +209,10 @@
         the center of mass for the molecule. */
     SCVector3 center_of_mass() const;
 
+    /** Returns a SCVector3 containing the cartesian coordinates of
+        the center of charge for the molecule. */
+    SCVector3 center_of_charge() const;
+
     /// Returns the nuclear repulsion energy for the molecule
     double nuclear_repulsion_energy();