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
255 stars 142 forks source link

Comparison of conductivity tensor with Wannier90 #117

Open AKB-OU opened 1 year ago

AKB-OU commented 1 year ago

Dear developers and users,

I have recently noticed the following points by comparing the OHE results with Wannier90. (The calculations were done using the hr file of copper produced by QE and Wannier90, and the used WT version is the latest one obtained by git clone on May 26. The source hr file is identical in WT and Wannier90 calculations.)

The conductivity at zero-field obtained by WT is as follows:

# Conductivity tensor/tau (in unit of (\Omega*m*s)^-1) for every contributing band
# T =          30.0000 K
# Column    1               2               3               4               5               6               7               8               9              10
#     BTau (T.ps)              xx              xy              xz              yx              yy              yz              zx              zy              zz
    0.000000E+00    0.897780E+21    0.000000E+00    0.000000E+00    0.266373E+04    0.897780E+21    0.000000E+00    0.000000E+00    0.000000E+00    0.783706E+21

On the other hand, the conductivity obtained by Wannier90 (BoltzWann) is

# Written by the BoltzWann module of the Wannier90 code.
# [Electrical conductivity in SI units, i.e. in 1/Ohm/m]
# Mu(eV) Temp(K) ElCond_xx ElCond_xy ElCond_yy ElCond_xz ElCond_yz ElCond_zz
   16.02080000       30.00000000       1786549181.       36679623.54       1786282001.      -70933311.67      -60614827.10       1822483517.   

In the Wannier90 calculation, I set 'boltz_relax_time = 1000' (tau = 1 ps), so the above results means

# Mu(eV) Temp(K) ElCond_xx ElCond_xy ElCond_yy ElCond_xz ElCond_yz ElCond_zz
   16.02080000       30.00000000       1.786549181E+21       0.03667962354E+21       1.786282001E+21      -0.07093331167E+21      -0.06061482710E+21       1.822483517E+21   

in unit of (\Omega m s)^-1.

The values obtained by WT looks smaller (about 1/2) compared with those obtained by Wannier90.

By the way, the results obtained from WT_2.5.1 is

# Conductivity tenso    6 temperature at          30.0000 K chemical potential at           0.0000 eV
#     BTau (T.ps)OmegaTau (eV.ps)              xx              xy              xz              yx              yy              yz              zx              zy              zz
    0.000000E+00    0.000000E+00    0.170545E+22    0.000000E+00    0.000000E+00   -0.160156E+04    0.170545E+22    0.000000E+00    0.000000E+00    0.000000E+00    0.163565E+22

which look rather consistent with Wannier90.

I would like to know your opinion.

Best, AKB_OU

AKB-OU commented 1 year ago

Dear developers and users,

Additionally, I would like to share the results of a convergence test of sigma_{xx}(B = 0 T) as a function of k-mesh. conv_test

The parameters used for the WannierTools calculation is

&SYSTEM
SOC = 0                ! without soc : SOC=0; with soc : SOC=1
E_FERMI = 16.0208       ! e-fermi
Btheta= 0, Bphi= 90    ! magnetic field direction, Btheta is the angle with z axial, Bphi is the angle with respect to x axial in the x-y plane
NumOccupied = 6        ! set it anyway even don't use it.
/

&PARAMETERS
OmegaNum = 1        ! omega number       
OmegaMin =  0.0     ! energy interval
OmegaMax =  0.0     ! energy interval
EF_broadening = 0.06  ! in eV, a broadening factor to choose the k points for integration
BTauNum= 1        ! Number of B*tau we calculate
BTauMax = 0.0      ! The maximum B*tau, starting from Btau=0.
Tmin = 30           ! Temperature in Kelvin
Tmax = 30          ! Temperature in Kelvin
NumT = 1           ! number temperature we calculate. T=Tmin+(Tmax-Tmin)/(NumT-1)
Nslice_BTau_Max = 20000 ! increase this number if negative magnetoresistance occurs, default =5000
/

and the parameters for the BoltzWann calculation is

boltzwann = .true.
boltz_relax_time = 1000
boltz_mu_min = 16.0208
boltz_mu_max = 16.0208
boltz_mu_step = 1
boltz_temp_min = 30
boltz_temp_max = 30
boltz_temp_step = 1
boltz_tdf_energy_step = 0.001
boltz_tdf_smr_type=f-d

I can provide the complete input files upon request. Any comments are welcome.

Best, AKB

Dongsheng-Wen commented 4 months ago

Hi AKB-OU, This is very interesting. Do the two packages have the same level of theories/methods to compare the results? In older versions, there was no EF_broadening parameter for the integration. Instead, it was fixed to 0.05eV. In the new version, they added this parameter to allow us to play with it. In your settings, you have EF_broadening = 0.06. I am not sure how this can affect your calculation above. In addition, it seems to me ~60x60x60 kpoints are sufficient to converge both calculations. Do you know how this convergence behavior related to B angles?

Thanks, Dongsheng

AKB-OU commented 3 months ago

Dear Dongsheng,

Thank you for your comment.

Although I am not a theoretical expert, I think these packages are both based on the semiclassical Boltzmann equation. For BoltzWann code, please see a technical paper (Conductivity is calculated based on Eqs. (5) and (8)). For magnetoresistance calculation in WT, please see this page.

Regarding EF_broadening, I would like to check the difference between EF_broadening = 0.05 and 0.06. (I expect there is little difference) I will let you know when the results come out.

About the convergence criteria under B, I have tested rho_yx(B) using various k-mesh (not in copper, but in another material) As far as I remember, more than 100x100x100 k-mesh was required to converge rho_yx(B). However, I tested for only a few B angles, so I cannot comment on detailed dependence on theta and phi. Of course, I think the necessary k-mesh depends on the system you are interested in.

Best, AKB

AKB-OU commented 3 months ago

I would like to share the test results. I used the newest WT version 2.7.0. The difference of a factor of ~2 still exists. There was no discernible difference between EF_broadening = 0.05 and 0.06. conv