quanshengwu / wannier_tools

WannierTools: An open-source software package for novel topological materials. Full documentation:
http://www.wanniertools.org
GNU General Public License v3.0
257 stars 142 forks source link

Num_iter=0 is must for the Chern number calculation via wanniertools? #53

Closed Matephysics closed 5 years ago

Matephysics commented 5 years ago

Hi all, To calculate the Chern number via wanniertools, we give 'wannier90_hr.dat' file as an input which we get from wannier90 package. My question is that num_iter=0 is must for wanniertools to get a Chernumber? or num_iter≠0 also works and give a good result. My DFT and wannier90 band structure are well matched but for this, i have used num_iter=3000 which means they are maximally localized wannier functions. I need your guideline in this direction.

Chengcheng-Xiao commented 5 years ago

The main idea behind num_iter=0 is to get a well localized and "atomic-like" Wannier orbital set. This does not necessarily mean that num_iter should always set to zero, you can still use the iterative minimization scheme but it may result in some drifting in Wannier charge centers and orbital deformation.

TL; DR Simply do a fat band analysis and check what orbitals are responsible for the desired state, then, include them in both valence and conduction band. This should always yield a good result (you might want to make sure there are enough bloch bands in your DFT calculation).

Example: image

In this example: I deem all states in the valence band to be desired (green part), and they correspond to, let's say, p-orbitals. p-orbitals are also occupying conduction band alongside some other orbitals contributions which are deemed "undesired" (orange part).

To safely include all p-orbitals we have to set dis_win_max and dis_win_min to include them both in valence band and in conduction band. I have set the dis_win_max slightly above the maximum energy of p-orbitals in the conduction band to be safe, because there could be some higher energy p-orbital states at some k points which was not in our Brillouin zone sample, it's better safe than sorry.

To constrain the disentangle procedure so that it does not affect the desired state (especially states near the fermisurface if you are studying a TI or sorts), we have to set dis_froz_max and dis_froz_min to only include states purely made from p-orbitals.

Then, setting num_iter to 0 and run Wannier90.

This should always yield a fairly good localized Wannier orbital set (low spread, good band structure fit, etc.) since p-orbtials itself are orthogonal to each other and should be complete enough to describe this subspace.

I also recommend you going though the examples in the Wannier90 tutorial before your production run with these codes.

Best wishes.

quanshengwu commented 5 years ago

@Chengcheng-Xiao Thanks for your reply. @Matephysics If you set very large num_iter like num_iter=1000, then the atomic-orbital-like orbitals will be mixed with each other. We assume that our Wannier functions are pure spin up and spin down.