[Wannier] Kmesh errors

Jonathan Yates jry20 at cam.ac.uk
Sun Sep 2 17:26:37 CEST 2007


On Sat, 1 Sep 2007, Brad Malone wrote:

> Hi, I am trying to generate the .nnkp file for a system that I am studying
> with a 6x6x3 grid and I am getting an error saying that the completeness
> relation from MV appendix B is not being satisfied.  So I looked at that
> paper and saw them mention that I could include more shells, so I added more
> shells (the code selects only shells 1 and 2 automatically).  However, when
> I do this either I get the same error or I get another error saying that
> "kmesh_shell_fixed: Singular Value Decomposition has found a very small
> singular value" (depending on which shells I select).  Is there something
> else that I can do to get around this?  I'm not sure what else I can modify.

To give the resolution of this issue:

  It turns out there is a small bug in the routine that picks the k-point 
shells. This is now fixed in our cvs version, and will be included in the 
next wannier90 release (end of Sept).
  The bug is triggered in only very few cases; also the routine is very 
'paranoid' so if you encounter this bug it will stop with an error 
message, rather than give wrong results.


  Jonathan


  I include below some comments about what triggers the bug - as it is 
potentially useful - although rather technical.

  So the issue is to choose the shells of kpoints to give a good finite 
difference representation of the position operator (through the B1 
condition of MV).

  Take a simple orthorhombic cell. a/=b/=c angles=90. To satisfy B1 we have 
3 kpoint shells, each with 2 kpoints (6 total).
  Now distort the cell such that the angle are no longer 90 (say 82, 
75,87). This is triclinic and we now need 6 shells, each with 2 kpoints 
(12 total).

  But was happens if the distortion from orthorhombic is small, say 89.9 
degrees. Or even smaller 89.99 or 89.999999?
  There has to be a numerical tolerance within the code that decides when 
we move from 3 shells to 6 shells. Brad's problem was caused because two 
parts of the code used different tolerances (opps!).
  I've now added a keyword kmesh_tol which allows a user to control the 
tolerance. This is not unlike the symmetry tolerance parameter in most 
electronic structure codes.

  In Brad's case the angles were only very slightly different from 90. This 
means that the 1st 3 shells have very large weights. The remaining 3 
shells have much smaller weights (4-5 orders of magnitude). It would be 
possible to increase kmesh_tol and only include the 1st 3 shells. (which 
would be faster, but one would want to test its effect).







-- 
Dr Jonathan Yates         |    Theory of Condensed Matter Group
Corpus Christi College    |    Cavendish Laboratory
Cambridge, CB2 1RH, UK    |    Cambridge, CB3 OHE, UK
email jry20 at cam.ac.uk     |    Tel +44 (0)1223 337461




More information about the Wannier mailing list