| 51 |
|
|
| 52 |
|
namespace OpenMD { |
| 53 |
|
|
| 54 |
< |
Morse::Morse() : name_("Morse"), initialized_(false), forceField_(NULL), |
| 55 |
< |
shiftedPot_(false), shiftedFrc_(false) {} |
| 54 |
> |
Morse::Morse() : name_("Morse"), initialized_(false), forceField_(NULL) {} |
| 55 |
|
|
| 56 |
|
void Morse::initialize() { |
| 57 |
|
|
| 170 |
|
RealType expfncC = 0.0; |
| 171 |
|
RealType expfnc2C = 0.0; |
| 172 |
|
|
| 173 |
< |
if (Morse::shiftedPot_ || Morse::shiftedFrc_) { |
| 173 |
> |
if (idat.shiftedPot || idat.shiftedForce) { |
| 174 |
|
exptC = -beta*( *(idat.rcut) - Re); |
| 175 |
|
expfncC = exp(exptC); |
| 176 |
|
expfnc2C = expfncC*expfncC; |
| 183 |
|
myPot = De * (expfnc2 - 2.0 * expfnc); |
| 184 |
|
myDeriv = 2.0 * De * beta * (expfnc - expfnc2); |
| 185 |
|
|
| 186 |
< |
if (Morse::shiftedPot_) { |
| 186 |
> |
if (idat.shiftedPot) { |
| 187 |
|
myPotC = De * (expfnc2C - 2.0 * expfncC); |
| 188 |
|
myDerivC = 0.0; |
| 189 |
< |
} else if (Morse::shiftedFrc_) { |
| 189 |
> |
} else if (idat.shiftedForce) { |
| 190 |
|
myPotC = De * (expfnc2C - 2.0 * expfncC); |
| 191 |
|
myDerivC = 2.0 * De * beta * (expfnc2C - expfnc2C); |
| 192 |
|
myPotC += myDerivC * ( *(idat.rij) - *(idat.rcut) ); |
| 202 |
|
myPot = De * expfnc2; |
| 203 |
|
myDeriv = -2.0 * De * beta * expfnc2; |
| 204 |
|
|
| 205 |
< |
if (Morse::shiftedPot_) { |
| 205 |
> |
if (idat.shiftedPot) { |
| 206 |
|
myPotC = De * expfnc2C; |
| 207 |
|
myDerivC = 0.0; |
| 208 |
< |
} else if (Morse::shiftedFrc_) { |
| 208 |
> |
} else if (idat.shiftedForce) { |
| 209 |
|
myPotC = De * expfnc2C; |
| 210 |
|
myDerivC = -2.0 * De * beta * expfnc2C; |
| 211 |
|
myPotC += myDerivC * ( *(idat.rij) - *(idat.rcut)); |
| 223 |
|
|
| 224 |
|
RealType dudr = *(idat.sw) * *(idat.vdwMult) * (myDeriv - myDerivC); |
| 225 |
|
|
| 226 |
< |
idat.pot[VANDERWAALS_FAMILY] += *(idat.sw) * pot_temp; |
| 226 |
> |
(*(idat.pot))[VANDERWAALS_FAMILY] += *(idat.sw) * pot_temp; |
| 227 |
|
*(idat.f1) = *(idat.d) * dudr / *(idat.rij); |
| 228 |
|
} |
| 229 |
|
return; |