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

Comparing branches/development/src/nonbonded/GB.cpp (file contents):
Revision 1502 by gezelter, Sat Oct 2 19:53:32 2010 UTC vs.
Revision 1549 by gezelter, Wed Apr 27 18:38:15 2011 UTC

# Line 263 | Line 263 | namespace OpenMD {
263      }      
264    }
265    
266 <  void GB::calcForce(InteractionData idat) {
266 >  void GB::calcForce(InteractionData &idat) {
267  
268      if (!initialized_) initialize();
269      
270 <    pair<AtomType*, AtomType*> key = make_pair(idat.atype1, idat.atype2);
271 <    GBInteractionData mixer = MixingMap[key];
270 >    GBInteractionData mixer = MixingMap[idat.atypes];
271  
272      RealType sigma0 = mixer.sigma0;
273      RealType dw     = mixer.dw;
# Line 285 | Line 284 | namespace OpenMD {
284  
285      RealType a, b, g;
286  
287 <    bool i_is_LJ = idat.atype1->isLennardJones();
288 <    bool j_is_LJ = idat.atype2->isLennardJones();
287 >    bool i_is_LJ = idat.atypes.first->isLennardJones();
288 >    bool j_is_LJ = idat.atypes.second->isLennardJones();
289  
290      if (i_is_LJ) {
291        a = 0.0;
# Line 357 | Line 356 | namespace OpenMD {
356      Vector3d rxu2 = cross(idat.d, ul2);
357      Vector3d uxu = cross(ul1, ul2);
358      
359 <    idat.pot += U*idat.sw;
359 >    idat.pot[0] += U*idat.sw;
360      idat.f1 += dUdr * rhat + dUda * ul1 + dUdb * ul2;    
361      idat.t1 += dUda * rxu1 - dUdg * uxu;
362      idat.t2 += dUdb * rxu2 - dUdg * uxu;
363      idat.vpair += U*idat.sw;
364  
365      return;
366 +
367 +  }
368 +
369 +  RealType GB::getSuggestedCutoffRadius(pair<AtomType*, AtomType*> atypes) {
370 +    if (!initialized_) initialize();  
371 +
372 +    RealType cut = 0.0;
373 +
374 +    if (atypes.first->isGayBerne()) {
375 +      GayBerneParam gb1 = getGayBerneParam(atypes.first);
376 +      RealType d1 = gb1.GB_d;
377 +      RealType l1 = gb1.GB_l;
378 +      // sigma is actually sqrt(2)*l  for prolate ellipsoids
379 +      cut = max(cut, 2.5 * sqrt(2.0) * max(d1, l1));
380 +    } else if (atypes.first->isLennardJones()) {
381 +      cut = max(cut, 2.5 * getLJSigma(atypes.first));
382 +    }
383  
384 +    if (atypes.second->isGayBerne()) {
385 +      GayBerneParam gb2 = getGayBerneParam(atypes.second);
386 +      RealType d2 = gb2.GB_d;
387 +      RealType l2 = gb2.GB_l;
388 +      cut = max(cut, 2.5 * sqrt(2.0) * max(d2, l2));
389 +    } else if (atypes.second->isLennardJones()) {
390 +      cut = max(cut, 2.5 * getLJSigma(atypes.second));
391 +    }
392 +  
393 +    return cut;
394    }
395   }
396  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines