Page 1 of 1

confused band interpolation

Posted: Tue Sep 16, 2014 12:57 pm
by leoteo
Dear forum,

My goal is to produce a density of states for a 1d system.
It is my first time to use ypp; I am using yambo SVN revision 59.

First I wanted to check the interpolation of k-points.I have a 1d system with 64 k-points in the 1st Brillouin zone and I extrapolated to 128 points between k=0 and k=0.5 [2pi/a] using the following input for ypp

Code: Select all

bnds                         # [R] Bands
electrons                    # [R] Electrons (and holes)
cooIn= "rlu"                 # Points coordinates (in) cc/rlu/iku/alat
% BKpts
 0.00     | 0.00     | 0.00     |        # Bands circuit
 0.50     | 0.00     | 0.00     |        # Bands circuit
%
BANDS_steps=128              # Number of divisions
% BANDS_range
    20 |  31 |               # Bands Range
%
% INTERPGrid
-1 |-1 |-1 |                             # Interpolation Grid
%
#GfnQPdb= "E < SAVE/ndb.QP"              # [EXTQP G] Database
These are the results for the DFT part, where I have plotted the original energies as squares and the interpolated values as crosses:
dft-bands.png
While the conduction and valence band are represented more or less okay (still there is some wiggling), the interpolation gets confused for the other bands.
Note that in the unoccupied bands, the fit is confused even in regions far away from band crossings.

For the GW bands (not shown), the interpolation is even worse.

Are there any parameters I should adjust for the interpolation in the DFT and the GW? I tried to find some documentation on the INTERPGrid and GfnQP_* parameters, but I was not successful.

Best,
Leopold

Re: confused band interpolation

Posted: Tue Sep 16, 2014 1:19 pm
by Daniele Varsano
Dear Leopold,
this is quiet disturbing,
thanks for reporting, we will have a look at that. Just a question, when you plot your DFT band structure (not interpolated), using continuous lines (and not with points) do you observe jumps? ie, there are some index switching. Just wondering, that if it happen the interpolation scheme can fail.

Best,

Daniele

Re: confused band interpolation

Posted: Tue Sep 16, 2014 2:39 pm
by Davide Sangalli
Dear Leopold,
the interpolation is based on sinusoidal functions, so some wiggling is expected, although not as much as you found.
Also the interpolation method is optimized for 3D system, I guess it is not very smart for a 1D system where a simpler scheme could be adopted.

In any case we have upgraded the interpolation subroutine with the option of tuning some paramenters, but this is not yet in the GPL.
What you can do is the following. The code should give an estimate of the error. If this is high, you could try to change the value of
lpfac = 5.0_SP
in
src/modules/mod_interpolate.F

Try to set
lpfac = 20.0_SP
for example, or even something higher (the higher the number the slower and more memory demanding will be the interpolation).

Since you are going to change a "module", remember to do a "make clean" before re-compiling ypp and yambo.

Hope it helps,
Davide

Re: confused band interpolation

Posted: Tue Sep 16, 2014 4:03 pm
by leoteo
Dear Daniele and Davide,

thanks a lot for your very quick replies! Your support in the forum is really outstanding.

@Daniele: In the DFT, the bands are ordered by energy for every k-point (see below; one line per band index)
dft-lines.png
@Davide: I set lpfac to 25.0_SP and indeed this solved the problem for the DFT part - thanks a lot!
dft-bands.png
I guess this means, I can now proceed with calculating the DOS using something like

Code: Select all

% INTERPGrid				
256 | 1 | 1 |		#		 Interpolation Grid
%
?


Best,
Leopold

Re: confused band interpolation

Posted: Tue Sep 16, 2014 4:18 pm
by Davide Sangalli
Well the only difference between using a path (BKpts) or a grid (INTERPGrid) is that in one case the code will use kpts along specific lines, in the other a regular mesh.
Since you have a 1D BZ, i.e. a line, they will result in the same thing. So you can use either the path or the grid in the same way. Do not set both otherwise the code could have problems ...

Davide