Dear Vasp group,
Is there a possibility to selectively exclude atomic kinds in Grimme's DFT-D3 dispersion correction method (IVDW = 11 or 12)?
Thank you,
Marco
exclude atoms in D3 dispersion correction
Moderators: Global Moderator, Moderator
-
- Newbie
- Posts: 8
- Joined: Thu May 19, 2022 11:43 am
-
- Global Moderator
- Posts: 506
- Joined: Mon Nov 04, 2019 12:41 pm
- Contact:
Re: exclude atoms in D3 dispersion correction
As far as I understood from Grimme's paper (https://doi.org/10.1063/1.3382344) the C^8_ij is determined from a recursion relation from C^6_ij.
That would mean that if you deactivate C^6_ij using https://www.vasp.at/wiki/index.php/VDW_C6 then I think you will effectively deactivate the dispersion correction for that atomic kind.
That would mean that if you deactivate C^6_ij using https://www.vasp.at/wiki/index.php/VDW_C6 then I think you will effectively deactivate the dispersion correction for that atomic kind.
-
- Newbie
- Posts: 8
- Joined: Thu May 19, 2022 11:43 am
Re: exclude atoms in D3 dispersion correction
Thank you for the suggestion,
Deactivating the C^6_ij by setting the VDW_C6 tag to zero only works for the older D2 dispersion correction (IVDW = 10). This keyword seems to be ignored entirely when you use the newer D3 correction (IVDW = 11 or 12). I also tried to modify the C^6_ij parameters directly in the source code inside the subdftd3.F file (lines 3865:3878, setting some values to 0), however, this change had zero effect. Do you maybe have some suggestions on what else I could try to modify in the source code?
Thank you,
M
Deactivating the C^6_ij by setting the VDW_C6 tag to zero only works for the older D2 dispersion correction (IVDW = 10). This keyword seems to be ignored entirely when you use the newer D3 correction (IVDW = 11 or 12). I also tried to modify the C^6_ij parameters directly in the source code inside the subdftd3.F file (lines 3865:3878, setting some values to 0), however, this change had zero effect. Do you maybe have some suggestions on what else I could try to modify in the source code?
Thank you,
M
-
- Global Moderator
- Posts: 419
- Joined: Mon Sep 13, 2021 11:02 am
Re: exclude atoms in D3 dispersion correction
Hi,
The DFT-D3 methods correspond to version=3 or 4 in subdftd3.F (see the "CALL vdw_forces_D3" in vdwforcefield.F). You were looking at the subroutine loadoldpar that is used only by DFT-D2 (corresponding to version=2). A possibility to exclude atoms in DFT-D3 could be, for instance, to set c6=0 just after the "call getc6" in the subroutine pbcedisp. Two of the input arguments (iz(iat) and iz(jat)) of getc6 are the nuclear charges of the pair of atoms.
The DFT-D3 methods correspond to version=3 or 4 in subdftd3.F (see the "CALL vdw_forces_D3" in vdwforcefield.F). You were looking at the subroutine loadoldpar that is used only by DFT-D2 (corresponding to version=2). A possibility to exclude atoms in DFT-D3 could be, for instance, to set c6=0 just after the "call getc6" in the subroutine pbcedisp. Two of the input arguments (iz(iat) and iz(jat)) of getc6 are the nuclear charges of the pair of atoms.