I am having difficulties converging a NEB run to couple two methylene groups on a surface. I have run several times, trying first the FIRE optimizer to preconverge the run, then switching to the LBFGS. When I examine the run I find the H atoms on the methylene groups switch back and forth between images so there is no smooth variation from initial to final image.
I have seen Andri's warning to watch for H atom crossing in the NEB, and have seen Graeme's post mentioning the use of a small value of MAXMOVE to constrain the optimization, but I could use some guidance on reasonable values for the different parameters. Can you recommend some settings to use for the two optimizers to minimize this probem? (ex., what is a reasonable "small" value for MAXMOVE?)
I have been using the "standard"(?) settings for both:
Fire optimizer (IOPT=7) Parameters listed below
MAXMOVE = 0.2 Maximum allowed step size for translation
TIMESTEP = 0.1 Initial dynamical time step
FTIMEMAX = 1.0 Maximum dynamical time step allowed
FTIMEDEC = 0.5 Factor to decrease dt
FTIMEINC = 1.1 Factor to increase dt
FALPHA = 0.1 Parameter that controls velocity damping
FALPHADEC = 0.99 Factor to decrease alpha
FNMIN = 5 Minimum number of iterations before adjusting alpha and dt
LBFGS optimizer (IOPT=1) Parameters listed below
MAXMOVE = 0.2 Maximum allowed step size for translation
ILBFGSMEM = 20 Number of steps saved when building the inverse Hessian matrix
LGLOBAL = .TRUE. Optimize the NEB globally instead of image-by-image
INVCURV = 0.01 Initial inverse curvature, used to construct the inverse Hessian matrix
LLINEOPT = .FALSE. Use a force based line minimizer for translation
FDSTEP = 5E-3 Finite difference step size for line optimizer
Dave
Problems converging a NEB run
Moderator: moderators
Re: Problems converging a NEB run
For a hard to converge paths I would pre-converge using quick-min (QM) as opposed to FIRE. FIRE tends to be more aggressive and will sometimes blow past a minimum into a separate basin.
You should always use LCLIMB = .TRUE.
* unless for some reason you really don't want to know the saddle exactly (all method tend to converge better because the path in essence gets pinned at the saddle and the two sides are decoupled making convergence faster)
To pre-converge in a conservative fashion use QM
IOPT=3
TIMESTEP = 0.01 (but can go as low as 0.001 for really high initial forces)
MAXMOVE = 0.2 (you could also control radical change by lowering this but I find it more effective to control the TIMESTEP)
I typically take the view that if an optimizer need to be restricted with maxmove the optimizer/parameters is not well suited for the minimization.
If you path is highly curved in xyz space (ie. rotation around a bond) it would be better to start with a reasonable guess for the saddle oppose to the default linear interpolation. (Note: NEB converges to saddle closest to the initial path not always the lowest saddle)
Once a path seems to be in a reasonable local minima the time step for QM can be increased to speed the optimization. Or you may switch to a more aggressive optimizer like LBFGS
I consider the default parameters for this to be pretty conservative
LBFGS is typically the fastest optimizer but it can have issues/instabilities with tangential movement.
LBFGS optimizer (IOPT=1)
MAXMOVE = 0.2 Maximum allowed step size for translation
ILBFGSMEM = 20 Number of steps saved when building the inverse Hessian matrix
LGLOBAL = .TRUE. Optimize the NEB globally instead of image-by-image
INVCURV = 0.01 Initial inverse curvature, used to construct the inverse Hessian matrix
I typically use a more aggressive INVCURV = 0.05 (should not be used with strong bonds like Oxygen-Oxygen)
Again I feel the best way to control this optimizer is to adjust INVCURV but MAXMOVE can be lowered to 0.05, any lower than that and you might as well return to using QM
I cannot recommended using the line based version of this optimizer (CG would be a better choice if you want to do fd steps and calculate curvatures )
*LLINEOPT = .FALSE. Use a force based line minimizer for translation
*FDSTEP = 5E-3 Finite difference step size for line optimizer
LBFGS biggest instability comes from tangential movements where the NEB is trying to become evenly spaced. The GLOBAL option fixed most of these issues however they can creep back in for a path with many images.
The NEB method works best for 3-8 interior images.
You should always use LCLIMB = .TRUE.
* unless for some reason you really don't want to know the saddle exactly (all method tend to converge better because the path in essence gets pinned at the saddle and the two sides are decoupled making convergence faster)
To pre-converge in a conservative fashion use QM
IOPT=3
TIMESTEP = 0.01 (but can go as low as 0.001 for really high initial forces)
MAXMOVE = 0.2 (you could also control radical change by lowering this but I find it more effective to control the TIMESTEP)
I typically take the view that if an optimizer need to be restricted with maxmove the optimizer/parameters is not well suited for the minimization.
If you path is highly curved in xyz space (ie. rotation around a bond) it would be better to start with a reasonable guess for the saddle oppose to the default linear interpolation. (Note: NEB converges to saddle closest to the initial path not always the lowest saddle)
Once a path seems to be in a reasonable local minima the time step for QM can be increased to speed the optimization. Or you may switch to a more aggressive optimizer like LBFGS
I consider the default parameters for this to be pretty conservative
LBFGS is typically the fastest optimizer but it can have issues/instabilities with tangential movement.
LBFGS optimizer (IOPT=1)
MAXMOVE = 0.2 Maximum allowed step size for translation
ILBFGSMEM = 20 Number of steps saved when building the inverse Hessian matrix
LGLOBAL = .TRUE. Optimize the NEB globally instead of image-by-image
INVCURV = 0.01 Initial inverse curvature, used to construct the inverse Hessian matrix
I typically use a more aggressive INVCURV = 0.05 (should not be used with strong bonds like Oxygen-Oxygen)
Again I feel the best way to control this optimizer is to adjust INVCURV but MAXMOVE can be lowered to 0.05, any lower than that and you might as well return to using QM
I cannot recommended using the line based version of this optimizer (CG would be a better choice if you want to do fd steps and calculate curvatures )
*LLINEOPT = .FALSE. Use a force based line minimizer for translation
*FDSTEP = 5E-3 Finite difference step size for line optimizer
LBFGS biggest instability comes from tangential movements where the NEB is trying to become evenly spaced. The GLOBAL option fixed most of these issues however they can creep back in for a path with many images.
The NEB method works best for 3-8 interior images.
Re: Problems converging a NEB run
Thank you for the recommendations! Dave