Some questions about NEB and CI-NEB

Vasp transition state theory tools

Moderator: moderators

Post Reply
hlzya
Posts: 44
Joined: Wed Mar 01, 2006 7:48 am

Some questions about NEB and CI-NEB

Post by hlzya »

Hello, everyone!

1. In VASP 4.6, the NEB method is included, and the CI-NEB method isn't involved, right? Then how can I get the CI-NEB code?

2. How can I know if my present VASP code includes the CI-NEB method?

3. which parameters should be set if I want to converge the forces to within 0.05 eV/A by using the "quick-min" algorithm (IBRION =3) when performing a NEB calculation?

Thank you very much for your kind attention!
graeme
Site Admin
Posts: 2290
Joined: Tue Apr 26, 2005 4:25 am
Contact:

Post by graeme »

Right, vasp 4.6 has an old version of the NEB. The climbing image and new tangent modifications are not included.

The code for the latest NEB method, including the climbing image can be downloaded from: http://theory.cm.utexas.edu/vtsttools/code/

If you put the 5 fortran files into your vasp.4.6 source code directory, and add dynmat.o neb.o dimer.o lanczos.o to the object list in your make file (before chain.o), you can rebuild vasp with the latest NEB.

One way to see if your vasp binary was built with the NEB module is to run:
strings vasp | grep neb
and see if it reports the neb_init and neb_force functions in the NEB module. If not, you have the old version which is built into vasp.

To converge to 0.05 eV/A you use the same setting that you would for a vasp optimization: ediffg=-0.05, IBRION=3, and POTIM=0.1
The time step can be optimized for better performance. If your intial path goes high in energy, you can start with a few iterations using POTIM=0.01. Once the barrier is around 1eV, you can switch to a larger time step.
hlzya
Posts: 44
Joined: Wed Mar 01, 2006 7:48 am

Post by hlzya »

Thank you very much for your detailed reply!

In your reply, the order "strings vasp | grep neb " should be "strings vasp | grep NEB", or not, because I get different results.

When "strings vasp | grep neb " is typed, I obtain:

NEBD: min, max energy: NEBD: Prev gt NextNEBD: Next gt PrevNEBD: old_dot, prev_dot, next_dot: neb.f
SPRINGError reading item 'SPRING' from file INCAR.SPRING2Error reading item 'SPRING2' from file INCAR.LCLIMBError reading item 'LCLIMB' from file INCAR.LLTANGENTError reading item 'LTANGENT' from file INCAR.EFIRSTError reading item 'EFIRST' from file INCAR.ELASTError reading item 'ELAST' from file INCAR.IISPRINGError reading item 'ISPRING' from file INCAR.;FINCARSPOWER=#Error reading item 'SPOWER' from file INCAR.NEB Params: spring, spring2, efirst, elast, ispring, spower: neb.fERROR: image mode number of ions wrong

when the latter is typed, I obtain :

NEBV Params: ispring,spring,spring2,spower,efirst,elastNEBV Params: NEB: DOING NEB!NEBD: energy_flag_prev,next: NEBD: Only prev higherNEBD: Only next higherNEBD: Both higher or lower
NEBD: min, max energy: NEBD: Prev gt NextNEBD: Next gt PrevNEBD: old_dot, prev_dot, next_dot: neb.f
NEB: Forces: par spring, perp spring, perp real
NEB: distance to prev, next image, angle between
NEB: spring constants (prev,next)
NEB: projections on to tangent (spring, real)
NEB: Forces: max atom, RMS
SPRINGError reading item 'SPRING' from file INCAR.SPRING2Error reading item 'SPRING2' from file INCAR.LCLIMBError reading item 'LCLIMB' from file INCAR.LLTANGENTError reading item 'LTANGENT' from file INCAR.EFIRSTError reading item 'EFIRST' from file INCAR.ELASTError reading item 'ELAST' from file INCAR.IISPRINGError reading item 'ISPRING' from file INCAR.;FINCARSPOWER=#Error reading item 'SPOWER' from file INCAR.NEB Params: spring, spring2, efirst, elast, ispring, spower: neb.fERROR: image mode number of ions wrong
;IINCARICHAIN=#Error reading item 'ICHAIN' from file INCAR.CHAIN: Read ICHAIN CHAIN: Running the NEBCHAIN: Running the Dynamical MatrixCHAIN: Running the Dimer methodchain.fCHAIN: Running the Lanczos method
generalSYSTEMLCOMPATelectronicPRECENMAXENAUGEDIFFIALGOIWAVPRNBANDSNELECTelectronic smearingISMEARSIGMAelectronic projectorsLREALROPTLMAXPAWLMAXMIXelectronic startupISTARTICHARGINIWAVelectronic spinISPINLNONCOLLINEARMAGMOMNUPDOWNLSORBITSAXISLSPIRALQSPIRALLZEROZelectronic exchange-correlationGGAVOSKOWNLASPHLMETAGGAGGA2Selectronic convergenceNELMNELMDLNELMINENINIelectronic convergence detailLDIAGWEIMINEBREAKDEPERNRMMTIMEelectronic mixerAMIXBMIXAMINAMIX_MAGBMIX_MAGelectronic mixer detailsIMIXMAXMIXWCINIMIXMIXPREMREMOVEelectronic dipolcorrectionIDIPOLLDIPOLDIPOLgridsNGXNGYNGZNGXFNGYFNGZFADDGRIDionicNSWIBRIONISIFPSTRESSEDIFFGNFREEPOTIMSMASSionic mdTEBEGTEENDNBLOCKKBLOCKNPACOAPACOsymmetryISYMSYMPRECdosLORBITRWIGSNEDOSEMINEMAXwritingNWRITELWAVELCHARGLPARDLVTOTLELFLOPTICSSTMperformanceNPARNSIMNBLKLPLANELCRITICAL_MEMLSCALAPACKLSCALULASYNCseparatormiscellaneousIDIOTILMUSICPOMASSFLCORRL

