ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/nonbonded/LJ.cpp
(Generate patch)

Comparing branches/development/src/nonbonded/LJ.cpp (file contents):
Revision 1471 by gezelter, Mon Jul 19 18:59:59 2010 UTC vs.
Revision 1476 by gezelter, Wed Jul 21 18:31:05 2010 UTC

# Line 107 | Line 107 | namespace OpenMD {
107    }
108  
109    RealType LJ::getSigma(int atid) {
110 +    if (!initialized_) initialize();
111      std::map<int, AtomType*> :: const_iterator it;
112      it = LJMap.find(atid);
113      if (it == LJMap.end()) {
# Line 142 | Line 143 | namespace OpenMD {
143    }
144  
145    RealType LJ::getEpsilon(int atid) {    
146 +    if (!initialized_) initialize();
147      std::map<int, AtomType*> :: const_iterator it;
148      it = LJMap.find(atid);
149      if (it == LJMap.end()) {
# Line 164 | Line 166 | namespace OpenMD {
166    }
167  
168    void LJ::initialize() {    
169 <    ForceField::AtomTypeContainer atomTypes = forceField_->getAtomTypes();
169 >    ForceField::AtomTypeContainer* atomTypes = forceField_->getAtomTypes();
170      ForceField::AtomTypeContainer::MapTypeIterator i;
171      AtomType* at;
172  
173 <    for (at = atomTypes.beginType(i); at != NULL;
174 <         at = atomTypes.nextType(i)) {
173 >    for (at = atomTypes->beginType(i); at != NULL;
174 >         at = atomTypes->nextType(i)) {
175        
176        if (at->isLennardJones())
177          addType(at);
178      }
179  
180 <    ForceField::NonBondedInteractionTypeContainer nbiTypes = forceField_->getNonBondedInteractionTypes();
180 >    ForceField::NonBondedInteractionTypeContainer* nbiTypes = forceField_->getNonBondedInteractionTypes();
181      ForceField::NonBondedInteractionTypeContainer::MapTypeIterator j;
182      NonBondedInteractionType* nbt;
183  
184 <    for (nbt = nbiTypes.beginType(j); nbt != NULL;
185 <         nbt = nbiTypes.nextType(j)) {
184 >    for (nbt = nbiTypes->beginType(j); nbt != NULL;
185 >         nbt = nbiTypes->nextType(j)) {
186        
187        if (nbt->isLennardJones()) {
188          
# Line 228 | Line 230 | namespace OpenMD {
230  
231      // add it to the map:
232      AtomTypeProperties atp = atomType->getATP();    
233 <    std::pair<std::map<int,AtomType*>::iterator,bool> ret;
233 >
234 >    std::pair<std::map<int,AtomType*>::iterator,bool> ret;    
235      ret = LJMap.insert( std::pair<int, AtomType*>(atp.ident, atomType) );
236      if (ret.second == false) {
237        sprintf( painCave.errMsg,
# Line 285 | Line 288 | namespace OpenMD {
288      }    
289    }
290  
291 <  void LJ::calcForce(AtomType* at1, AtomType* at2, Vector3d d, RealType rij,
292 <                     RealType r2, RealType rcut, RealType sw, RealType vdwMult,
293 <                     RealType vpair, RealType pot, Vector3d f1) {
291 >  void LJ::calcForce(AtomType* at1, AtomType* at2, Vector3d d,
292 >                     RealType rij, RealType r2, RealType rcut, RealType sw,
293 >                     RealType vdwMult, RealType &vpair, RealType &pot,
294 >                     Vector3d &f1) {
295  
296      if (!initialized_) initialize();
297      
# Line 304 | Line 308 | namespace OpenMD {
308      RealType sigmai = mixer.sigmai;
309      RealType epsilon = mixer.epsilon;
310      
311 +
312      ros = rij * sigmai;
313  
314      getLJfunc(ros, myPot, myDeriv);
# Line 330 | Line 335 | namespace OpenMD {
335      f1 = d * dudr / rij;
336  
337      return;
338 +
339    }
340  
341    void LJ::do_lj_pair(int *atid1, int *atid2, RealType *d, RealType *rij,
# Line 347 | Line 353 | namespace OpenMD {
353      
354      calcForce(atype1, atype2, disp, *rij, *r2, *rcut, *sw, *vdwMult, *vpair,
355                *pot, frc);
356 +      
357 +    f1[0] = frc.x();
358 +    f1[1] = frc.y();
359 +    f1[2] = frc.z();
360 +
361      return;    
362    }
363    
364 <  void LJ::getLJfunc(const RealType r, RealType pot, RealType deriv) {
364 >  void LJ::getLJfunc(RealType r, RealType &pot, RealType &deriv) {
365 >
366      RealType ri = 1.0 / r;
367      RealType ri2 = ri * ri;
368      RealType ri6 = ri2 * ri2 * ri2;
369      RealType ri7 = ri6 * ri;
370      RealType ri12 = ri6 * ri6;
371      RealType ri13 = ri12 * ri;
372 <
372 >    
373      pot = 4.0 * (ri12 - ri6);
374      deriv = 24.0 * (ri7 - 2.0 * ri13);
375 +
376      return;
377    }
378 +  
379  
366
380    void LJ::setLJDefaultCutoff(RealType *thisRcut, int *sP, int *sF) {
381      shiftedPot_ = (bool)(*sP);
382      shiftedFrc_ = (bool)(*sF);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines