advantage of doing shiftk?

Total energy, geometry optimization, DFT+U, spin....

Moderator: bguster

Locked
temok
Posts: 39
Joined: Tue Jun 08, 2010 1:44 am

advantage of doing shiftk?

Post by temok » Thu Apr 07, 2016 11:26 pm

Dear all,

For hexagonal lattices, the documentation of the keyword shiftk suggests

Code: Select all

 nshiftk  1
 shiftk 0.0 0.0 0.5


1) What's the advantage of doing shiftk (in general)?

2) Is there any reason to apply this shift for a 2D material, like graphene?
(by shifting by 0.5 along b_3 we will miss the Dirac point 1/3, 1/3, 0).

I am using the optic utility for graphene, where we need to compute WFK and 1WF (matrix elements)
over a homogeneous k-grid; I am wondering if I should use the shiftk given above, or a null shift.
My preliminar results seem to be sensitive to this shift, but not completely different.
The unsifted grid misses some absorption peaks in the dielectric function.

Thanks,
Temok

p.s. Here my concern with more details. If

Code: Select all

ngkpt <N>  <N>  1  # <N> is a multiple of 3

then

Code: Select all

1/3    1/3    1/2  # will be included 
1/3    1/3    0.0  # will not be included

mverstra
Posts: 655
Joined: Wed Aug 19, 2009 12:01 pm

Re: advantage of doing shiftk?

Post by mverstra » Fri Apr 08, 2016 8:59 am

Hello Temok,

Have a look at the paper of Monkhorst and Pack (H. J. Monkhorst and J. D. Pack, Phys. Rev. B 13, 5188 (1976)) for a classic example. The idea is to optimize the precision of an _integral_ in k space (Etot, Force, stress...) with respect to the number of reduced k-points. If you use symmetry, and center the grid at Gamma, the Gamma point is alone and can not be reduced by symmetry. Idem for high symmetry points at the zone boundary (there will be 4, 6, 8 of them, instead of 48 for a general point in some cubic groups). By shifting the grid slightly, you end up with only points which are _off_ the symmetry operations (planes and axes), such that they are all reducible by symmetry. For the same density of k-points you have a greater precision in the integral. The shift must respect the symmetry, however: in tetragonal either along the 4 axis or 4 equivalent shifts off of the axis; in hexagonal either along the 6 axis or 6 equivalent shifts off of it.

Further, if your unit cell has a strong aspect ratio (very pointy -FCC- or very flattened -BCC) the default grid you get may have points very close together in certain directions (typically in planes perpendicular to the long direction of the BZ), which is not efficient either. The ideal is a homogeneous grid in _Cartesian_ space, while by default with ngkpt you make the grid homogeneous in _reduced_ k coordinates. To fix this, you can use several coordinated shifts, or equivalently set the kptrlatt, which is the basis of vectors for the k-grid (each vector is divided by its integer length, so (10, 0, 0, 0, 10, 0, 0, 0, 10) gives an actual vector (0.1, 0, 0, 0, 0.1, 0, 0, 0, 0.1)). To optimize, it turns out you need to set kptrlatt to the reciprocal lattice of the reciprocal lattice, which is the real space lattice directions (again the norm is determined by how dense a grid you want)!! This is quite subtle but general: you get a homogeneous Cartesian grid by choosing kptrlatt proportional to the real space lattice directions. If you set kptrlen and ask abinit to generate a set of grids, it will automatically optimize the grid density and directions, and give you a list with increasing quality (integral error and low nkpt).

Also see our previous conversation http://forum.abinit.org/viewtopic.php?f=8&t=3&hilit=shiftk#p15 with pretty pictures.

However! This is for integrals, which is great for converging your ground state and structure. But if you want spectroscopic properties (Band structures, optical absorption etc...) you need specific k-points (Gamma, zone boundaries) because that is where the band extrema and the important transitions sit (most band gaps and band edges, though not all cfr Silicon). Here you should revert to a centered grid, though the Cartesian space argument still holds, so you could choose the abinit proposed kptrlatt values, but with shiftk 0 0 0. You have to do this for phonon q-grids as well in most cases, unless the only thing you care about is the integrated quantities, such as free energy or DOS. Usually you want a band structure, so you Gamma center your q grid. So in a word, you are correct - you want to center your grid. You could even relax with a shifted grid, then do a non shifted, non SCF calculation for optic/conducti/other.

ciao

Matthieu
Matthieu Verstraete
University of Liege, Belgium

Locked