I don't know if my package is installed correctly because it is done by somebody else.

Thank you!
graeme
Site Admin
Posts: 2290
Joined: Tue Apr 26, 2005 4:25 am
Contact:

Post by graeme »

Ok, it was a crude way of checking, but you do have a version of vasp with our NEB code.
andri
Site Admin
Posts: 117
Joined: Tue Apr 26, 2005 6:20 am

Post by andri »

It may be a bit too late now, but i find it better to use "nm" than "strings". This is what I find:

bjolfur.raunvis.hi.is:/usr/local/vasp(4)> nm vasp.mpi | grep -i neb
0819d098 T neb_
087fb6f8 B neb_mp_efirst_
087fb6f0 B neb_mp_elast_
087fb6e8 B neb_mp_ispring_
087fb6e0 B neb_mp_lclimb_
087fb6e4 B neb_mp_ltangent_
0819d0a2 T neb_mp_neb_force_
084ab640 d neb_mp_neb_force_$BLK$format_pack
08615b80 b neb_mp_neb_force_$OLD_TANGENT
086164e0 b neb_mp_neb_force_$X
08616500 b neb_mp_neb_force_$Y
081a011c T neb_mp_neb_init_
086169f0 b neb_mp_neb_init_$CHARAC
08616520 b neb_mp_neb_init_$DYN
08616920 b neb_mp_neb_init_$LATT_CUR
08616780 b neb_mp_neb_init_$T_I
08479e78 D neb_mp_posion_all_
087fb700 B neb_mp_spower_
087fb6d8 B neb_mp_spring_
087fb6d0 B neb_mp_spring2_


"neb_mp_lclimb_" gives it away that UW/UT extension package has been compiled and is in place.
hlzya
Posts: 44
Joined: Wed Mar 01, 2006 7:48 am

Post by hlzya »

I can't know the exact meaning of "bjolfur.raunvis.hi.is:/usr/local/vasp(4)> nm vasp.mpi | grep -i neb ", where should I type this order?

In addition, I wonder if this mothod is right:
I add "ICLIMB = TRUE" in my INCAR. If the mission can complete successfully, that means the CI-NEB has been included in my vasp. If not, only NEB is involved.

Thanks a lot!
graeme
Site Admin
Posts: 2290
Joined: Tue Apr 26, 2005 4:25 am
Contact:

Post by graeme »

The first part: "bjolfur.raunvis.hi.is:/usr/local/vasp(4)>" is just the prompt. Andri is suggesting that you type the command: "nm vasp.mpi | grep -i neb". All we are suggesting here is to look at the ascii text in the binary, and see if there is any reference to something like LCLIMB, which is the flag to turn on the climbing image.

Along the same lines, you need to include the statement:
LCLIMB=.TRUE.
in the INCAR file to turn on the climbing image method. Notice this starts with the character 'L' because it is a logical variable. Also, I think you need the '.' characters around the true value.
hlzya
Posts: 44
Joined: Wed Mar 01, 2006 7:48 am

Post by hlzya »

sorry for my mistake.

I have used the statement "LCLIMB = .TRUE.", and the calculation can be conducted. However, unfortunately, the calculation is not converged. I have looked up related information in the VASP guide, but there is a little information about NEB.

For example, in VASP guide, they say " we strongly recommend to keep the number of images to an absolute minimum." However, in your particle titled " A climbing image ..." published in JCP, I find "The only issue is to have enough images close to the climbing images to get a good estimate of the reaction coordinate,...". So how many images are suitable?

Now, I am calculating the C diffusion in bulk Ni, and I find this system is very difficult to converge when using NEB. I list my INCAR file below, can you tell me which parameter I should alter? If necessary, I can mail you my OUTCAR file.

my INCAR:

SYSTEM = NiC_NEB

Start parameter for this Run:
ISTART = 0
ICHARG = 2
INIWAV = 1

Electronic Relaxation:
ENCUT = 700
PREC = High
IALGO = 38
NELM = 60
NELMIN = 4
NELMDL = -5
EDIFF = 1E-04
NBANDS = 20
GGA = 91
VOSKOWN = 1

Ionic Relaxation:
EDIFFG = -0.05
NSW = 100
IBRION = 3
ISIF = 3
POTIM = 0.1

DOS related values:
SIGMA = 0.1
ISMEAR = 1

Energy barriver:
IMAGES = 8
SPRING = -5
LCLIMB = .TRUE.

Thank you very much!
graeme
Site Admin
Posts: 2290
Joined: Tue Apr 26, 2005 4:25 am
Contact:

Post by graeme »

The number of images needed is dependent upon the length and curvature of the path. For C diffusion in bulk Ni, the path should be fairly straight, if you diffusion path goes between neighboring sites.

I would definitely recommend starting with less expensive parameters. If you use the soft C_s paw potential, you should be able to get away with a cutoff of 270 eV, and normal precision. Also, relaxing the cell geometry gets into some complications, so I would start with a fixed cell geometry.

ENCUT=270
PREC=Normal
IALGO=48
ISIF=0

Also, if you path is symmetric, you could try using 5 images, which will put one image near the saddle point.

Once you have a fairly converged path, you can use more accurate parameters to see if the barrier changes.

If you still have problems, you could send us a .tar.gz file of your run.
Post Reply