ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/brains/SimInfo.cpp
(Generate patch)

Comparing branches/development/src/brains/SimInfo.cpp (file contents):
Revision 1767 by gezelter, Fri Jul 6 22:01:58 2012 UTC vs.
Revision 1779 by gezelter, Mon Aug 20 17:51:39 2012 UTC

# Line 88 | Line 88 | namespace OpenMD {
88      
89      vector<Component*> components = simParams->getComponents();
90      
91 <    for (vector<Component*>::iterator i = components.begin(); i !=components.end(); ++i) {
91 >    for (vector<Component*>::iterator i = components.begin();
92 >         i !=components.end(); ++i) {
93        molStamp = (*i)->getMoleculeStamp();
94        nMolWithSameStamp = (*i)->getNMol();
95        
# Line 231 | Line 232 | namespace OpenMD {
232      vector<Atom*>::iterator k;
233  
234      Molecule* mol;
235 <    StuntDouble* integrableObject;
235 >    StuntDouble* sd;
236      Atom* atom;
237  
238      ndf_local = 0;
239      nfq_local = 0;
240      
241      for (mol = beginMolecule(i); mol != NULL; mol = nextMolecule(i)) {
241      for (integrableObject = mol->beginIntegrableObject(j); integrableObject != NULL;
242           integrableObject = mol->nextIntegrableObject(j)) {
242  
243 +      for (sd = mol->beginIntegrableObject(j); sd != NULL;
244 +           sd = mol->nextIntegrableObject(j)) {
245 +
246          ndf_local += 3;
247  
248 <        if (integrableObject->isDirectional()) {
249 <          if (integrableObject->isLinear()) {
248 >        if (sd->isDirectional()) {
249 >          if (sd->isLinear()) {
250              ndf_local += 2;
251            } else {
252              ndf_local += 3;
253            }
254          }
255        }
256 +
257        for (atom = mol->beginFluctuatingCharge(k); atom != NULL;
258             atom = mol->nextFluctuatingCharge(k)) {
259          if (atom->isFluctuatingCharge()) {
# Line 312 | Line 315 | namespace OpenMD {
315      MoleculeIterator i;
316      vector<StuntDouble*>::iterator j;
317      Molecule* mol;
318 <    StuntDouble* integrableObject;
318 >    StuntDouble* sd;
319  
320      // Raw degrees of freedom that we have to set
321      ndfRaw_local = 0;
322      
323      for (mol = beginMolecule(i); mol != NULL; mol = nextMolecule(i)) {
321      for (integrableObject = mol->beginIntegrableObject(j); integrableObject != NULL;
322           integrableObject = mol->nextIntegrableObject(j)) {
324  
325 +      for (sd = mol->beginIntegrableObject(j); sd != NULL;
326 +           sd = mol->nextIntegrableObject(j)) {
327 +
328          ndfRaw_local += 3;
329  
330 <        if (integrableObject->isDirectional()) {
331 <          if (integrableObject->isLinear()) {
330 >        if (sd->isDirectional()) {
331 >          if (sd->isLinear()) {
332              ndfRaw_local += 2;
333            } else {
334              ndfRaw_local += 3;
# Line 384 | Line 388 | namespace OpenMD {
388      Molecule::RigidBodyIterator rbIter;
389      RigidBody* rb;
390      Molecule::IntegrableObjectIterator ii;
391 <    StuntDouble* integrableObject;
391 >    StuntDouble* sd;
392      
393 <    for (integrableObject = mol->beginIntegrableObject(ii);
394 <         integrableObject != NULL;
391 <         integrableObject = mol->nextIntegrableObject(ii)) {
393 >    for (sd = mol->beginIntegrableObject(ii); sd != NULL;
394 >         sd = mol->nextIntegrableObject(ii)) {
395        
396 <      if (integrableObject->isRigidBody()) {
397 <        rb = static_cast<RigidBody*>(integrableObject);
396 >      if (sd->isRigidBody()) {
397 >        rb = static_cast<RigidBody*>(sd);
398          vector<Atom*> atoms = rb->getAtoms();
399          set<int> rigidAtoms;
400          for (int i = 0; i < static_cast<int>(atoms.size()); ++i) {
# Line 402 | Line 405 | namespace OpenMD {
405          }      
406        } else {
407          set<int> oneAtomSet;
408 <        oneAtomSet.insert(integrableObject->getGlobalIndex());
409 <        atomGroups.insert(map<int, set<int> >::value_type(integrableObject->getGlobalIndex(), oneAtomSet));        
408 >        oneAtomSet.insert(sd->getGlobalIndex());
409 >        atomGroups.insert(map<int, set<int> >::value_type(sd->getGlobalIndex(), oneAtomSet));        
410        }
411      }  
412            
# Line 537 | Line 540 | namespace OpenMD {
540      Molecule::RigidBodyIterator rbIter;
541      RigidBody* rb;
542      Molecule::IntegrableObjectIterator ii;
543 <    StuntDouble* integrableObject;
543 >    StuntDouble* sd;
544      
545 <    for (integrableObject = mol->beginIntegrableObject(ii);
546 <         integrableObject != NULL;
544 <         integrableObject = mol->nextIntegrableObject(ii)) {
545 >    for (sd = mol->beginIntegrableObject(ii); sd != NULL;
546 >         sd = mol->nextIntegrableObject(ii)) {
547        
548 <      if (integrableObject->isRigidBody()) {
549 <        rb = static_cast<RigidBody*>(integrableObject);
548 >      if (sd->isRigidBody()) {
549 >        rb = static_cast<RigidBody*>(sd);
550          vector<Atom*> atoms = rb->getAtoms();
551          set<int> rigidAtoms;
552          for (int i = 0; i < static_cast<int>(atoms.size()); ++i) {
# Line 555 | Line 557 | namespace OpenMD {
557          }      
558        } else {
559          set<int> oneAtomSet;
560 <        oneAtomSet.insert(integrableObject->getGlobalIndex());
561 <        atomGroups.insert(map<int, set<int> >::value_type(integrableObject->getGlobalIndex(), oneAtomSet));        
560 >        oneAtomSet.insert(sd->getGlobalIndex());
561 >        atomGroups.insert(map<int, set<int> >::value_type(sd->getGlobalIndex(), oneAtomSet));        
562        }
563      }  
564  
# Line 780 | Line 782 | namespace OpenMD {
782  
783    void SimInfo::setupSimVariables() {
784      useAtomicVirial_ = simParams_->getUseAtomicVirial();
785 <    // we only call setAccumulateBoxDipole if the accumulateBoxDipole parameter is true
785 >    // we only call setAccumulateBoxDipole if the accumulateBoxDipole
786 >    // parameter is true
787      calcBoxDipole_ = false;
788      if ( simParams_->haveAccumulateBoxDipole() )
789        if ( simParams_->getAccumulateBoxDipole() ) {
# Line 978 | Line 981 | namespace OpenMD {
981  
982      for (mol = beginMolecule(mi); mol != NULL; mol = nextMolecule(mi)) {
983          
984 <      for (atom = mol->beginAtom(atomIter); atom != NULL; atom = mol->nextAtom(atomIter)) {
984 >      for (atom = mol->beginAtom(atomIter); atom != NULL;
985 >           atom = mol->nextAtom(atomIter)) {
986          atom->setSnapshotManager(sman_);
987        }
988          
989 <      for (rb = mol->beginRigidBody(rbIter); rb != NULL; rb = mol->nextRigidBody(rbIter)) {
989 >      for (rb = mol->beginRigidBody(rbIter); rb != NULL;
990 >           rb = mol->nextRigidBody(rbIter)) {
991          rb->setSnapshotManager(sman_);
992        }
993  
994 <      for (cg = mol->beginCutoffGroup(cgIter); cg != NULL; cg = mol->nextCutoffGroup(cgIter)) {
994 >      for (cg = mol->beginCutoffGroup(cgIter); cg != NULL;
995 >           cg = mol->nextCutoffGroup(cgIter)) {
996          cg->setSnapshotManager(sman_);
997        }
998      }    
# Line 1001 | Line 1007 | namespace OpenMD {
1007    
1008    
1009    StuntDouble* SimInfo::getIOIndexToIntegrableObject(int index) {
1010 <    return IOIndexToIntegrableObject.at(index);
1010 >    if (index >= IOIndexToIntegrableObject.size()) {
1011 >      sprintf(painCave.errMsg,
1012 >              "SimInfo::getIOIndexToIntegrableObject Error: Integrable Object\n"
1013 >              "\tindex exceeds number of known objects!\n");
1014 >      painCave.isFatal = 1;
1015 >      simError();
1016 >      return NULL;
1017 >    } else
1018 >      return IOIndexToIntegrableObject.at(index);
1019    }
1020    
1021    void SimInfo::setIOIndexToIntegrableObject(const vector<StuntDouble*>& v) {
1022      IOIndexToIntegrableObject= v;
1023    }
1010 /*
1011   void SimInfo::setStuntDoubleFromGlobalIndex(vector<StuntDouble*> v) {
1012      assert( v.size() == nAtoms_ + nRigidBodies_);
1013      sdByGlobalIndex_ = v;
1014    }
1024  
1016    StuntDouble* SimInfo::getStuntDoubleFromGlobalIndex(int index) {
1017      //assert(index < nAtoms_ + nRigidBodies_);
1018      return sdByGlobalIndex_.at(index);
1019    }  
1020 */  
1025    int SimInfo::getNGlobalConstraints() {
1026      int nGlobalConstraints;
1027   #ifdef IS_MPI

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines