| 52 |
|
|
| 53 |
|
namespace OpenMD { |
| 54 |
|
|
| 55 |
< |
Morse::Morse() : name_("Morse"), initialized_(false), forceField_(NULL) {} |
| 55 |
> |
Morse::Morse() : initialized_(false), forceField_(NULL), name_("Morse") {} |
| 56 |
|
|
| 57 |
|
void Morse::initialize() { |
| 58 |
|
|
| 139 |
|
void Morse::calcForce(InteractionData &idat) { |
| 140 |
|
|
| 141 |
|
if (!initialized_) initialize(); |
| 142 |
< |
|
| 142 |
> |
|
| 143 |
> |
|
| 144 |
|
MorseInteractionData &mixer = MixingMap[Mtids[idat.atid1]][Mtids[idat.atid2]]; |
| 145 |
|
|
| 146 |
|
RealType myPot = 0.0; |
| 172 |
|
|
| 173 |
|
switch(variant) { |
| 174 |
|
case mtShifted : { |
| 174 |
– |
|
| 175 |
|
myPot = De * (expfnc2 - 2.0 * expfnc); |
| 176 |
|
myDeriv = 2.0 * De * beta * (expfnc - expfnc2); |
| 177 |
|
|
| 190 |
|
break; |
| 191 |
|
} |
| 192 |
|
case mtRepulsive : { |
| 193 |
– |
|
| 193 |
|
myPot = De * expfnc2; |
| 194 |
|
myDeriv = -2.0 * De * beta * expfnc2; |
| 195 |
|
|
| 213 |
|
} |
| 214 |
|
} |
| 215 |
|
|
| 217 |
– |
|
| 216 |
|
RealType pot_temp = *(idat.vdwMult) * (myPot - myPotC); |
| 217 |
|
*(idat.vpair) += pot_temp; |
| 218 |
|
|
| 219 |
|
RealType dudr = *(idat.sw) * *(idat.vdwMult) * (myDeriv - myDerivC); |
| 222 |
– |
|
| 220 |
|
|
| 221 |
|
(*(idat.pot))[VANDERWAALS_FAMILY] += *(idat.sw) * pot_temp; |
| 222 |
|
*(idat.f1) = *(idat.d) * dudr / *(idat.rij); |
| 223 |
< |
|
| 223 |
> |
|
| 224 |
|
return; |
| 225 |
|
} |
| 226 |
|
|