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 1131 by tim, Thu Apr 22 21:33:55 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
164  
165    // MPI Section of code..........
166   #else //IS_MPI
# 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 +
224      parseErr = parseCommentLine( read_buffer, simnfo);
225  
226      if( parseErr != NULL ){
# Line 256 | Line 258 | void InitializeFromFile :: readInit( SimInfo* the_simn
258            
259            if(haveError) nodeZeroError();
260  
261 <          parseDumpLine(read_buffer, integrableObjects[i]);
261 >          parseDumpLine(read_buffer, integrableObjects[j]);
262            
263         }
264  
# Line 265 | Line 267 | void InitializeFromFile :: readInit( SimInfo* the_simn
267        else{
268        //molecule belongs to slave nodes
269  
270 <        MPI_Recv(&nCurObj, 1, MPI_INT, 0,
270 >        MPI_Recv(&nCurObj, 1, MPI_INT, which_node,
271                 TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus);
272 <      
273 <       for(j=0; j < integrableObjects.size(); j++){
272 >
273 >       for(j=0; j < nCurObj; j++){
274          
275            eof_test = fgets(read_buffer, sizeof(read_buffer), c_in_file);
276            if(eof_test == NULL){
# Line 285 | Line 287 | void InitializeFromFile :: readInit( SimInfo* the_simn
287  
288              MPI_Send(read_buffer, BUFFERSIZE, MPI_CHAR, which_node,
289                        TAKE_THIS_TAG_CHAR, MPI_COMM_WORLD);
290 <          
290 >
291         }
292  
293        }
# Line 295 | Line 297 | void InitializeFromFile :: readInit( SimInfo* the_simn
297    }
298    else{
299    //actions taken at slave nodes
300 +
301 +    MPI_Bcast(read_buffer, BUFFERSIZE, MPI_CHAR, 0, MPI_COMM_WORLD);
302 +
303 +    parseErr = parseCommentLine( read_buffer, simnfo);
304 +
305 +    if( parseErr != NULL ){
306 +      strcpy( painCave.errMsg, parseErr );
307 +      haveError = 1;
308 +      simError();
309 +    }
310 +  
311      for (i=0 ; i < mpiSim->getTotNmol(); i++) {
312        which_node = MolToProcMap[i];
313        
# Line 313 | Line 326 | void InitializeFromFile :: readInit( SimInfo* the_simn
326  
327          nCurObj = integrableObjects.size();
328          
329 <        MPI_Recv(&nCurObj, 1, MPI_INT, 0,
330 <                        TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus);
329 >        MPI_Send(&nCurObj, 1, MPI_INT, 0,
330 >                        TAKE_THIS_TAG_INT, MPI_COMM_WORLD);
331  
332          for(j = 0; j < integrableObjects.size(); j++){
333  
# Line 618 | Line 631 | char* InitializeFromFile::parseCommentLine(char* readL
631      
632      //push eta into SimInfo::properties which can be
633      //retrieved by integrator later
634 <    //entry_plug->setBoxM( theBoxMat3 );
634 >    
635      DoubleArrayData* etaValue = new DoubleArrayData();
636      etaValue->setID(ETAVALUE_ID);
637      etaValue->setData(eta, 9);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines