--- branches/development/src/nonbonded/EAM.cpp 2010/10/02 19:53:32 1502 +++ branches/development/src/nonbonded/EAM.cpp 2011/01/05 14:49:05 1536 @@ -347,7 +347,7 @@ namespace OpenMD { return; } - void EAM::calcDensity(DensityData ddat) { + void EAM::calcDensity(DensityData &ddat) { if (!initialized_) initialize(); @@ -363,7 +363,7 @@ namespace OpenMD { return; } - void EAM::calcFunctional(FunctionalData fdat) { + void EAM::calcFunctional(FunctionalData &fdat) { if (!initialized_) initialize(); @@ -377,7 +377,7 @@ namespace OpenMD { } - void EAM::calcForce(InteractionData idat) { + void EAM::calcForce(InteractionData &idat) { if (!initialized_) initialize(); @@ -478,13 +478,36 @@ namespace OpenMD { idat.fshift1 = data1.F->getValueAt( idat.rho1 - rhb ); idat.fshift2 = data1.F->getValueAt( idat.rho2 - rha ); - idat.pot += phab; + idat.pot[3] += phab; - idat.vpair += phab; + idat.vpair[3] += phab; } return; } + + RealType EAM::getSuggestedCutoffRadius(AtomType* at1, AtomType* at2) { + if (!initialized_) initialize(); + + RealType cut = 0.0; + + map::iterator it; + + it = EAMMap.find(at1); + if (it != EAMMap.end()) { + EAMAtomData data1 = (*it).second; + cut = data1.rcut; + } + + it = EAMMap.find(at2); + if (it != EAMMap.end()) { + EAMAtomData data2 = (*it).second; + if (data2.rcut > cut) + cut = data2.rcut; + } + + return cut; + } }