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
Range separated functionals
Moderators: Global Moderator, Moderator
-
- Newbie
- Posts: 1
- Joined: Sat Dec 05, 2020 9:47 pm
-
- Global Moderator
- Posts: 542
- Joined: Fri Nov 08, 2019 7:18 am
Re: Range separated functionals
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).
Martin Schlipf
VASP developer
- chengcheng_xiao1
- Newbie
- Posts: 26
- Joined: Sun Nov 17, 2019 6:23 pm
- Location: London, UK
- Contact:
Re: Range separated functionals
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)
**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)
-
- Global Moderator
- Posts: 542
- Joined: Fri Nov 08, 2019 7:18 am
Re: Range separated functionals
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.
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.
Martin Schlipf
VASP developer