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 1782 by tim, Wed Nov 24 20:55:03 2004 UTC

# Line 35 | Line 35
35  
36   #include "primitives/Molecule.hpp"
37   #include "utils/MemoryUtils.hpp"
38 + #include "utils/simError.h"
39  
40   namespace oopse {
41 + Molecule::Molecule(int stampId, int globalIndex, const std::string& molName)
42 +    : stampId_(stampId), globalIndex_(globalIndex), moleculeName_(molName) {
43  
44 + }
45 +
46   Molecule::~Molecule() {
47  
48      MemoryUtils::deleteVectorOfPointer(atoms_);
# Line 112 | Line 117 | void Molecule::complete() {
117  
118      if (integrableObjects_.size() != allAtoms.size() - rigidAtoms.size()) {
119          //Some atoms in rigidAtoms are not in allAtoms, something must be wrong
120 +        sprintf(painCave.errMsg, "Atoms in rigidbody are not in the atom list of the same molecule");
121 +
122 +        painCave.isFatal = 1;
123 +        simError();        
124      }
125  
126      integrableObjects_.insert(integrableObjects_.end(), rigidBodies_.begin(), rigidBodies_.end());
# Line 189 | Line 198 | void Molecule::calcForces() {
198      return (i == cutoffGroups_.end()) ? NULL : *i;    
199   }
200  
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 }
219
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;
229
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
202   Vector3d Molecule::getCom() {
203      StuntDouble* sd;
204      std::vector<StuntDouble*>::iterator i;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines