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

Comparing trunk/src/brains/SimCreator.cpp (file contents):
Revision 1801 by gezelter, Mon Oct 1 18:21:15 2012 UTC vs.
Revision 1810 by gezelter, Thu Nov 8 14:23:43 2012 UTC

# Line 255 | Line 255 | namespace OpenMD {
255      std::string mdRawData;
256      int metaDataBlockStart = -1;
257      int metaDataBlockEnd = -1;
258 <    int i;
258 >    int i, j;
259      streamoff mdOffset(0);
260      int mdFileVersion;
261  
262 +    // Create a string for embedding the version information in the MetaData
263 +    std::string version;
264 +    version.assign("## Last run using OpenMD Version: ");
265 +    version.append(OPENMD_VERSION_MAJOR);
266 +    version.append(".");
267 +    version.append(OPENMD_VERSION_MINOR);
268  
269 +    std::string svnrev;
270 +    //convert a macro from compiler to a string in c++
271 +    STR_DEFINE(svnrev, SVN_REV );
272 +    version.append(" Revision: ");
273 +    // If there's no SVN revision, just call this the RELEASE revision.
274 +    if (!svnrev.empty()) {
275 +      version.append(svnrev);
276 +    } else {
277 +      version.append("RELEASE");
278 +    }
279 +  
280   #ifdef IS_MPI            
281      const int masterNode = 0;
282      if (worldRank == masterNode) {
# Line 354 | Line 371 | namespace OpenMD {
371  
372        mdRawData.clear();
373  
374 +      bool foundVersion = false;
375 +
376        for (int i = 0; i < metaDataBlockEnd - metaDataBlockStart - 1; ++i) {
377          mdFile_.getline(buffer, bufferSize);
378 <        mdRawData += buffer;
378 >        std::string line = trimLeftCopy(buffer);
379 >        j = CaseInsensitiveFind(line, "## Last run using OpenMD Version");
380 >        if (static_cast<size_t>(j) != string::npos) {
381 >          foundVersion = true;
382 >          mdRawData += version;
383 >        } else {
384 >          mdRawData += buffer;
385 >        }
386          mdRawData += "\n";
387        }
388 <
388 >      
389 >      if (!foundVersion) mdRawData += version + "\n";
390 >      
391        mdFile_.close();
392  
393   #ifdef IS_MPI
# Line 787 | Line 815 | namespace OpenMD {
815      int beginRigidBodyIndex;
816      int beginCutoffGroupIndex;
817      int nGlobalAtoms = info->getNGlobalAtoms();
818 +    int nGlobalRigidBodies = info->getNGlobalRigidBodies();
819      
820      beginAtomIndex = 0;
821      //rigidbody's index begins right after atom's
# Line 862 | Line 891 | namespace OpenMD {
891   #endif
892      
893      //fill molMembership
894 <    std::vector<int> globalMolMembership(info->getNGlobalAtoms(), 0);
894 >    std::vector<int> globalMolMembership(info->getNGlobalAtoms() +
895 >                                         info->getNGlobalRigidBodies(), 0);
896      
897 <    for(mol = info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) {
897 >    for(mol = info->beginMolecule(mi); mol != NULL;
898 >        mol = info->nextMolecule(mi)) {
899        for(atom = mol->beginAtom(ai); atom != NULL; atom = mol->nextAtom(ai)) {
900          globalMolMembership[atom->getGlobalIndex()] = mol->getGlobalIndex();
901 +      }
902 +      for (rb = mol->beginRigidBody(ri); rb != NULL;
903 +           rb = mol->nextRigidBody(ri)) {
904 +        globalMolMembership[rb->getGlobalIndex()] = mol->getGlobalIndex();
905        }
906      }
907      
908   #ifdef IS_MPI
909 <    std::vector<int> tmpMolMembership(info->getNGlobalAtoms(), 0);
909 >    std::vector<int> tmpMolMembership(info->getNGlobalAtoms() +
910 >                                      info->getNGlobalRigidBodies(), 0);
911      MPI::COMM_WORLD.Allreduce(&globalMolMembership[0], &tmpMolMembership[0],
912 <                              nGlobalAtoms,
912 >                              nGlobalAtoms + nGlobalRigidBodies,
913                                MPI::INT, MPI::SUM);
914      
915      info->setGlobalMolMembership(tmpMolMembership);
# Line 885 | Line 921 | namespace OpenMD {
921      // here the molecules are listed by their global indices.
922  
923      std::vector<int> nIOPerMol(info->getNGlobalMolecules(), 0);
924 <    for (mol = info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) {
924 >    for (mol = info->beginMolecule(mi); mol != NULL;
925 >         mol = info->nextMolecule(mi)) {
926        nIOPerMol[mol->getGlobalIndex()] = mol->getNIntegrableObjects();      
927      }
928      
# Line 906 | Line 943 | namespace OpenMD {
943      }
944      
945      std::vector<StuntDouble*> IOIndexToIntegrableObject(info->getNGlobalIntegrableObjects(), (StuntDouble*)NULL);
946 <    for (mol = info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) {
946 >    for (mol = info->beginMolecule(mi); mol != NULL;
947 >         mol = info->nextMolecule(mi)) {
948        int myGlobalIndex = mol->getGlobalIndex();
949        int globalIO = startingIOIndexForMol[myGlobalIndex];
950        for (StuntDouble* sd = mol->beginIntegrableObject(ioi); sd != NULL;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines