Page 1 of 1

Range separated functionals

Posted: Sat Dec 05, 2020 9:51 pm
by andres_ortegaguerrero
Dear VASP Users,

I was wondering if you could help me to implement a range separated hybrid functional in VASP
like a LC-wPBE , in which I can control the percentage of HF for the short and also the one for long-range


Is this possible in VASP,
I saw such implementation on VASP here 10.1103/PhysRevMaterials.4.083808
best,


Andres

Re: Range separated functionals

Posted: Mon Dec 07, 2020 8:16 am
by martin.schlipf
The simplest way to get something working quickly is to look for instances of HFSCREEN in fock.F. You will need to modify the G -> 0 limit and the standard Coulomb potential to reflect the altered interaction. For the local part the quickest solution is possibly using the libxc interface (precompile with -DUSELIBXC and set LIBXC1 and LIBXC2 in the INCAR file as appropriate).

Re: Range separated functionals

Posted: Fri Dec 11, 2020 3:43 pm
by chengcheng_xiao1
There doesn't seem to be any information on how to compile VASP with libxc on the VASP wiki so I'll try to document my experience of it here.

**Please note that VASP [v6.1.2] does not work with the latest version of libxc[5.0.0], but it does support libxc[v4.3.4].

First of all, compile libxc[v4.3.4] as described here: https://www.tddft.org/programs/libxc/installation/.

To compile VASP[v6.1.2] with libxc[v4.3.4], modify your makefile.include file:
1. add -DUSELIBXC to the precompiler flags (CPP_OPTIONS)
2. append path to libxc's "include" directory to INCS. (e.g. -I/PATH/TO/LIBXC/include)
3. append compiled librarys (both libxcf90.a and libxc.a should be included) to LLIBS (e.g. append "/PATH/TO/LIBXC/lib/libxcf90.a /PATH/TO/LIBXC/lib/libxc.a" to LLIBS)
4. compile as usual.

To use libxc with VASP[v6.1.2], add the following to your INCAR file (if I'm not mistaken):
1. LIBXC1: id of the exchange part (https://www.tddft.org/programs/libxc/functionals/)
2. LIBCX2: id of the correlation part (https://www.tddft.org/programs/libxc/functionals/)

There should be some limitations on the usage of the libxc interface (e.g. the use of vdW kernel). Hopefully, Martin can explain those in this thread? (or better, document it on the VASP wiki) ;D

Re: Range separated functionals

Posted: Wed Dec 16, 2020 1:00 pm
by martin.schlipf
Thank you, Chengcheng for adding a bit more details.

So far there is only very limited support for libxc in VASP; the only thing you can use is the GGAs. By extension you can use the local part of the hybrid functionals, but then the nonlocal part needs to be implemented.