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
Interpolating QP corrections for BSE
Moderators: Davide Sangalli, andrea.ferretti, myrta gruning, andrea marini, Daniele Varsano, Conor Hogan
- myrta gruning
- Posts: 242
- Joined: Tue Mar 17, 2009 11:38 am
- Contact:
Re: Interpolating QP corrections for BSE
Yes Thomas it is possible in the way you are already following.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?
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.
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).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?
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.
It means that instead of doing a simple rigid shifttolsen wrote:Finally, in the scissor shift approach, what is the meaning of the valence/conduction stretching which have default values of 1?
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
School of Mathematics and Physics
Queen's University Belfast - Northern Ireland
http://www.researcherid.com/rid/B-1515-2009
-
- Posts: 25
- Joined: Thu Oct 28, 2010 9:45 am
Re: Interpolating QP corrections for BSE
Hi Myrta
Thanks a lot for the detailed answer.
/Thomas
Thanks a lot for the detailed answer.
/Thomas
-
- Posts: 15
- Joined: Tue Apr 19, 2011 6:27 am
Re: Interpolating QP corrections for BSE
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
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
Physics Department
Colorado School of Mines
-
- Posts: 299
- Joined: Fri Apr 09, 2010 12:30 pm
Re: Interpolating QP corrections for BSE
Dear developers: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
Does the "KfnQPdb= "E < ../../GW/SAVE/ndb.QP" still not work except for installing netCDF?
- claudio
- Posts: 526
- Joined: Tue Mar 31, 2009 11:33 pm
- Location: Marseille
- Contact:
Re: Interpolating QP corrections for BSE
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
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
[CNRS/ Aix-Marseille Université/ CINaM laborarory / TSN department
Campus de Luminy – Case 913
13288 MARSEILLE Cedex 09
web site: http://www.attaccalite.com