ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/primitives/Molecule.hpp
(Generate patch)

Comparing trunk/src/primitives/Molecule.hpp (file contents):
Revision 1908 by gezelter, Fri Jul 19 21:25:45 2013 UTC vs.
Revision 2052 by gezelter, Fri Jan 9 19:06:35 2015 UTC

# Line 63 | Line 63
63   #include "primitives/CutoffGroup.hpp"
64   #include "utils/PropertyMap.hpp"
65  
66 +
67   namespace OpenMD{
68  
69    class Constraint;
70 <
70 >  
71    /**
72     * @class Molecule Molecule.hpp "primitives/Molecule.hpp"
73     * @brief
# Line 74 | Line 75 | namespace OpenMD{
75    class Molecule {
76    public:
77  
78 +    struct HBondDonor {
79 +      Atom* donorAtom;
80 +      Atom* donatedHydrogen;
81 +    };
82 +
83      typedef std::vector<Atom*>::iterator AtomIterator;
84      typedef std::vector<Bond*>::iterator BondIterator;
85      typedef std::vector<Bend*>::iterator BendIterator;
# Line 85 | Line 91 | namespace OpenMD{
91      typedef std::vector<ConstraintPair*>::iterator ConstraintPairIterator;
92      typedef std::vector<ConstraintElem*>::iterator ConstraintElemIterator;
93      typedef std::vector<Atom*>::iterator FluctuatingChargeIterator;
94 <    
94 >    typedef std::vector<HBondDonor*>::iterator HBondDonorIterator;
95 >    typedef std::vector<Atom*>::iterator HBondAcceptorIterator;
96 >
97      Molecule(int stampId, int globalIndex, const std::string& molName, int region);
98      virtual ~Molecule();
99  
# Line 209 | Line 217 | namespace OpenMD{
217      unsigned int getNFluctuatingCharges() {
218        return fluctuatingCharges_.size();
219      }
220 +    /** Returns the total number of Hydrogen Bond donors in this molecule */
221 +    unsigned int getNHBondDonors() {
222 +      return hBondDonors_.size();
223 +    }
224 +    
225 +    /** Returns the total number of Hydrogen Bond acceptors in this molecule */
226 +    unsigned int getNHBondAcceptors() {
227 +      return hBondAcceptors_.size();
228 +    }
229  
230      Atom* getAtomAt(unsigned int i) {
231        assert(i < atoms_.size());
# Line 329 | Line 346 | namespace OpenMD{
346      Atom* nextFluctuatingCharge(std::vector<Atom*>::iterator& i) {
347        ++i;
348        return (i == fluctuatingCharges_.end()) ? NULL : *i;    
349 +    }
350 +
351 +    HBondDonor* beginHBondDonor(std::vector<HBondDonor*>::iterator& i) {
352 +      i = hBondDonors_.begin();
353 +      return (i == hBondDonors_.end()) ? NULL : *i;
354 +    }
355 +    
356 +    HBondDonor* nextHBondDonor(std::vector<HBondDonor*>::iterator& i) {
357 +      ++i;
358 +      return (i == hBondDonors_.end()) ? NULL : *i;    
359 +    }
360 +    
361 +    Atom* beginHBondAcceptor(std::vector<Atom*>::iterator& i) {
362 +      i = hBondAcceptors_.begin();
363 +      return (i == hBondAcceptors_.end()) ? NULL : *i;
364      }
365 +    
366 +    Atom* nextHBondAcceptor(std::vector<Atom*>::iterator& i) {
367 +      ++i;
368 +      return (i == hBondAcceptors_.end()) ? NULL : *i;    
369 +    }
370  
371          
372      /**
# Line 341 | Line 378 | namespace OpenMD{
378      /** get total mass of this molecule */        
379      RealType getMass();
380      
381 <    /** return the center of mass of this molecule */
381 >    /**
382 >     * Returns the current center of mass position of this molecule.
383 >     *
384 >     * @return the center of mass position of this molecule.
385 >     */    
386      Vector3d getCom();
387      
388 +    /**
389 +     * Returns the center of mass position of this molecule in
390 +     * specified snapshot
391 +     *
392 +     * @return the center of mass position of this molecule
393 +     * @param snapshotNo
394 +     */    
395 +    Vector3d getCom(int snapshotNo);
396 +
397 +    
398      /** Moves the center of this molecule */
399      void moveCom(const Vector3d& delta);
400      
# Line 409 | Line 460 | namespace OpenMD{
460      std::vector<ConstraintPair*> constraintPairs_;
461      std::vector<ConstraintElem*> constraintElems_;
462      std::vector<Atom*> fluctuatingCharges_;
463 +    std::vector<HBondDonor*> hBondDonors_;
464 +    std::vector<Atom*> hBondAcceptors_;
465 +    
466      int stampId_;
467      int region_;
468      std::string moleculeName_;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines