[Pw_forum] Defining exchange correlation functional

Paolo Giannozzi paolo.giannozzi at uniud.it
Thu Jan 23 13:52:38 CET 2014


On Wed, 2014-01-22 at 15:46 -0500, Kayahan Saritas wrote:

> Therefore in input file, dft_input=‘B3LYP' can also be written as  
> dft_input="b3lp+vwn+b3lp+b3lp”. It is ok until here.

it isn't, because there are two keywords "vdw" and "b3lp" for the
local correlation part, even if they correspond to the same case.
I just fixed it in the svn version.

> For B3PW91, three parameters above are the same (... ) but when I write 
> dft_input="b3lp+vwn+b3lp+ggc” (ggc for gradient corrections of PW91) 
> I get an error saying dft_input is conflicting

because "ggc" conflicts with "b3lp". The code sees a string with "b3lp"
in it, finds a matching string in the list of gradient corrections to
correlation (see variables exc,corr,gradx,gradc in Modules/funct.f90),
then finds a second matching string "ggc" and complains. It wasn't a
great idea to label three different things with the same label, but
the number of functionals is exceeding the number of available labels
(label length is 4 letters) or at least my imagination.

> I think I need to use 0.81*ggc actually to represent the B3PW91, but 
> to me it doesn’t seem possible to modify it without accessing to the 
> private variables. 

unfortunately you have to access private variables because there is no
other way to set the factor multiplying local correlation. It is much
easier to access the factor multiplying local exchange (subroutine
set_exx_fraction).

> I would be happy if someone could explain how to make a user defined 
> xc-functional in PWSCF or how the algorithm decides if the case is conflicting or not.

I am not sure it is a good idea to stick to the mechanism I wrote many
years ago to label the various functionals: with more and more
functionals around, it is becoming a mess. Anyway: see above, then
locate in Modules/funct.f90 the part of the code that interprets 
the label B3LYP (one of the many "special cases"), take inspiration
for B3PW91; you will need to introduce another case in "gradc", with
the corresponding index "igcc", calculating 0.81*ggc

Paolo

-- 
 Paolo Giannozzi, Dept. Chemistry&Physics&Environment, 
 Univ. Udine, via delle Scienze 208, 33100 Udine, Italy
 Phone +39-0432-558216, fax +39-0432-558222 




More information about the users mailing list