BAND_STRUCTURE k-point unit conversion bug leads to bogus band structures (CP2K 4.1)

Eric Hermes erich... at gmail.com
Tue Nov 1 21:35:46 CET 2016


Hello,

I am working with ASE to develop routines for the various DFT calculators 
we support for simple, automatic generation of band structures. I have run 
into a bug in CP2K's SPECIAL_POINT specification, wherein the specified 
k-points appear to undergo a redundant B_VECTOR -> CART_BOHR unit 
conversion. What I mean by that is if I pass the k-points as multiples of 
the reciprocal unit vectors (i.e. UNIT B_VECTOR, SPECIAL_POINT 0.5 0.25 
0.75 for the W point of the diamond lattice), this is multiplied by the 
reciprocal unit cell vector *twice*. If I pass the points in units of 
2pi/Bohr (i.e. UNIT CART_BOHR, SPECIAL_POINT 0.049 0.098 0.000 for a 
primitive Si diamond lattice with lattice constant a=5.4 angstrom), the 
k-points are multiplied by the reciprocal unit cell vector *anyway*, giving 
the same results as before. I can "trick" the system into providing the 
correct result by saying that I am passing the k-points in 2pi/Bohr, but 
actually passing the k-points in multiples of the reciprocal unit cell 
vectors (i.e. UNIT CART_BOHR, SPECIAL_POINT 0.5 0.25 0.75). This results in 
both the output file and the band structure file printing the exact 
k-points that I specified (i.e. the k-points in multiples of the reciprocal 
unit vectors), and the resulting band structure matches that of other DFT 
codes.

Here is an example of the input file I am using that expresses the bug: 
https://gist.github.com/ehermes/7ef3d7249b99eeafb34bb14e6c51fd48
This input file was generated by (a modified version of) ASE, and it 
produces the incorrect band structure. If line 31 is changed to read "UNITS 
CART_BOHR", the resulting band structure is correct and matches the band 
structure produced by other codes (GPAW, VASP, etc).

I have taken a look at the qs_band_structure.F source file, but the origin 
of the bug is not obvious to me. I suspect it might be related to line 197, 
which multiplies each kpoint by the transpose of the unit cell vector, but 
I am not certain.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cp2k.org/archives/cp2k-user/attachments/20161101/db60a754/attachment.html>


More information about the CP2K-user mailing list