Z2PackDev / Z2Pack

A tool for calculating topological invariants.
https://z2pack.greschd.ch
GNU General Public License v3.0
84 stars 51 forks source link

Using z2pack for 2D 1T'-MoS2 #218

Open shahid-sattar opened 7 months ago

shahid-sattar commented 7 months ago

I am trying to reproduce results for 2D 1T'-MoS2 using Z2pack, an example is given here using wanniertools package, so there is a reference available

The system is periodic in xy-direction and vacuum in z-direction (a 0 0, 0 b 0, 0 0 c=30.0). Since I did wannierzation already using wannier90, I know which orbitals to consider. Nevertheless, since I don't know how can I add this in my input/wannier90.win file in z2pack, I take the following as wannier90.win file:

num_wann = 44 num_bands = 44 spinors : true num_iter 0 shell_list 1 exclude_bands : 1-24 skip_b1_tests = true

I use following settings in run.py file,

Screenshot 2024-05-02 at 07 00 41

However, I don't get a non-zero Z2 number as the output from Z2pack, as it is given here

Screenshot 2024-05-02 at 07 02 05

May I ask what is wrong that I am doing here?

greschd commented 7 months ago

The following parameter seems a bit suspicious to me

exclude_bands : 1-24

as this means only bands 25-44 are considered in the calculation. Usually, this setting is used in the Z2Pack context to exclude unoccupied bands.

Looking at the WannierTools example

NumOccupied = 36 ! Number of occupied Wannier bands

I'd guess (if the system is set up with the same pseudopotentials) the input should be

exclude_bands : 37-44

shahid-sattar commented 7 months ago

Hi, thanks for the response. I have checked very carefully that the number of bands are correct. Because I have total 68 bands in DFT run, 1-24 form an energy window which is much below my range of interest, and therefore, I took 44 wannier projections (2 Mo atoms< 20, 4 S atoms < 24, total 44) and 44 upper bands after excluding 1-24 bands much below in energy. Despite these band numbers are different from the example, my wannier spread is atomic-like and I reproduced all listed topological features for 1T'-MoS2. Screenshot from 2024-05-02 09-24-33 Screenshot from 2024-05-02 09-29-00 Screenshot from 2024-05-02 09-30-44 Screenshot from 2024-05-02 09-32-13

Again, I am not so clear where is the issue. Perhaps I can put this case as an example of a 2D system, if resolved, because 1T'-MoS2 is a well-defined system.

greschd commented 7 months ago

Unlike a general Wannier90 calculation, for Z2Pack you will additionally need to exclude the unoccupied bands. This is because Z2Pack calculates the hybrid WCC for all bands considered in the Wannier90 input [1]. If all bands (occupied and unoccupied) are considered, the result will always be trivial since their topologies cancel out.

[1] It is not running a real Wannier90 calculation, just its pre-processor for the purpose of generating the MMN matrices.

shahid-sattar commented 7 months ago

Alright. So, then I have 68 bands in total, 52 are occupied bands, and 16 are unoccupied. I should take 1-52 bands, and exclude 53-68, right? and in this situtation, should I adjust num_wann=44 and num_bands=52?

shahid-sattar commented 7 months ago

Here is the outcome when I consider only occupied region, take all bands in my case (num_bands=52) and take projections (num_wann=44), I got the right result. Z2=1 for both kz=0 and kz=0.5 planes. Screenshot from 2024-05-02 11-10-57 One last thing to clarify, can I specify in the input file that I want to take projections on Mo d and S p orbitals? If so, can it expedite the outcome?

greschd commented 6 months ago

can I specify in the input file that I want to take projections on Mo d and S p orbitals

If memory serves me well, the initial projections don't affect the MMN matrix (which is the only input to Z2Pack) at all. You may want to double-check that, though. It's definitely not required to pick a good initial projection for the Z2Pack calculation directly from DFT to work.

What you might want to consider from this output is that the GapCheck and MoveCheck convergence criteria have failed. These are implemented to guard against fast changes in the hybrid Wannier charge center evolution. In the absence of these checks, the computed invariants are unreliable. To fix this, you should reduce the min_neighbour_dist parameter.

The cause for this is probably that the system has a quite narrow direct band gap. From experience, this correlates with sharp peaks in the Berry flux / fast-changing hybrid Wannier charge centers. Generally, I'd also advise increasing the initial num_lines parameter (e.g. to 100), since the convergence checks can only work if the initial lines are close to the direct band gap minimum.