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

Comparing branches/development/src/brains/SimCreator.cpp (file contents):
Revision 1601 by gezelter, Thu Aug 4 20:04:35 2011 UTC vs.
Revision 1627 by gezelter, Tue Sep 13 22:05:04 2011 UTC

# Line 76 | Line 76
76   #include "antlr/NoViableAltException.hpp"
77  
78   #ifdef IS_MPI
79 + #include "mpi.h"
80   #include "math/ParallelRandNumGen.hpp"
81   #endif
82  
83   namespace OpenMD {
84    
85 <  Globals* SimCreator::parseFile(std::istream& rawMetaDataStream, const std::string& filename, int startOfMetaDataBlock ){
85 >  Globals* SimCreator::parseFile(std::istream& rawMetaDataStream, const std::string& filename, int mdFileVersion, int startOfMetaDataBlock ){
86      Globals* simParams = NULL;
87      try {
88  
# Line 92 | Line 93 | namespace OpenMD {
93        const int masterNode = 0;
94        int commStatus;
95        if (worldRank == masterNode) {
96 < #endif
97 <                
96 >        commStatus = MPI_Bcast(&mdFileVersion, 1, MPI_INT, masterNode, MPI_COMM_WORLD);
97 > #endif                
98          SimplePreprocessor preprocessor;
99          preprocessor.preprocess(rawMetaDataStream, filename, startOfMetaDataBlock, ppStream);
100                  
# Line 106 | Line 107 | namespace OpenMD {
107              
108                  
109        } else {
110 +
111 +        commStatus = MPI_Bcast(&mdFileVersion, 1, MPI_INT, masterNode, MPI_COMM_WORLD);
112 +
113          //get stream size
114          commStatus = MPI_Bcast(&streamSize, 1, MPI_LONG, masterNode, MPI_COMM_WORLD);  
115  
# Line 229 | Line 233 | namespace OpenMD {
233        simError();
234      }
235  
236 +    simParams->setMDfileVersion(mdFileVersion);
237      return simParams;
238    }
239    
# Line 243 | Line 248 | namespace OpenMD {
248      int metaDataBlockEnd = -1;
249      int i;
250      int mdOffset;
251 +    int mdFileVersion;
252  
253   #ifdef IS_MPI            
254      const int masterNode = 0;
# Line 276 | Line 282 | namespace OpenMD {
282          painCave.isFatal = 1;
283          simError();
284        }
285 +      
286 +      // found the correct opening string, now try to get the file
287 +      // format version number.
288  
289 +      StringTokenizer tokenizer(line, "=<> \t\n\r");
290 +      std::string fileType = tokenizer.nextToken();
291 +      toUpper(fileType);
292 +
293 +      mdFileVersion = 0;
294 +
295 +      if (fileType == "OPENMD") {
296 +        while (tokenizer.hasMoreTokens()) {
297 +          std::string token(tokenizer.nextToken());
298 +          toUpper(token);
299 +          if (token == "VERSION") {
300 +            mdFileVersion = tokenizer.nextTokenAsInt();
301 +            break;
302 +          }
303 +        }
304 +      }
305 +            
306        //scan through the input stream and find MetaData tag        
307        while(mdFile_.getline(buffer, bufferSize)) {
308          ++lineNo;
# Line 332 | Line 358 | namespace OpenMD {
358      std::stringstream rawMetaDataStream(mdRawData);
359  
360      //parse meta-data file
361 <    Globals* simParams = parseFile(rawMetaDataStream, mdFileName, metaDataBlockStart+1);
361 >    Globals* simParams = parseFile(rawMetaDataStream, mdFileName, mdFileVersion,
362 >                                   metaDataBlockStart + 1);
363      
364      //create the force field
365      ForceField * ff = ForceFieldFactory::getInstance()->createForceField(simParams->getForceField());

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines