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

Comparing branches/new_design/OOPSE-3.0/src/primitives/Molecule.cpp (file contents):
Revision 1695 by tim, Mon Nov 1 22:52:57 2004 UTC vs.
Revision 1738 by tim, Sat Nov 13 05:08:12 2004 UTC

# Line 37 | Line 37 | namespace oopse {
37   #include "utils/MemoryUtils.hpp"
38  
39   namespace oopse {
40 + Molecule::Molecule(int stampId, int globalIndex, const std::string& molName)
41 +    : stampId_(stampId), globalIndex_(globalIndex), moleculeName_(molName) {
42  
43 + }
44 +
45   Molecule::~Molecule() {
46  
47      MemoryUtils::deleteVectorOfPointer(atoms_);
# Line 108 | Line 112 | void Molecule::complete() {
112      //element that is contained in [allAtoms.begin(), allAtoms.end()) and not contained in
113      //[rigidAtoms.begin(), rigidAtoms.end()).
114      std::set_difference(allAtoms.begin(), allAtoms.end(), rigidAtoms.begin(), rigidAtoms.end(),
115 <                            std::back_inserter(integrableObjects_));
115 >                            std::back_inserter(integrableObjects_.end()));
116  
117      if (integrableObjects_.size() != allAtoms.size() - rigidAtoms.size()) {
118          //Some atoms in rigidAtoms are not in allAtoms, something must be wrong
119 +        sprintf(painCave.errMsg, "Atoms in rigidbody are not in the atom list of the same molecule");
120 +
121 +        painCave.isFatal = 1;
122 +        simError();        
123      }
124  
125      integrableObjects_.insert(integrableObjects_.end(), rigidBodies_.begin(), rigidBodies_.end());
# Line 188 | Line 196 | CutoffGroup* Molecule::nextCutoffGroup(std::vector<Cut
196      ++i;
197      return (i == cutoffGroups_.end()) ? NULL : *i;    
198   }
191
192 void Molecule::calcForces() {
193    RigidBody* rb;
194    Bond* bond;
195    Bend* bend;
196    Torsion* torsion;
197    std::vector<RigidBody*>::iterator rbIter;
198    std::vector<Bond*>::iterator bondIter;;
199    std::vector<Bend*>::iterator bendIter;
200    std::vector<Torsion*>::iterator torsionIter;
201
202    for (rb = beginRigidBody(rbIter); rb != NULL; rb = nextRigidBody(rbIter)) {
203        rb->updateAtoms();
204    }
205
206    for (bond = beginBond(bondIter); bond != NULL; bond = nextBond(bondIter)) {
207        bond->calcForce();
208    }
209
210    for (bend = beginBend(bendIter); bend != NULL; bend = nextBend(bendIter)) {
211        bend->calcForce();
212    }
213
214    for (torsion = beginTorsion(torsionIter); torsion != NULL; torsion = nextTorsion(torsionIter)) {
215        torsion->calcForce();
216    }
217    
218 }
199  
220 double Molecule::getPotential() {
221    //RigidBody* rb;
222    Bond* bond;
223    Bend* bend;
224    Torsion* torsion;
225    //std::vector<RigidBody*> rbIter;
226    std::vector<Bond*>::iterator bondIter;;
227    std::vector<Bend*>::iterator bendIter;
228    std::vector<Torsion*>::iterator torsionIter;
200  
230    double potential = 0;
231    
232    //for (rb = beginRigidBody(rbIter); rb != NULL; rb = nextRigidBody(rbIter)) {
233    //    rb->updateAtoms();
234    //}
235
236    for (bond = beginBond(bondIter); bond != NULL; bond = nextBond(bondIter)) {
237        potential += bond->getPotential();
238    }
239
240    for (bend = beginBend(bendIter); bend != NULL; bend = nextBend(bendIter)) {
241        potential += bend->getPotential();
242    }
243
244    for (torsion = beginTorsion(torsionIter); torsion != NULL; torsion = nextTorsion(torsionIter)) {
245        potential += torsion->getPotential();
246    }
247    
248    return potential;
249 }
250
201   Vector3d Molecule::getCom() {
202      StuntDouble* sd;
203      std::vector<StuntDouble*>::iterator i;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines