Dear VASP developers,
I have noticed what might be an incorrect implementation of the vdW-DF in the mGGA driver routines in the new VASP versions. For vdW-DF, it is a requirement to use LDA correlation, and not GGA or mGGA. (BEEF-vdW is a notable exception where beyond-LDA is used, since it is a mixture of LDA and GGA correlation with NLC added on top. Although I would argue that this is not correct when employing vdW-DF.) For GGAs, this is done by using AGGAC=0. Unfortunately, when using a mGGA there is no correct way of enforcing LDA correlation through AGGAC or AMGGAC. The issue is that in the GGA routines the enhancement factor is calculated separately from the LDA correlation, and can therefore be multiplied by AGGAC=0, which enforces LDA. However, in the mGGA routines the correlation is calculated in one step, and is completely multiplied by AMGGAC, thus the choice is either semi-local correlation or no correlation at all. This seems to be done in order to combine mGGA exchange with RPA correlation? Furthermore, AGGAC still has influences on the results for some of the mGGA DFs, but our tests seem to indicate that this does not work the way one expects it too. For example, the MS mGGA DFs actually use GGA correlation, and the GGA routines are used in VASP where AGGAC does end up doing something, but not necessarily the correct thing.
It seems that current versions of VASP can only correctly combine mGGA exchange with vdW-DF if libxc is used. In this case, one can enforce LDA correlation (should be PWmod; ID=13) through the LIBXC2 tag.
Hopefully we misunderstood our tests or the source code, but I feel it is important to address.
Kind regards,
Nick Gerrits
vdW-DF combined with mGGA
Moderators: Global Moderator, Moderator
-
- Newbie
- Posts: 2
- Joined: Wed Nov 08, 2017 1:55 pm
- License Nr.: 5-936
-
- Global Moderator
- Posts: 419
- Joined: Mon Sep 13, 2021 11:02 am
Re: vdW-DF combined with mGGA
Hi,
Indeed, AGGAC and AMGGAC have different meanings. AGGAC multiplies the gradient-correction term of a GGA correlation, while AMGGAC multiplies the whole MGGA correlation. This can be somehow confusing and I will underline this difference on the VASP wiki. Thanks for pointing this out.
With the latest VASP version (6.4.3), it is possible to combine a MGGA exchange with LDA correlation without using Libxc. At the page METAGGA the functionals with the name ending with "_X", like SCAN_X, are exchange-only functionals. At the page GGA there is "CA_C" (equivalently "PZ_C"), which is a LDA correlation (I have just added it on the wiki, but available since VASP.6.4.3). With the new INCAR tag XC to specify the functional, any combination of functionals is possible and in your case this would be "XC = SCAN_X CA_C" for instance (SCAN exchange combined with LDA correlation).
Concerning the particular case of the MS MGGAs, the correlation part is indeed a GGA, but it is implemented in the MGGA part of the code, where AGGAC is not used. This is not clean.
Indeed, AGGAC and AMGGAC have different meanings. AGGAC multiplies the gradient-correction term of a GGA correlation, while AMGGAC multiplies the whole MGGA correlation. This can be somehow confusing and I will underline this difference on the VASP wiki. Thanks for pointing this out.
With the latest VASP version (6.4.3), it is possible to combine a MGGA exchange with LDA correlation without using Libxc. At the page METAGGA the functionals with the name ending with "_X", like SCAN_X, are exchange-only functionals. At the page GGA there is "CA_C" (equivalently "PZ_C"), which is a LDA correlation (I have just added it on the wiki, but available since VASP.6.4.3). With the new INCAR tag XC to specify the functional, any combination of functionals is possible and in your case this would be "XC = SCAN_X CA_C" for instance (SCAN exchange combined with LDA correlation).
Concerning the particular case of the MS MGGAs, the correlation part is indeed a GGA, but it is implemented in the MGGA part of the code, where AGGAC is not used. This is not clean.
-
- Newbie
- Posts: 2
- Joined: Wed Nov 08, 2017 1:55 pm
- License Nr.: 5-936
Re: vdW-DF combined with mGGA
Thank you for your quick answer.
Yes, I figured since this is not explained explicitly, people might mistake AMGGAC for the same use as AGGAC. Thanks for pointing out the solution without libxc. Perhaps in the future it would make more sense to not use AGGAC=0, but always specify LDA correlation? Or even enforce it via the ivdw_nl parameter?
Regarding the LDA correlation: The issue is that vdW-DF was based of the PBE routines. This means that the LDA correlation DF was PWmod, where it is the mod version of PW92 LDA because PBE uses a different numerical precision for the LDA part. In the end, the various LDA DFs shouldn't be too different, but for reproducibility purposes this fact is important. So even v6.4.3 cannot be used without libxc if you want the same LDA correlation as the GGA vdW-DFs.
I understand that for the MS DFs usage of AGGAC is not clean. All I'm saying is that it still affects results, but not necessarily in the same way as it does within the GGA driver.
Yes, I figured since this is not explained explicitly, people might mistake AMGGAC for the same use as AGGAC. Thanks for pointing out the solution without libxc. Perhaps in the future it would make more sense to not use AGGAC=0, but always specify LDA correlation? Or even enforce it via the ivdw_nl parameter?
Regarding the LDA correlation: The issue is that vdW-DF was based of the PBE routines. This means that the LDA correlation DF was PWmod, where it is the mod version of PW92 LDA because PBE uses a different numerical precision for the LDA part. In the end, the various LDA DFs shouldn't be too different, but for reproducibility purposes this fact is important. So even v6.4.3 cannot be used without libxc if you want the same LDA correlation as the GGA vdW-DFs.
I understand that for the MS DFs usage of AGGAC is not clean. All I'm saying is that it still affects results, but not necessarily in the same way as it does within the GGA driver.
-
- Global Moderator
- Posts: 419
- Joined: Mon Sep 13, 2021 11:02 am
Re: vdW-DF combined with mGGA
I agree with all your points except for enforcing LDA correlation via IVDW_NL. Using LDA correlation with vdW-DF is required for good accuracy for probably all existing vdW-DF functionals, but one can not completely exclude new vdW-DF functionals that would use some GGA component.