[Wien] Computing matrix elements using cell-periodic Bloch functions

Andrew Parks a.m.parks at gmail.com
Wed Jun 23 19:59:05 CEST 2021


Hello Wien2k Community,

I am seeking advice on the best approach for extracting/using information
about the eigenvectors that is not available within the current Wien2k code
(as far as I know).

For a custom k-point mesh (e.g. a 2D grid), I want to calculate the
band-diagonal overlaps of the cell-periodic Bloch functions between
neighbouring k-points; i.e. <u_{m,k}|u_{m,k+dk}>.  I then want to adjust
the k-dependent phases of the Bloch functions so that the overlaps become
real and positive.  This is a method for obtaining a smooth k-space gauge
for isolated (non-degenerate) bands. Once the smooth gauge is obtained, it
should then be possible to calculate Berry connections
(interband+intraband) with well-defined phase. This is the overall goal.

(ASIDE: in this approach the cell periodic functions remain eigenfunctions
of the k.p Hamiltonian, unlike the smooth k-space gauge produced by
Wannier90 which does not suit my needs)

In short, I want to write a program that does the following for a specified
list of bands:
- choose an initial k-point (k0) having arbitrary Bloch phase
- compute overlap with a neighbouring k-point (k0+dk)
- adjust phase at (k0+dk) to give real overlap with (k0)
- Use (k0+dk) as the next starting point; repeat above steps to obtain real
overlaps throughout the entire k-mesh

Once this is completed, the final step would be to compute the Berry
connections between bands.  The intraband connections can be obtained from
the overlaps.  The interband connections can be obtained from the momentum
matrix elements (as calculated by optic).

I think the w2w program performs the first step of this calculation
(computing overlaps) in preparation for a Wannier90 calculation.  The w2w
source code does not have much documentation so it is a bit difficult for
me to follow.  At a glance, it looks like the overlaps are calculated in
the "planew_m" module contained in "modules_rc.F".

It would be helpful if someone with more familiarity could confirm if I am
on the right track, and perhaps offer a bit of guidance on how to adapt
this part of the w2w module to suit my task.  I would also want to adapt
code from the optic program in order to calculate the interband momentum
matrix elements at the end.  Finally, it is important to be able to include
spin-orbit coupling in this calculation.  I haven't been able to find much
information on how the eigenvectors are stored and used in calculations,
but this seems important.  The information I need is obviously present; the
issue is learning how the code is structured so I can work with it.

Apologies for the long email, but this is a rather specific task I am
working on.  Any help would be appreciated.

Thanks,

Andrew Parks
PhD Candidate
Department of Physics
University of Ottawa
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://zeus.theochem.tuwien.ac.at/pipermail/wien/attachments/20210623/f4466f16/attachment.htm>


More information about the Wien mailing list