--- trunk/src/brains/SimCreator.cpp 2014/02/26 14:14:50 1969 +++ trunk/src/brains/SimCreator.cpp 2015/03/05 16:30:23 2069 @@ -64,6 +64,7 @@ #include "brains/ForceField.hpp" #include "utils/simError.h" #include "utils/StringUtils.hpp" +#include "utils/Revision.hpp" #include "math/SeqRandNumGen.hpp" #include "mdParser/MDLexer.hpp" #include "mdParser/MDParser.hpp" @@ -104,7 +105,6 @@ namespace OpenMD { if (worldRank == masterNode) { MPI_Bcast(&mdFileVersion, 1, MPI_INT, masterNode, MPI_COMM_WORLD); - // MPI::COMM_WORLD.Bcast(&mdFileVersion, 1, MPI::INT, masterNode); #endif SimplePreprocessor preprocessor; preprocessor.preprocess(rawMetaDataStream, filename, @@ -113,28 +113,20 @@ namespace OpenMD { #ifdef IS_MPI //broadcasting the stream size streamSize = ppStream.str().size() +1; - MPI_Bcast(&streamSize, 1, MPI_LONG, masterNode, MPI_COMM_WORLD); - MPI_Bcast(static_cast(const_cast(ppStream.str().c_str())), + MPI_Bcast(&streamSize, 1, MPI_INT, masterNode, MPI_COMM_WORLD); + MPI_Bcast(static_cast(const_cast(ppStream.str().c_str())), streamSize, MPI_CHAR, masterNode, MPI_COMM_WORLD); - - // MPI::COMM_WORLD.Bcast(&streamSize, 1, MPI::LONG, masterNode); - // MPI::COMM_WORLD.Bcast(static_cast(const_cast(ppStream.str().c_str())), - // streamSize, MPI::CHAR, masterNode); - } else { MPI_Bcast(&mdFileVersion, 1, MPI_INT, masterNode, MPI_COMM_WORLD); - // MPI::COMM_WORLD.Bcast(&mdFileVersion, 1, MPI::INT, masterNode); //get stream size - MPI_Bcast(&streamSize, 1, MPI_LONG, masterNode, MPI_COMM_WORLD); - // MPI::COMM_WORLD.Bcast(&streamSize, 1, MPI::LONG, masterNode); + MPI_Bcast(&streamSize, 1, MPI_INT, masterNode, MPI_COMM_WORLD); char* buf = new char[streamSize]; assert(buf); //receive file content MPI_Bcast(buf, streamSize, MPI_CHAR, masterNode, MPI_COMM_WORLD); - // MPI::COMM_WORLD.Bcast(buf, streamSize, MPI::CHAR, masterNode); ppStream.str(buf); delete [] buf; @@ -236,7 +228,7 @@ namespace OpenMD { catch (OpenMDException& e) { sprintf(painCave.errMsg, "%s\n", - e.getMessage().c_str()); + e.what()); painCave.isFatal = 1; simError(); } @@ -261,7 +253,6 @@ namespace OpenMD { std::string mdRawData; int metaDataBlockStart = -1; int metaDataBlockEnd = -1; - int i, j; streamoff mdOffset; int mdFileVersion; @@ -272,9 +263,9 @@ namespace OpenMD { version.append("."); version.append(OPENMD_VERSION_MINOR); - std::string svnrev; + std::string svnrev(g_REVISION, strnlen(g_REVISION, 20)); //convert a macro from compiler to a string in c++ - STR_DEFINE(svnrev, SVN_REV ); + // STR_DEFINE(svnrev, SVN_REV ); version.append(" Revision: "); // If there's no SVN revision, just call this the RELEASE revision. if (!svnrev.empty()) { @@ -302,13 +293,13 @@ namespace OpenMD { mdFile_.getline(buffer, bufferSize); ++lineNo; std::string line = trimLeftCopy(buffer); - i = CaseInsensitiveFind(line, "(i) == string::npos) { + std::size_t i = CaseInsensitiveFind(line, "(i) == string::npos) { + if (i == string::npos) { // still no luck! sprintf(painCave.errMsg, "SimCreator: File: %s is not a valid OpenMD file!\n", @@ -343,13 +334,13 @@ namespace OpenMD { std::string line = trimLeftCopy(buffer); if (metaDataBlockStart == -1) { - i = CaseInsensitiveFind(line, ""); + std::size_t i = CaseInsensitiveFind(line, ""); if (i != string::npos) { metaDataBlockStart = lineNo; mdOffset = mdFile_.tellg(); } } else { - i = CaseInsensitiveFind(line, ""); + std::size_t i = CaseInsensitiveFind(line, ""); if (i != string::npos) { metaDataBlockEnd = lineNo; } @@ -382,8 +373,9 @@ namespace OpenMD { for (int i = 0; i < metaDataBlockEnd - metaDataBlockStart - 1; ++i) { mdFile_.getline(buffer, bufferSize); std::string line = trimLeftCopy(buffer); - j = CaseInsensitiveFind(line, "## Last run using OpenMD Version"); - if (static_cast(j) != string::npos) { + std::size_t j = CaseInsensitiveFind(line, + "## Last run using OpenMD Version"); + if (j != string::npos) { foundVersion = true; mdRawData += version; } else { @@ -530,7 +522,6 @@ namespace OpenMD { // condition: MPI_Comm_size( MPI_COMM_WORLD, &nProcessors); - //nProcessors = MPI::COMM_WORLD.Get_size(); if (nProcessors > nGlobalMols) { sprintf(painCave.errMsg, @@ -650,12 +641,11 @@ namespace OpenMD { // Spray out this nonsense to all other processors: MPI_Bcast(&molToProcMap[0], nGlobalMols, MPI_INT, 0, MPI_COMM_WORLD); - // MPI::COMM_WORLD.Bcast(&molToProcMap[0], nGlobalMols, MPI::INT, 0); + } else { // Listen to your marching orders from processor 0: MPI_Bcast(&molToProcMap[0], nGlobalMols, MPI_INT, 0, MPI_COMM_WORLD); - // MPI::COMM_WORLD.Bcast(&molToProcMap[0], nGlobalMols, MPI::INT, 0); } @@ -795,10 +785,18 @@ namespace OpenMD { } } - if (simParams->getOutputElectricField() | simParams->haveElectricField()) { + if (simParams->getOutputElectricField() | + simParams->haveElectricField() | simParams->haveUniformField() | + simParams->haveUniformGradientStrength() | + simParams->haveUniformGradientDirection1() | + simParams->haveUniformGradientDirection2() ) { storageLayout |= DataStorage::dslElectricField; } + if (simParams->getOutputSitePotential() ) { + storageLayout |= DataStorage::dslSitePotential; + } + if (simParams->getOutputFluctuatingCharges()) { storageLayout |= DataStorage::dslFlucQPosition; storageLayout |= DataStorage::dslFlucQVelocity; @@ -835,8 +833,10 @@ namespace OpenMD { int beginBendIndex; int beginTorsionIndex; int beginInversionIndex; +#ifdef IS_MPI int nGlobalAtoms = info->getNGlobalAtoms(); int nGlobalRigidBodies = info->getNGlobalRigidBodies(); +#endif beginAtomIndex = 0; // The rigid body indices begin immediately after the atom indices: @@ -932,9 +932,7 @@ namespace OpenMD { MPI_Allreduce(&globalGroupMembership[0], &tmpGroupMembership[0], nGlobalAtoms, MPI_INT, MPI_SUM, MPI_COMM_WORLD); - // MPI::COMM_WORLD.Allreduce(&globalGroupMembership[0], - // &tmpGroupMembership[0], nGlobalAtoms, - // MPI::INT, MPI::SUM); + info->setGlobalGroupMembership(tmpGroupMembership); #else info->setGlobalGroupMembership(globalGroupMembership); @@ -961,9 +959,6 @@ namespace OpenMD { MPI_Allreduce(&globalMolMembership[0], &tmpMolMembership[0], nGlobalAtoms + nGlobalRigidBodies, MPI_INT, MPI_SUM, MPI_COMM_WORLD); - // MPI::COMM_WORLD.Allreduce(&globalMolMembership[0], &tmpMolMembership[0], - // nGlobalAtoms + nGlobalRigidBodies, - // MPI::INT, MPI::SUM); info->setGlobalMolMembership(tmpMolMembership); #else @@ -983,8 +978,6 @@ namespace OpenMD { std::vector numIntegrableObjectsPerMol(info->getNGlobalMolecules(), 0); MPI_Allreduce(&nIOPerMol[0], &numIntegrableObjectsPerMol[0], info->getNGlobalMolecules(), MPI_INT, MPI_SUM, MPI_COMM_WORLD); - // MPI::COMM_WORLD.Allreduce(&nIOPerMol[0], &numIntegrableObjectsPerMol[0], - // info->getNGlobalMolecules(), MPI::INT, MPI::SUM); #else std::vector numIntegrableObjectsPerMol = nIOPerMol; #endif