| 54 |  | #include "types/BondType.hpp" | 
| 55 |  |  | 
| 56 |  | namespace oopse { | 
| 57 | < |  | 
| 57 | > |  | 
| 58 |  | class Bond { | 
| 59 |  | public: | 
| 60 | < | Bond(Atom* atom1, Atom* atom2, BondType* bt) : atom1_(atom1), atom2_(atom2), bondType_(bt) {} | 
| 60 | > | Bond(Atom* atom1, Atom* atom2, BondType* bt) : atom1_(atom1), | 
| 61 | > | atom2_(atom2), | 
| 62 | > | bondType_(bt) {} | 
| 63 |  | virtual ~Bond() {} | 
| 64 |  | void calcForce() { | 
| 65 | < | double len; | 
| 66 | < | double dvdr; | 
| 65 | > | RealType len; | 
| 66 | > | RealType dvdr; | 
| 67 |  | Vector3d r12; | 
| 68 |  | Vector3d force; | 
| 69 | < |  | 
| 69 | > |  | 
| 70 |  | r12 = atom2_->getPos() - atom1_->getPos(); | 
| 71 |  | len = r12.length(); | 
| 72 |  | bondType_->calcForce(len,  potential_, dvdr); | 
| 73 | < |  | 
| 73 | > |  | 
| 74 |  | force = r12 * (-dvdr / len); | 
| 75 | < |  | 
| 75 | > |  | 
| 76 |  | atom1_->addFrc(-force); | 
| 77 |  | atom2_->addFrc(force); | 
| 78 | + |  | 
| 79 | + | atom1_->addParticlePot(potential_); | 
| 80 | + | atom2_->addParticlePot(potential_); | 
| 81 |  | } | 
| 82 | < |  | 
| 83 | < | double getPotential() { | 
| 82 | > |  | 
| 83 | > | RealType getPotential() { | 
| 84 |  | return potential_; | 
| 85 |  | } | 
| 86 | < |  | 
| 86 | > |  | 
| 87 |  | Atom* getAtomA() { | 
| 88 |  | return atom1_; | 
| 89 |  | } | 
| 90 | < |  | 
| 90 | > |  | 
| 91 |  | Atom* getAtomB() { | 
| 92 |  | return atom2_; | 
| 93 |  | } | 
| 94 | < |  | 
| 94 | > |  | 
| 95 |  | BondType* getBondType() { | 
| 96 |  | return bondType_; | 
| 97 |  | } | 
| 98 | < |  | 
| 98 | > |  | 
| 99 |  | private: | 
| 100 | < | double potential_; | 
| 100 | > | RealType potential_; | 
| 101 |  | Atom* atom1_; | 
| 102 |  | Atom* atom2_; | 
| 103 |  | BondType* bondType_; /**< bond type */ | 
| 104 | < |  | 
| 104 | > |  | 
| 105 |  | }; | 
| 101 | – |  | 
| 102 | – |  | 
| 103 | – |  | 
| 106 |  | } //end namespace oopse | 
| 107 |  | #endif //PRIMITIVES_BOND_HPP |