ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/OOPSE/libmdtools/InitializeFromFile.cpp
(Generate patch)

Comparing trunk/OOPSE/libmdtools/InitializeFromFile.cpp (file contents):
Revision 1108 by tim, Wed Apr 14 15:37:41 2004 UTC vs.
Revision 1130 by tim, Thu Apr 22 14:55:17 2004 UTC

# Line 16 | Line 16
16   #ifdef IS_MPI
17   #include <mpi.h>
18   #include "mpiSimulation.hpp"
19 < #define TAKE_THIS_TAG_CHAR 0
20 < #define TAKE_THIS_TAG_INT 1
19 > #define TAKE_THIS_TAG_CHAR 3134
20 > #define TAKE_THIS_TAG_INT 3135
21  
22   namespace initFile{
23    void nodeZeroError( void );
# 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 219 | Line 220 | void InitializeFromFile :: readInit( SimInfo* the_simn
220  
221      MPI_Bcast(read_buffer, BUFFERSIZE, MPI_CHAR, 0, MPI_COMM_WORLD);
222  
223 +    cerr << "node " << worldRank << " finished  MPI_Bcast" << endl;
224 +
225      parseErr = parseCommentLine( read_buffer, simnfo);
226  
227      if( parseErr != NULL ){
# Line 256 | Line 259 | void InitializeFromFile :: readInit( SimInfo* the_simn
259            
260            if(haveError) nodeZeroError();
261  
262 <          parseDumpLine(read_buffer, integrableObjects[i]);
262 >          parseDumpLine(read_buffer, integrableObjects[j]);
263            
264         }
265  
# Line 265 | Line 268 | void InitializeFromFile :: readInit( SimInfo* the_simn
268        else{
269        //molecule belongs to slave nodes
270  
271 <        MPI_Recv(&nCurObj, 1, MPI_INT, 0,
271 >        MPI_Recv(&nCurObj, 1, MPI_INT, which_node,
272                 TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus);
273 <      
274 <       for(j=0; j < integrableObjects.size(); j++){
273 >         cerr << "node " << worldRank << " finished  MPI_Send" << endl;  
274 >       for(j=0; j < nCurObj; j++){
275          
276            eof_test = fgets(read_buffer, sizeof(read_buffer), c_in_file);
277            if(eof_test == NULL){
# Line 285 | Line 288 | void InitializeFromFile :: readInit( SimInfo* the_simn
288  
289              MPI_Send(read_buffer, BUFFERSIZE, MPI_CHAR, which_node,
290                        TAKE_THIS_TAG_CHAR, MPI_COMM_WORLD);
291 <          
291 >           cerr << "node " << worldRank << " finished  MPI_Send" << endl;
292         }
293  
294        }
# Line 295 | Line 298 | void InitializeFromFile :: readInit( SimInfo* the_simn
298    }
299    else{
300    //actions taken at slave nodes
301 +
302 +    MPI_Bcast(read_buffer, BUFFERSIZE, MPI_CHAR, 0, MPI_COMM_WORLD);
303 +
304 +    cerr << "node " << worldRank << " finished  MPI_Bcast" << endl;
305 +    parseErr = parseCommentLine( read_buffer, simnfo);
306 +
307 +    if( parseErr != NULL ){
308 +      strcpy( painCave.errMsg, parseErr );
309 +      haveError = 1;
310 +      simError();
311 +    }
312 +  
313      for (i=0 ; i < mpiSim->getTotNmol(); i++) {
314        which_node = MolToProcMap[i];
315        
# Line 313 | Line 328 | void InitializeFromFile :: readInit( SimInfo* the_simn
328  
329          nCurObj = integrableObjects.size();
330          
331 <        MPI_Recv(&nCurObj, 1, MPI_INT, 0,
332 <                        TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus);
331 >        MPI_Send(&nCurObj, 1, MPI_INT, 0,
332 >                        TAKE_THIS_TAG_INT, MPI_COMM_WORLD);
333  
334 +        cerr << "node " << worldRank << " finished  MPI_Send" << endl;
335          for(j = 0; j < integrableObjects.size(); j++){
336  
337            MPI_Recv(read_buffer, BUFFERSIZE, MPI_CHAR, 0,
338                                TAKE_THIS_TAG_CHAR, MPI_COMM_WORLD, &istatus);
339  
340 +        cerr << "node " << worldRank << " finished  MPI_Recv" << endl;
341            parseErr = parseDumpLine(read_buffer, integrableObjects[j]);
342  
343            if( parseErr != NULL ){
# Line 618 | Line 635 | char* InitializeFromFile::parseCommentLine(char* readL
635      
636      //push eta into SimInfo::properties which can be
637      //retrieved by integrator later
638 <    //entry_plug->setBoxM( theBoxMat3 );
638 >    
639      DoubleArrayData* etaValue = new DoubleArrayData();
640      etaValue->setID(ETAVALUE_ID);
641      etaValue->setData(eta, 9);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines