Non local part of the pseudo potential

External optional components of Abinit (BigDFT, Wannier90...) and codes using/providing data from/to Abinit (AtomPAW, ONCVPSP, EXC, DP, Yambo...)

Moderators: ebousquet, bxu

Locked
davide.sangalli.82
Posts: 13
Joined: Wed Jan 27, 2010 6:34 pm
Location: Via Salaria Km 29.3, CP 10, 00016, Monterotondo Stazione, Italy
Contact:

Non local part of the pseudo potential

Post by davide.sangalli.82 » Mon Oct 25, 2010 4:47 pm

Dear forum,
I would like to perform a ground state calculation setting to zero the non local part of the pseudo-potential.
Is there a way? For example with some input variable or modifying a given psp file (my system contains only carbon atoms)

Thank you in advance for your answers.

Regards,
Davide
Davide Sangalli, PhD
CNR-ISM, UOS di Montelibretti and MaX Centre
http://www.ism.cnr.it/en/
http://www.max-center.eu/

User avatar
gmatteo
Posts: 291
Joined: Sun Aug 16, 2009 5:40 pm

Re: Non local part of the pseudo potential

Post by gmatteo » Tue Oct 26, 2010 9:09 am

Quick-and-dirty hack for NC pseudo:

Set Psps%ekb to zero. One can do this change at the end of pspini.F900 but this will affect all the optdriver levels,
alternatively you can pass an optional argument to pspini to specify that the pseudopotential strengths have
to be set to zero. In this case you can easily exclude the nonlocal part and only for the particular optdriver
level you are using.

For PAW:
The PAW pseudo strengths depend on the density thus the Psps%ekb trick won't work.
One should modify the value of the Dij's evaluated in pawdij.F90

For sure there's a much more elegant way to exclude the non-local part. For example you can
modify the NC pseudopotential file at hand but the change to be done depends on the pseudo fileformat, see doc/psp_infos

Notes
1) Setting Psps%ekb to zero won't remove the local contribution of the pseudo that is added to vtrial on the FFT mesh.
2) You won't observe any speed-up as the NC non-local part is always evaluated even when Psps%ekb are zero.

For more details about Vnl and its application you might consult nonlop_pl.F90 (NC pseudos and useylm=0) and
nonlop_ylm.F90 (PAW or useylm=1)

Hope it helps
Ciao
Matteo

Locked