ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE-4/src/primitives/Molecule.cpp
(Generate patch)

Comparing trunk/OOPSE-4/src/primitives/Molecule.cpp (file contents):
Revision 2082 by tim, Mon Mar 7 22:39:33 2005 UTC vs.
Revision 2204 by gezelter, Fri Apr 15 22:04:00 2005 UTC

# Line 1 | Line 1
1 < /*
1 > /*
2   * Copyright (c) 2005 The University of Notre Dame. All Rights Reserved.
3   *
4   * The University of Notre Dame grants you ("Licensee") a
# Line 54 | Line 54 | Molecule::Molecule(int stampId, int globalIndex, const
54   #include "utils/simError.h"
55  
56   namespace oopse {
57 < Molecule::Molecule(int stampId, int globalIndex, const std::string& molName)
57 >  Molecule::Molecule(int stampId, int globalIndex, const std::string& molName)
58      : stampId_(stampId), globalIndex_(globalIndex), moleculeName_(molName) {
59  
60 < }
60 >    }
61  
62 < Molecule::~Molecule() {
62 >  Molecule::~Molecule() {
63  
64      MemoryUtils::deletePointers(atoms_);
65      MemoryUtils::deletePointers(bonds_);
# Line 72 | Line 72 | Molecule::~Molecule() {
72      //integrableObjects_ don't own the objects
73      integrableObjects_.clear();
74      
75 < }
75 >  }
76  
77 < void Molecule::addAtom(Atom* atom) {
77 >  void Molecule::addAtom(Atom* atom) {
78      if (std::find(atoms_.begin(), atoms_.end(), atom) == atoms_.end()) {
79 <        atoms_.push_back(atom);
79 >      atoms_.push_back(atom);
80      }
81 < }
81 >  }
82  
83 < void Molecule::addBond(Bond* bond) {
83 >  void Molecule::addBond(Bond* bond) {
84      if (std::find(bonds_.begin(), bonds_.end(), bond) == bonds_.end()) {
85 <        bonds_.push_back(bond);
85 >      bonds_.push_back(bond);
86      }
87 < }
87 >  }
88  
89 < void Molecule::addBend(Bend* bend) {
89 >  void Molecule::addBend(Bend* bend) {
90      if (std::find(bends_.begin(), bends_.end(), bend) == bends_.end()) {
91 <        bends_.push_back(bend);
91 >      bends_.push_back(bend);
92      }
93 < }
93 >  }
94  
95 < void Molecule::addTorsion(Torsion* torsion) {
95 >  void Molecule::addTorsion(Torsion* torsion) {
96      if (std::find(torsions_.begin(), torsions_.end(), torsion) == torsions_.end()) {
97 <        torsions_.push_back(torsion);
97 >      torsions_.push_back(torsion);
98      }
99 < }
99 >  }
100  
101 < void Molecule::addRigidBody(RigidBody *rb) {
101 >  void Molecule::addRigidBody(RigidBody *rb) {
102      if (std::find(rigidBodies_.begin(), rigidBodies_.end(), rb) == rigidBodies_.end()) {
103 <        rigidBodies_.push_back(rb);
103 >      rigidBodies_.push_back(rb);
104      }
105 < }
105 >  }
106  
107 < void Molecule::addCutoffGroup(CutoffGroup* cp) {
107 >  void Molecule::addCutoffGroup(CutoffGroup* cp) {
108      if (std::find(cutoffGroups_.begin(), cutoffGroups_.end(), cp) == cutoffGroups_.end()) {
109 <        cutoffGroups_.push_back(cp);
109 >      cutoffGroups_.push_back(cp);
110      }
111  
112 < }
112 >  }
113  
114 < void Molecule::addConstraintPair(ConstraintPair* cp) {
114 >  void Molecule::addConstraintPair(ConstraintPair* cp) {
115      if (std::find(constraintPairs_.begin(), constraintPairs_.end(), cp) == constraintPairs_.end()) {
116 <        constraintPairs_.push_back(cp);
116 >      constraintPairs_.push_back(cp);
117      }
118  
119 < }
119 >  }
120  
121 < void Molecule::addConstraintElem(ConstraintElem* cp) {
121 >  void Molecule::addConstraintElem(ConstraintElem* cp) {
122      if (std::find(constraintElems_.begin(), constraintElems_.end(), cp) == constraintElems_.end()) {
123 <        constraintElems_.push_back(cp);
123 >      constraintElems_.push_back(cp);
124      }
125  
126 < }
126 >  }
127  
128 < void Molecule::complete() {
128 >  void Molecule::complete() {
129      
130      std::set<Atom*> rigidAtoms;
131      RigidBody* rb;
# Line 133 | Line 133 | void Molecule::complete() {
133  
134      
135      for (rb = beginRigidBody(rbIter); rb != NULL; rb = nextRigidBody(rbIter)) {
136 <        rigidAtoms.insert(rb->getBeginAtomIter(), rb->getEndAtomIter());
136 >      rigidAtoms.insert(rb->getBeginAtomIter(), rb->getEndAtomIter());
137      }
138  
139      Atom* atom;
140      AtomIterator ai;
141      for (atom = beginAtom(ai); atom != NULL; atom = nextAtom(ai)) {
142    
143 <        if (rigidAtoms.find(*ai) == rigidAtoms.end()) {
144 <            //if an atom does not belong to a rigid body, it is an integrable object
145 <            integrableObjects_.push_back(*ai);
146 <        }
143 >      if (rigidAtoms.find(*ai) == rigidAtoms.end()) {
144 >        //if an atom does not belong to a rigid body, it is an integrable object
145 >        integrableObjects_.push_back(*ai);
146 >      }
147      }
148  
149      //find all free atoms (which do not belong to rigid bodies)  
# Line 164 | Line 164 | void Molecule::complete() {
164        integrableObjects_.push_back(rb);
165      }
166      //integrableObjects_.insert(integrableObjects_.end(), rigidBodies_.begin(), rigidBodies_.end());
167 < }
167 >  }
168  
169 < double Molecule::getMass() {
169 >  double Molecule::getMass() {
170      StuntDouble* sd;
171      std::vector<StuntDouble*>::iterator i;
172      double mass = 0.0;
173  
174      for (sd = beginIntegrableObject(i); sd != NULL; sd = nextIntegrableObject(i)){
175 <        mass += sd->getMass();
175 >      mass += sd->getMass();
176      }
177  
178      return mass;
179  
180 < }
180 >  }
181  
182 < Vector3d Molecule::getCom() {
182 >  Vector3d Molecule::getCom() {
183      StuntDouble* sd;
184      std::vector<StuntDouble*>::iterator i;
185      Vector3d com;
# Line 187 | Line 187 | Vector3d Molecule::getCom() {
187      double mass;
188      
189      for (sd = beginIntegrableObject(i); sd != NULL; sd = nextIntegrableObject(i)){
190 <        mass = sd->getMass();
191 <        totalMass += mass;
192 <        com += sd->getPos() * mass;    
190 >      mass = sd->getMass();
191 >      totalMass += mass;
192 >      com += sd->getPos() * mass;    
193      }
194  
195      com /= totalMass;
196  
197      return com;
198 < }
198 >  }
199  
200 < void Molecule::moveCom(const Vector3d& delta) {
200 >  void Molecule::moveCom(const Vector3d& delta) {
201      StuntDouble* sd;
202      std::vector<StuntDouble*>::iterator i;
203      
204      for (sd = beginIntegrableObject(i); sd != NULL; sd = nextIntegrableObject(i)){
205 <        sd->setPos(sd->getPos() + delta);
205 >      sd->setPos(sd->getPos() + delta);
206      }
207  
208 < }
208 >  }
209  
210 < Vector3d Molecule::getComVel() {
210 >  Vector3d Molecule::getComVel() {
211      StuntDouble* sd;
212      std::vector<StuntDouble*>::iterator i;
213      Vector3d velCom;
# Line 215 | Line 215 | Vector3d Molecule::getComVel() {
215      double mass;
216      
217      for (sd = beginIntegrableObject(i); sd != NULL; sd = nextIntegrableObject(i)){
218 <        mass = sd->getMass();
219 <        totalMass += mass;
220 <        velCom += sd->getVel() * mass;    
218 >      mass = sd->getMass();
219 >      totalMass += mass;
220 >      velCom += sd->getVel() * mass;    
221      }
222  
223      velCom /= totalMass;
224  
225      return velCom;
226 < }
226 >  }
227  
228 < double Molecule::getPotential() {
228 >  double Molecule::getPotential() {
229  
230      Bond* bond;
231      Bend* bend;
# Line 237 | Line 237 | double Molecule::getPotential() {
237      double potential = 0.0;
238  
239      for (bond = beginBond(bondIter); bond != NULL; bond = nextBond(bondIter)) {
240 <        potential += bond->getPotential();
240 >      potential += bond->getPotential();
241      }
242  
243      for (bend = beginBend(bendIter); bend != NULL; bend = nextBend(bendIter)) {
244 <        potential += bend->getPotential();
244 >      potential += bend->getPotential();
245      }
246  
247      for (torsion = beginTorsion(torsionIter); torsion != NULL; torsion = nextTorsion(torsionIter)) {
248 <        potential += torsion->getPotential();
248 >      potential += torsion->getPotential();
249      }
250  
251      return potential;
252  
253 < }
253 >  }
254  
255 < std::ostream& operator <<(std::ostream& o, Molecule& mol) {
255 >  std::ostream& operator <<(std::ostream& o, Molecule& mol) {
256      o << std::endl;
257      o << "Molecule " << mol.getGlobalIndex() << "has: " << std::endl;
258      o << mol.getNAtoms() << " atoms" << std::endl;
# Line 264 | Line 264 | std::ostream& operator <<(std::ostream& o, Molecule& m
264      o << mol.getNCutoffGroups() << "cutoff groups" << std::endl;
265      o << mol.getNConstraintPairs() << "constraint pairs" << std::endl;
266      return o;
267 < }
267 >  }
268  
269   }//end namespace oopse

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines