--- trunk/src/primitives/Molecule.cpp 2008/01/23 16:38:22 1211 +++ trunk/src/primitives/Molecule.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). */ /** @@ -53,7 +53,7 @@ #include "utils/MemoryUtils.hpp" #include "utils/simError.h" -namespace oopse { +namespace OpenMD { Molecule::Molecule(int stampId, int globalIndex, const std::string& molName) : stampId_(stampId), globalIndex_(globalIndex), moleculeName_(molName) { } @@ -64,6 +64,7 @@ namespace oopse { MemoryUtils::deletePointers(bonds_); MemoryUtils::deletePointers(bends_); MemoryUtils::deletePointers(torsions_); + MemoryUtils::deletePointers(inversions_); MemoryUtils::deletePointers(rigidBodies_); MemoryUtils::deletePointers(cutoffGroups_); MemoryUtils::deletePointers(constraintPairs_); @@ -97,6 +98,13 @@ namespace oopse { torsions_.push_back(torsion); } } + + void Molecule::addInversion(Inversion* inversion) { + if (std::find(inversions_.begin(), inversions_.end(), inversion) == + inversions_.end()) { + inversions_.push_back(inversion); + } + } void Molecule::addRigidBody(RigidBody *rb) { if (std::find(rigidBodies_.begin(), rigidBodies_.end(), rb) == @@ -237,9 +245,11 @@ namespace oopse { Bond* bond; Bend* bend; Torsion* torsion; + Inversion* inversion; Molecule::BondIterator bondIter;; Molecule::BendIterator bendIter; Molecule::TorsionIterator torsionIter; + Molecule::InversionIterator inversionIter; RealType potential = 0.0; @@ -256,10 +266,42 @@ namespace oopse { potential += torsion->getPotential(); } + for (inversion = beginInversion(inversionIter); torsion != NULL; + inversion = nextInversion(inversionIter)) { + potential += inversion->getPotential(); + } + return potential; } + void Molecule::addProperty(GenericData* genData) { + properties_.addProperty(genData); + } + + void Molecule::removeProperty(const std::string& propName) { + properties_.removeProperty(propName); + } + + void Molecule::clearProperties() { + properties_.clearProperties(); + } + + std::vector Molecule::getPropertyNames() { + return properties_.getPropertyNames(); + } + + std::vector Molecule::getProperties() { + return properties_.getProperties(); + } + + GenericData* Molecule::getPropertyByName(const std::string& propName) { + return properties_.getPropertyByName(propName); + } + + + + std::ostream& operator <<(std::ostream& o, Molecule& mol) { o << std::endl; o << "Molecule " << mol.getGlobalIndex() << "has: " << std::endl; @@ -267,6 +309,7 @@ namespace oopse { o << mol.getNBonds() << " bonds" << std::endl; o << mol.getNBends() << " bends" << std::endl; o << mol.getNTorsions() << " torsions" << std::endl; + o << mol.getNInversions() << " inversions" << std::endl; o << mol.getNRigidBodies() << " rigid bodies" << std::endl; o << mol.getNIntegrableObjects() << "integrable objects" << std::endl; o << mol.getNCutoffGroups() << "cutoff groups" << std::endl; @@ -274,4 +317,4 @@ namespace oopse { return o; } -}//end namespace oopse +}//end namespace OpenMD