Interpolating QP corrections for BSE

Deals with issues related to computation of optical spectra in reciprocal space: RPA, TDDFT, local field effects.

Moderators: Davide Sangalli, andrea.ferretti, myrta gruning, andrea marini, Daniele Varsano, Conor Hogan

Post Reply
tolsen
Posts: 25
Joined: Thu Oct 28, 2010 9:45 am

Interpolating QP corrections for BSE

Post by tolsen » Wed Nov 24, 2010 4:14 pm

Hi

I have a few questions related to interpolation of QP energies when doing a BSE calculation.

For example, say I have calculated the quasiparticle corrections at the highest occupied and lowest unoccupied
bands at the 6 high symmetry points of a hexagonal lattice. Is it then possible to interpolate the quasiparticle energies to the rest of the Brillouin zone? It may sound a bit primitive, but I reckon it should be better than a simple scissor shift. As I understand it one should use something like,

KfnQPdb= "E < ../../GW/SAVE/ndb.QP"

which works fine if the file contain the QP energies at all my K-points. But if I only have a few, what should be put for KfnQP_N? I have tried with various values for this parameter, but I always get a warning stating that "Fit order on E [c] reduced to 0". In the report file there is also printed some information like:

Energies 0th order c/v [ev]: 1.641430 0.251966
Energies 1st order : 0.000000 1.904008
Error: 0.38310 0.03367

Does this large error imply a bad fitting?

Also I am a bit confused about the use of the "iu" option described here
http://www.yambo-code.org/doc/vars/var_QPdb.php

Finally, in the scissor shift approach, what is the meaning of the valence/conduction stretching which have default values of 1?

BR
Thomas Olsen
Post doc
Technical University of Denmark

User avatar
myrta gruning
Posts: 240
Joined: Tue Mar 17, 2009 11:38 am
Contact:

Re: Interpolating QP corrections for BSE

Post by myrta gruning » Thu Nov 25, 2010 1:05 pm

tolsen wrote:For example, say I have calculated the quasiparticle corrections at the highest occupied and lowest unoccupied
bands at the 6 high symmetry points of a hexagonal lattice. Is it then possible to interpolate the quasiparticle energies to the rest of the Brillouin zone?
Yes Thomas it is possible in the way you are already following.

The db.QP you give may have in general less k-points and less bands than the ones you requested to correct.
The program proceeds in 2 ways depending on whether you have specified or not the ui option.

If the ui option is specified:
First Yambo check if it has all the k-points. If this is not the case uses the interpolation to calculate the QP corrections at the missing k-point for the bands that are in the database. By default the closest k point is used to deduce the correction, but you can specify a differrent number of neighbors with KfnQP_N. (without ui this keyword does not have any effect)
Second for the bands that are not in the database it calculates the QP corrections using a linear extrapolation. The coefficients of the linear extrapolation are derived from a linear fit of the corrections in the db+those obtained by the k-points interpolation

If the ui option is not specified:
All the missing corrections are calculated using a linear extrapolation. The coefficients of the linear extrapolation are derived from a linear fit of the corrections in the db.
tolsen wrote:But if I only have a few, what should be put for KfnQP_N? I have tried with various values for this parameter, but I always get a warning stating that "Fit order on E [c] reduced to 0". In the report file there is also printed some information like:

Energies 0th order c/v [ev]: 1.641430 0.251966
Energies 1st order : 0.000000 1.904008
Error: 0.38310 0.03367

Does this large error imply a bad fitting?
Yes, I think you do not have enough points. More than the error what it is worrying are the Energies 1st order (the linear coefficient).
You can try to switch on the interpolation or/and to add more calculated QP corrections.
Try to plot (and fit) yourself the QP corrections against the LDA energy so that you can get an idea if the program can get some reasonable value from the point you are providing.
tolsen wrote:Finally, in the scissor shift approach, what is the meaning of the valence/conduction stretching which have default values of 1?
It means that instead of doing a simple rigid shift
E_c = e_c + Scissor
E_v = e_v
your are correcting (stretching) as well the bandwidths
E_c = M_c*e_c + Scissor
E_v = M_v*e_v
with M_v M_c are the valence/conduction stretching coefficients (the deafault value 1 means no stretching)
(note that everything is shifted so that e_v for the top of the highest valence band is 0)
These values can be deduced by a linear fit on a set of QP corrections against the corresponding LDA energies.

