ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/branches/new_design/OOPSE-3.0/src/primitives/CutoffGroup.hpp
Revision: 1692
Committed: Mon Nov 1 20:15:58 2004 UTC (19 years, 7 months ago) by tim
File size: 1850 byte(s)
Log Message:
break, break and break.....

File Contents

# Content
1 #ifndef _CUTOFFGROUP_H_
2 #define _CUTOFFGROUP_H_
3 #include "primitives/Atom.hpp"
4
5 class CutoffGroup{
6 public:
7
8 CutoffGroup() {
9 haveTotalMass = false;
10 totalMass = 0.0;
11 }
12
13 void addAtom(Atom* atom) {cutoffAtomList.push_back(atom);}
14
15 Atom* beginAtom(vector<Atom*>::iterator& i){
16 i = cutoffAtomList.begin();
17 return i != cutoffAtomList.end()? *i : NULL;
18 }
19
20 Atom* nextAtom(vector<Atom*>::iterator& i){
21 i++;
22 return i != cutoffAtomList.end()? *i : NULL;
23 }
24
25 double getMass(){
26 vector<Atom*>::iterator i;
27 Atom* atom;
28 double mass;
29
30 if (!haveTotalMass) {
31
32 totalMass = 0;
33
34 for(atom = beginAtom(i); atom != NULL; atom = nextAtom(i)){
35 mass = atom->getMass();
36 totalMass += mass;
37 }
38
39 haveTotalMass = true;
40 }
41
42 return totalMass;
43 }
44
45 void getCOM(double com[3]){
46
47 vector<Atom*>::iterator i;
48 Atom* atom;
49 double pos[3];
50 double mass;
51
52 com[0] = 0;
53 com[1] = 0;
54 com[2] = 0;
55 totalMass = getMass();
56
57 if (cutoffAtomList.size() == 1) {
58
59 com = beginAtom(i)->getPos();
60
61 } else {
62
63 for(atom = beginAtom(i); atom != NULL; atom = nextAtom(i)){
64 mass = atom->getMass();
65 pos = atom->getPos();
66 com[0] += pos[0] * mass;
67 com[1] += pos[1] * mass;
68 com[2] += pos[2] * mass;
69 }
70
71 com[0] /= totalMass;
72 com[1] /= totalMass;
73 com[2] /= totalMass;
74 }
75
76 }
77
78 int getNumAtom() {return cutoffAtomList.size();}
79
80 int getGlobalIndex() {return globalIndex;}
81 void setGlobalIndex(int id) {this->globalIndex = id;}
82 private:
83 vector<Atom*> cutoffAtomList;
84 bool haveTotalMass;
85 double totalMass;
86 int globalIndex;
87
88 };
89
90 #endif

Properties

Name Value
svn:executable *