Page 1 of 1

Interpolating QP corrections for BSE

Posted: Wed Nov 24, 2010 4:14 pm
by tolsen
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

Re: Interpolating QP corrections for BSE

Posted: Thu Nov 25, 2010 1:05 pm
by myrta gruning
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

Re: Interpolating QP corrections for BSE

Posted: Mon Nov 29, 2010 2:44 pm
by tolsen
Hi Myrta

Thanks a lot for the detailed answer.

/Thomas

Re: Interpolating QP corrections for BSE

Posted: Sun Sep 04, 2011 7:50 pm
by mdvorak
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

Re: Interpolating QP corrections for BSE

Posted: Sat Feb 09, 2013 10:43 am
by sdwang
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?

Re: Interpolating QP corrections for BSE

Posted: Mon Feb 11, 2013 10:47 am
by claudio
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