--- trunk/src/brains/SimCreator.cpp 2008/09/10 18:11:32 1287 +++ trunk/src/brains/SimCreator.cpp 2009/11/25 20:02:06 1390 @@ -6,19 +6,10 @@ * redistribute this software in source and binary code form, provided * that the following conditions are met: * - * 1. Acknowledgement of the program authors must be made in any - * publication of scientific results based in part on use of the - * program. An acceptable form of acknowledgement is citation of - * the article in which the program was described (Matthew - * A. Meineke, Charles F. Vardeman II, Teng Lin, Christopher - * J. Fennell and J. Daniel Gezelter, "OOPSE: An Object-Oriented - * Parallel Simulation Engine for Molecular Dynamics," - * J. Comput. Chem. 26, pp. 252-271 (2005)) - * - * 2. Redistributions of source code must retain the above copyright + * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * - * 3. Redistributions in binary form must reproduce the above copyright + * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the * distribution. @@ -37,6 +28,15 @@ * arising out of the use of or inability to use software, even if the * University of Notre Dame has been advised of the possibility of * such damages. + * + * SUPPORT OPEN SCIENCE! If you use OpenMD or its source code in your + * research, please cite the appropriate papers when you publish your + * work. Good starting points are: + * + * [1] Meineke, et al., J. Comp. Chem. 26, 252-271 (2005). + * [2] Fennell & Gezelter, J. Chem. Phys. 124, 234104 (2006). + * [3] Sun, Lin & Gezelter, J. Chem. Phys. 128, 24107 (2008). + * [4] Vardeman & Gezelter, in progress (2009). */ /** @@ -79,7 +79,7 @@ #include "math/ParallelRandNumGen.hpp" #endif -namespace oopse { +namespace OpenMD { Globals* SimCreator::parseFile(std::istream& rawMetaDataStream, const std::string& filename, int startOfMetaDataBlock ){ Globals* simParams = NULL; @@ -108,7 +108,7 @@ namespace oopse { } else { //get stream size commStatus = MPI_Bcast(&streamSize, 1, MPI_LONG, masterNode, MPI_COMM_WORLD); - + char* buf = new char[streamSize]; assert(buf); @@ -116,7 +116,7 @@ namespace oopse { commStatus = MPI_Bcast(buf, streamSize, MPI_CHAR, masterNode, MPI_COMM_WORLD); ppStream.str(buf); - delete buf; + delete [] buf; } #endif @@ -214,7 +214,7 @@ namespace oopse { painCave.isFatal = 1; simError(); } - catch (OOPSEException& e) { + catch (OpenMDException& e) { sprintf(painCave.errMsg, "%s\n", e.getMessage().c_str()); @@ -262,10 +262,16 @@ namespace oopse { mdFile_.getline(buffer, bufferSize); ++lineNo; std::string line = trimLeftCopy(buffer); - i = CaseInsensitiveFind(line, "(i) == string::npos) { + // try the older file strings to see if that works: + i = CaseInsensitiveFind(line, "(i) == string::npos) { + // still no luck! sprintf(painCave.errMsg, - "SimCreator: File: %s is not an OOPSE file!\n", + "SimCreator: File: %s is not a valid OpenMD file!\n", mdFileName.c_str()); painCave.isFatal = 1; simError(); @@ -471,7 +477,7 @@ namespace oopse { "\tthe number of molecules. This will not result in a \n" "\tusable division of atoms for force decomposition.\n" "\tEither try a smaller number of processors, or run the\n" - "\tsingle-processor version of OOPSE.\n", nProcessors, nGlobalMols); + "\tsingle-processor version of OpenMD.\n", nProcessors, nGlobalMols); painCave.isFatal = 1; simError(); @@ -722,7 +728,7 @@ namespace oopse { // to get the full globalGroupMembership array (We think). // This would be prettier if we could use MPI_IN_PLACE like the MPI-2 // docs said we could. - std::vector tmpGroupMembership(nGlobalAtoms, 0); + std::vector tmpGroupMembership(info->getNGlobalAtoms(), 0); MPI_Allreduce(&globalGroupMembership[0], &tmpGroupMembership[0], nGlobalAtoms, MPI_INT, MPI_SUM, MPI_COMM_WORLD); info->setGlobalGroupMembership(tmpGroupMembership); @@ -734,14 +740,13 @@ namespace oopse { std::vector globalMolMembership(info->getNGlobalAtoms(), 0); for(mol = info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) { - for(atom = mol->beginAtom(ai); atom != NULL; atom = mol->nextAtom(ai)) { globalMolMembership[atom->getGlobalIndex()] = mol->getGlobalIndex(); } } #ifdef IS_MPI - std::vector tmpMolMembership(nGlobalAtoms, 0); + std::vector tmpMolMembership(info->getNGlobalAtoms(), 0); MPI_Allreduce(&globalMolMembership[0], &tmpMolMembership[0], nGlobalAtoms, MPI_INT, MPI_SUM, MPI_COMM_WORLD); @@ -767,28 +772,28 @@ namespace oopse { std::vector numIntegrableObjectsPerMol = nIOPerMol; #endif - std::vector startingIOIndexForMol(info->getNGlobalMolecules()); - -int startingIndex = 0; - for (int i = 0; i < info->getNGlobalMolecules(); i++) { - startingIOIndexForMol[i] = startingIndex; - startingIndex += numIntegrableObjectsPerMol[i]; - } - - std::vector IOIndexToIntegrableObject(info->getNGlobalIntegrableObjects(), (StuntDouble*)NULL); - for (mol = info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) { + std::vector startingIOIndexForMol(info->getNGlobalMolecules()); + + int startingIndex = 0; + for (int i = 0; i < info->getNGlobalMolecules(); i++) { + startingIOIndexForMol[i] = startingIndex; + startingIndex += numIntegrableObjectsPerMol[i]; + } + + std::vector IOIndexToIntegrableObject(info->getNGlobalIntegrableObjects(), (StuntDouble*)NULL); + for (mol = info->beginMolecule(mi); mol != NULL; mol = info->nextMolecule(mi)) { int myGlobalIndex = mol->getGlobalIndex(); int globalIO = startingIOIndexForMol[myGlobalIndex]; for (StuntDouble* integrableObject = mol->beginIntegrableObject(ioi); integrableObject != NULL; integrableObject = mol->nextIntegrableObject(ioi)) { - integrableObject->setGlobalIntegrableObjectIndex(globalIO); - IOIndexToIntegrableObject[globalIO] = integrableObject; - globalIO++; + integrableObject->setGlobalIntegrableObjectIndex(globalIO); + IOIndexToIntegrableObject[globalIO] = integrableObject; + globalIO++; } } - - info->setIOIndexToIntegrableObject(IOIndexToIntegrableObject); - + + info->setIOIndexToIntegrableObject(IOIndexToIntegrableObject); + } void SimCreator::loadCoordinates(SimInfo* info, const std::string& mdFileName) { @@ -814,6 +819,6 @@ int startingIndex = 0; info->getSnapshotManager()->advance(); } -} //end namespace oopse +} //end namespace OpenMD