# | Line 92 | Line 92 | void InitializeFromFile :: readInit( SimInfo* the_simn | |
---|---|---|
92 | char *parseErr; | |
93 | ||
94 | vector<StuntDouble*> integrableObjects; | |
95 | – | vector<StuntDouble*>::iterator iter; |
95 | ||
96 | simnfo = the_simnfo; | |
97 | ||
# | Line 141 | Line 140 | void InitializeFromFile :: readInit( SimInfo* the_simn | |
140 | ||
141 | integrableObjects = (simnfo->molecules[i]).getIntegrableObjects(); | |
142 | ||
143 | < | for(iter = integrableObjects.begin(); iter!= integrableObjects.end(); iter++) |
143 | > | for(j = 0; j < integrableObjects.size(); j++){ |
144 | ||
145 | eof_test = fgets(read_buffer, sizeof(read_buffer), c_in_file); | |
146 | if(eof_test == NULL){ | |
# | Line 154 | Line 153 | void InitializeFromFile :: readInit( SimInfo* the_simn | |
153 | simError(); | |
154 | } | |
155 | ||
156 | < | parseErr = parseDumpLine( read_buffer, *iter); |
156 | > | parseErr = parseDumpLine( read_buffer, integrableObjects[j]); |
157 | if( parseErr != NULL ){ | |
158 | strcpy( painCave.errMsg, parseErr ); | |
159 | painCave.isFatal = 1; | |
160 | simError(); | |
161 | } | |
162 | + | } |
163 | } | |
164 | ||
165 | – | |
165 | // MPI Section of code.......... | |
166 | #else //IS_MPI | |
167 | ||
# | Line 176 | Line 175 | void InitializeFromFile :: readInit( SimInfo* the_simn | |
175 | int *MolToProcMap = mpiSim->getMolToProcMap(); | |
176 | int localIndex; | |
177 | int nCurObj; | |
178 | + | int nItems; |
179 | ||
180 | + | nTotObjs = simnfo->getTotIntegrableObjects(); |
181 | haveError = 0; | |
182 | if (worldRank == 0) { | |
183 | ||
# | Line 188 | Line 189 | void InitializeFromFile :: readInit( SimInfo* the_simn | |
189 | simError(); | |
190 | } | |
191 | ||
192 | < | nTotObjs = atoi( read_buffer ); |
192 | > | nItems = atoi( read_buffer ); |
193 | ||
194 | // Check to see that the number of integrable objects in the intial configuration file is the | |
195 | // same as declared in simBass. | |
196 | ||
197 | < | if( nTotObjs != simnfo->getTotIntegrableObjects()){ |
197 | > | if( nTotObjs != nItems){ |
198 | sprintf( painCave.errMsg, | |
199 | "Initialize from File error. %s n_atoms, %d, " | |
200 | "does not match the BASS file's n_atoms, %d.\n", | |
# | Line 256 | Line 257 | void InitializeFromFile :: readInit( SimInfo* the_simn | |
257 | ||
258 | if(haveError) nodeZeroError(); | |
259 | ||
260 | < | parseDumpLine(read_buffer, integrableObjects[i]); |
260 | > | parseDumpLine(read_buffer, integrableObjects[j]); |
261 | ||
262 | } | |
263 | ||
# | Line 265 | Line 266 | void InitializeFromFile :: readInit( SimInfo* the_simn | |
266 | else{ | |
267 | //molecule belongs to slave nodes | |
268 | ||
269 | < | MPI_Recv(&nCurObj, 1, MPI_INT, 0, |
269 | > | MPI_Recv(&nCurObj, 1, MPI_INT, which_node, |
270 | TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus); | |
271 | ||
272 | for(j=0; j < integrableObjects.size(); j++){ | |
# | Line 295 | Line 296 | void InitializeFromFile :: readInit( SimInfo* the_simn | |
296 | } | |
297 | else{ | |
298 | //actions taken at slave nodes | |
299 | + | |
300 | + | MPI_Bcast(read_buffer, BUFFERSIZE, MPI_CHAR, 0, MPI_COMM_WORLD); |
301 | + | |
302 | + | parseErr = parseCommentLine( read_buffer, simnfo); |
303 | + | |
304 | + | if( parseErr != NULL ){ |
305 | + | strcpy( painCave.errMsg, parseErr ); |
306 | + | haveError = 1; |
307 | + | simError(); |
308 | + | } |
309 | + | |
310 | for (i=0 ; i < mpiSim->getTotNmol(); i++) { | |
311 | which_node = MolToProcMap[i]; | |
312 | ||
# | Line 313 | Line 325 | void InitializeFromFile :: readInit( SimInfo* the_simn | |
325 | ||
326 | nCurObj = integrableObjects.size(); | |
327 | ||
328 | < | MPI_Recv(&nCurObj, 1, MPI_INT, 0, |
329 | < | TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus); |
328 | > | MPI_Send(&nCurObj, 1, MPI_INT, 0, |
329 | > | TAKE_THIS_TAG_INT, MPI_COMM_WORLD); |
330 | ||
331 | for(j = 0; j < integrableObjects.size(); j++){ | |
332 | ||
# | Line 618 | Line 630 | char* InitializeFromFile::parseCommentLine(char* readL | |
630 | ||
631 | //push eta into SimInfo::properties which can be | |
632 | //retrieved by integrator later | |
633 | < | //entry_plug->setBoxM( theBoxMat3 ); |
633 | > | |
634 | DoubleArrayData* etaValue = new DoubleArrayData(); | |
635 | etaValue->setID(ETAVALUE_ID); | |
636 | etaValue->setData(eta, 9); |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |