exclude atoms in D3 dispersion correction

Queries about input and output files, running specific calculations, etc.


Moderators: Global Moderator, Moderator

Post Reply
Message
Author
marco_vitek
Newbie
Newbie
Posts: 8
Joined: Thu May 19, 2022 11:43 am

exclude atoms in D3 dispersion correction

#1 Post by marco_vitek » Wed Nov 16, 2022 3:51 pm

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

henrique_miranda
Global Moderator
Global Moderator
Posts: 506
Joined: Mon Nov 04, 2019 12:41 pm
Contact:

Re: exclude atoms in D3 dispersion correction

#2 Post by henrique_miranda » Fri Nov 18, 2022 8:16 am

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.

marco_vitek
Newbie
Newbie
Posts: 8
Joined: Thu May 19, 2022 11:43 am

Re: exclude atoms in D3 dispersion correction

#3 Post by marco_vitek » Thu Nov 24, 2022 1:07 pm

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

fabien_tran1
Global Moderator
Global Moderator
Posts: 419
Joined: Mon Sep 13, 2021 11:02 am

Re: exclude atoms in D3 dispersion correction

#4 Post by fabien_tran1 » Tue Nov 29, 2022 11:27 am

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.

Post Reply