ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/restraints/RestraintForceManager.cpp
(Generate patch)

Comparing trunk/src/restraints/RestraintForceManager.cpp (file contents):
Revision 1364 by cli2, Wed Oct 7 20:49:50 2009 UTC vs.
Revision 1366 by gezelter, Fri Oct 16 20:42:29 2009 UTC

# Line 109 | Line 109 | namespace oopse {
109            molIndex = stamp[i]->getMolIndex();
110          }
111          
112 <        Molecule* mol = info_->getMoleculeByGlobalIndex(molIndex);
113 <        
114 <        if (mol == NULL) {
112 >        if (molIndex < 0) {
113            sprintf(painCave.errMsg,
114 <                  "Restraint Error: A molecular restraint was specified, but\n"
115 <                  "\tno molecule was found with global index %d.\n",
118 <                  molIndex);
114 >                  "Restraint Error: A molecular restraint was specified\n"
115 >                  "\twith a molIndex that was less than 0\n");
116            painCave.isFatal = 1;
117            simError();      
118          }
119 +        if (molIndex >= info_->getNGlobalMolecules()) {
120 +          sprintf(painCave.errMsg,
121 +                  "Restraint Error: A molecular restraint was specified with\n"
122 +                  "\ta molIndex that was greater than the total number of molecules\n");
123 +          painCave.isFatal = 1;
124 +          simError();      
125 +        }
126 +      
127 +        Molecule* mol = info_->getMoleculeByGlobalIndex(molIndex);
128          
129 +        if (mol == NULL) {
130 + #ifdef IS_MPI
131 +          // getMoleculeByGlobalIndex returns a NULL in parallel if
132 +          // this proc doesn't have the molecule.  Do a quick check to
133 +          // make sure another processor is supposed to have it.
134 +        
135 +          int myrank = MPI::COMM_WORLD.Get_rank();
136 +          if (info_->getMolToProc(molIndex) == myrank) {
137 +            // If we were supposed to have it but got a null, then freak out.
138 + #endif
139 +
140 +            sprintf(painCave.errMsg,
141 +                    "Restraint Error: A molecular restraint was specified, but\n"
142 +                    "\tno molecule was found with global index %d.\n",
143 +                    molIndex);
144 +            painCave.isFatal = 1;
145 +            simError();    
146 +
147 + #ifdef IS_MPI
148 +          }
149 + #endif
150 +        }
151 +        
152          MolecularRestraint* rest = new MolecularRestraint();
153  
154          std::string restPre("mol_");

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines