Range separated functionals

Question on input files/tags, interpreting output, etc.

Please check whether the answer to your question is given in the VASP online manual or has been discussed in this forum previously!

Moderators: Global Moderator, Moderator

Locked
Message
Author
andres_ortegaguerrero
Newbie
Newbie
Posts: 1
Joined: Sat Dec 05, 2020 9:47 pm

Range separated functionals

#1 Post by andres_ortegaguerrero » Sat Dec 05, 2020 9:51 pm

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

martin.schlipf
Global Moderator
Global Moderator
Posts: 455
Joined: Fri Nov 08, 2019 7:18 am

Re: Range separated functionals

#2 Post by martin.schlipf » Mon Dec 07, 2020 8:16 am

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).

User avatar
chengcheng_xiao1
Newbie
Newbie
Posts: 26
Joined: Sun Nov 17, 2019 6:23 pm
Location: London, UK
Contact:

Re: Range separated functionals

#3 Post by chengcheng_xiao1 » Fri Dec 11, 2020 3:43 pm

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

martin.schlipf
Global Moderator
Global Moderator
Posts: 455
Joined: Fri Nov 08, 2019 7:18 am

Re: Range separated functionals

#4 Post by martin.schlipf » Wed Dec 16, 2020 1:00 pm

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.

Locked