diff --git a/doc/src/pair_list.rst b/doc/src/pair_list.rst index be7ec0c239..762afb888c 100644 --- a/doc/src/pair_list.rst +++ b/doc/src/pair_list.rst @@ -88,7 +88,7 @@ The style *morse* computes pairwise interactions with the formula .. math:: - E = D_0 \left[ e^{- 2 \alpha (r - r_0)} - 2 e^{- \alpha (r - r_0)} \right] \qquad r < r_c + E = D_0 \left[ 1 - e^{-\alpha (r - r_0)} \right]^2 \qquad r < r_c and the coefficients: @@ -171,8 +171,9 @@ Related commands :doc:`pair_coeff `, :doc:`pair_style hybrid/overlay `, :doc:`pair_style lj/cut `, -:doc:`pair_style morse `, +:doc:`bond_style morse `, :doc:`bond_style harmonic ` +:doc:`bond_style quartic ` Default """"""" diff --git a/src/MISC/pair_list.cpp b/src/MISC/pair_list.cpp index e826ff0693..f6a27538ab 100644 --- a/src/MISC/pair_list.cpp +++ b/src/MISC/pair_list.cpp @@ -168,11 +168,11 @@ void PairList::compute(int eflag, int vflag) } else if (par.style == MORSE) { const double r = sqrt(rsq); - const double dr = par.param.morse.r0 - r; - const double dexp = exp(par.param.morse.alpha * dr); + const double dr = r - par.param.morse.r0; + const double dexp = exp(-par.param.morse.alpha * dr); fpair = 2.0 * par.param.morse.d0 * par.param.morse.alpha * (dexp * dexp - dexp) / r; - if (eflag_either) epair = par.param.morse.d0 * (dexp * dexp - 2.0 * dexp) - par.offset; + if (eflag_either) epair = par.param.morse.d0 * (dexp * dexp - 2.0 * dexp + 1.0) - par.offset; } else if (par.style == LJ126) { @@ -385,7 +385,7 @@ void PairList::init_style() } else if (par.style == MORSE) { const double dr = par.param.morse.r0 - sqrt(par.cutsq); const double dexp = exp(par.param.morse.alpha * dr); - par.offset = par.param.morse.d0 * (dexp * dexp - 2.0 * dexp); + par.offset = par.param.morse.d0 * (dexp * dexp - 2.0 * dexp - 1.0); } else if (par.style == LJ126) { const double r6inv = par.cutsq * par.cutsq * par.cutsq;