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

Comparing trunk/src/primitives/Bond.hpp (file contents):
Revision 1952 by gezelter, Sun Jun 16 15:15:42 2013 UTC vs.
Revision 1953 by gezelter, Thu Dec 5 18:19:26 2013 UTC

# Line 51 | Line 51
51   #ifndef PRIMITIVES_BOND_HPP
52   #define PRIMITIVES_BOND_HPP
53  
54 + #include "primitives/ShortRangeInteraction.hpp"
55   #include "primitives/Atom.hpp"
56   #include "types/BondType.hpp"
57  
58   namespace OpenMD {
59    
60 <  class Bond {
60 >  class Bond : public ShortRangeInteraction {
61    public:
62 <    Bond(Atom* atom1, Atom* atom2, BondType* bt) : atom1_(atom1),
63 <                                                   atom2_(atom2),
64 <                                                   bondType_(bt) {}
62 >    Bond(Atom* atom1, Atom* atom2, BondType* bt) : ShortRangeInteraction(),
63 >                                                   bondType_(bt) {
64 >      atoms_.resize(2);
65 >      atoms_[0] = atom1;
66 >      atoms_[1] = atom2;
67 >    }
68      virtual ~Bond() {}
69      void calcForce(bool doParticlePot) {
70        RealType len;
# Line 68 | Line 72 | namespace OpenMD {
72        Vector3d r12;
73        Vector3d force;
74        
75 <      r12 = atom2_->getPos() - atom1_->getPos();
75 >      r12 = atoms_[1]->getPos() - atoms_[0]->getPos();
76        len = r12.length();            
77        bondType_->calcForce(len,  potential_, dvdr);
78        
79        force = r12 * (-dvdr / len);
80  
81 <      atom1_->addFrc(-force);
82 <      atom2_->addFrc(force);
81 >      atoms_[0]->addFrc(-force);
82 >      atoms_[1]->addFrc(force);
83        if (doParticlePot) {
84 <        atom1_->addParticlePot(potential_);
85 <        atom2_->addParticlePot(potential_);
84 >        atoms_[0]->addParticlePot(potential_);
85 >        atoms_[1]->addParticlePot(potential_);
86        }
87      }
88      
89 +    RealType getValue(int snap) {
90 +      Vector3d r12 = atoms_[1]->getPos(snap) - atoms_[0]->getPos(snap);
91 +      return r12.length();            
92 +    }
93 +
94      RealType getPotential() {
95        return potential_;
96      }
97      
98      Atom* getAtomA() {
99 <      return atom1_;
99 >      return atoms_[0];
100      }
101      
102      Atom* getAtomB() {
103 <      return atom2_;
103 >      return atoms_[1];
104      }
105      
106      BondType* getBondType() {
107        return bondType_;
108      }
109 +
110 +    virtual std::string getName() { return name_;}        
111 +    /** Sets the name of this bond for selections */
112 +    virtual void setName(const std::string& name) { name_ = name; }
113 +
114 +    void accept(BaseVisitor* v) {
115 +      v->visit(this);
116 +    }    
117      
118    private:
119      RealType potential_;
103    Atom* atom1_;
104    Atom* atom2_;        
120      BondType* bondType_; /**< bond type */
121 <    
121 >    std::string name_;
122 >
123    };    
124   } //end namespace OpenMD
125   #endif //PRIMITIVES_BOND_HPP

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines