[lammps-users] Misleading documentation/bug for fix neb

Dear All,

in the online documentation for “fix neb” (https://docs.lammps.org/fix_neb.html), I read:

… During the NEB calculation, the 3N-length vector of interatomic force Fi = -Grad(V) for each replica I is altered. For all intermediate replicas (i.e. for 1 < I < N, except the climbing replica) the force vector becomes:

Fi = -Grad(V) + (Grad(V) dot T’) T’ + Fnudge_parallel + Fnudge_perp (1)


In the second stage of the NEB calculation, the interatomic force Fi for the climbing replica (the replica of highest energy after the first stage) is changed to:

Fi = -Grad(V) + 2 (Grad(V) dot T’) T’ (2)

This suggests that during the climbing image NEB there is no spring force acting on the climber, either parallel or perpendicular. However, if I look at lines 626-634 of “fix_neb.cpp” (LAMMPS 2Jul2021) it seems that the perpendicular spring force is applied also to the climber during the climbing image NEB.

I would say that this is a bug since the perpendicular spring force (in case it is used) will prevent the climbing image from converging to the true saddle due to systematic corner-cutting problems. If instead this was done deliberately, the documentation should be corrected.
The third option is that I am missing something and there is actually no conflict between the code and the online documentation. If this is the case, please let me know.

Best regards,
Davide

I don’t know much about the details of how NEB is supposed to work in LAMMPS, but I am copying Emile Maras who contributed the most recent updates to NEB support in LAMMPS. Perhaps he can comment.

Axel.

Dear Axel,

Thanks for the reply.

Emile, if you could comment on this, it would be really useful.

Kind regards,
Davide

Hi Davide and Axel,

I guess that you are right and that the perpendicular spring force is applied to the climbing neb.
So the documentation should be updated. Equation 2 should be:
Fi = -Grad(V) + 2 (Grad(V) dot T’) T’ + Fnudge_perp

I would not consider this as a bug. The perpendicular spring force is useful in complex cases for which the convergence of the NEB calculation is complicated and there might be some cases for which removing the perpendicular spring force for the climbing replica may lead to problems.

Also note that the corner cutting issue exists with our without perpendicular spring force. The neb always finds an approximation of the saddle point. Even if you remove the perpendicular spring force from the climbing replica, applying it or not to the neighbouring replicas will slightly change the convergence of the climbing replica.
If one needs to improve the precision he should increase the number of replicas (there are also some methods which increase the parallel spring force near the saddle point to increase the resolution near the saddle but these methods are not implemented in lammps as far as I know).

What I would recommand is (if you need the perpendicular spring force at all) to first run a neb calculation with the perpendicular spring force . Once this has converged (don’t bother converging to a very low force or energy tolerence) you can refine the calculation by removing the perpendicular spring force and see if it converges.

Axel, can you please update the documentation?

Thank you in advance.

Best regards,

Emile

Hi Davide and Axel,

I guess that you are right and that the perpendicular spring force is applied to the climbing neb.
So the documentation should be updated. Equation 2 should be:
Fi = -Grad(V) + 2 (Grad(V) dot T’) T’ + Fnudge_perp

[…]

Axel, can you please update the documentation?

Done.

https://github.com/lammps/lammps/pull/2848/commits/829bc8a617910d2226f67d8ee27c57daced0eb1f

I may also convert those expressions later into nicer looking MathJax code…