Regards,
Myrta
Dr Myrta Grüning
School of Mathematics and Physics
Queen's University Belfast - Northern Ireland

http://www.researcherid.com/rid/B-1515-2009

tolsen
Posts: 25
Joined: Thu Oct 28, 2010 9:45 am

Re: Interpolating QP corrections for BSE

Post by tolsen » Mon Nov 29, 2010 2:44 pm

Hi Myrta

Thanks a lot for the detailed answer.

/Thomas

mdvorak
Posts: 15
Joined: Tue Apr 19, 2011 6:27 am

Re: Interpolating QP corrections for BSE

Post by mdvorak » Sun Sep 04, 2011 7:50 pm

Hi Developers,
I have a related and very simple question about the QP interpolation. You said Yambo can interpolate QP energies to the rest of the BZ beyond the calculated k-points:

"If the ui option is specified:
First Yambo check if it has all the k-points. If this is not the case uses the interpolation to calculate the QP corrections at the missing k-point for the bands that are in the database. By default the closest k point is used to deduce the correction, but you can specify a differrent number of neighbors with KfnQP_N. (without ui this keyword does not have any effect)"

How does one specify the new k-point grid to be interpolated from the calculated QP energies? I think you should be able to control the density of the new, interpolated grid but I am not sure how to do this. Also, are the interpolated QP energies printed anywhere or are they just stored for the calculation?

Thank you,
Marc Dvorak
Marc Dvorak, PhD student
Physics Department
Colorado School of Mines

sdwang
Posts: 287
Joined: Fri Apr 09, 2010 12:30 pm

Re: Interpolating QP corrections for BSE

Post by sdwang » Sat Feb 09, 2013 10:43 am

tolsen wrote:Hi

I have a few questions related to interpolation of QP energies when doing a BSE calculation.

For example, say I have calculated the quasiparticle corrections at the highest occupied and lowest unoccupied
bands at the 6 high symmetry points of a hexagonal lattice. Is it then possible to interpolate the quasiparticle energies to the rest of the Brillouin zone? It may sound a bit primitive, but I reckon it should be better than a simple scissor shift. As I understand it one should use something like,

KfnQPdb= "E < ../../GW/SAVE/ndb.QP"

which works fine if the file contain the QP energies at all my K-points. But if I only have a few, what should be put for KfnQP_N? I have tried with various values for this parameter, but I always get a warning stating that "Fit order on E [c] reduced to 0". In the report file there is also printed some information like:

Energies 0th order c/v [ev]: 1.641430 0.251966
Energies 1st order : 0.000000 1.904008
Error: 0.38310 0.03367

Does this large error imply a bad fitting?

Also I am a bit confused about the use of the "iu" option described here
http://www.yambo-code.org/doc/vars/var_QPdb.php

Finally, in the scissor shift approach, what is the meaning of the valence/conduction stretching which have default values of 1?

BR
Thomas Olsen
Post doc
Technical University of Denmark
Dear developers:
Does the "KfnQPdb= "E < ../../GW/SAVE/ndb.QP" still not work except for installing netCDF?
S. D. Wang
IMU,HOHHOT,CHINA
E-mail: sdwang@imu.edu.cn

User avatar
claudio
Posts: 456
Joined: Tue Mar 31, 2009 11:33 pm
Location: Marseille
Contact:

Re: Interpolating QP corrections for BSE

Post by claudio » Mon Feb 11, 2013 10:47 am

Dear S. D. Wang

if you didn't use netCDF the name of the quasiparticle database is db.QP and not ndb.QP
so you should change your line in:

"KfnQPdb= "E < ../../GW/SAVE/db.QP"


Claudio
Claudio Attaccalite
[CNRS/ Aix-Marseille Université/ CINaM laborarory / TSN department
Campus de Luminy – Case 913
13288 MARSEILLE Cedex 09
web site: http://www.attaccalite.com

Post Reply