Classes#
For now, there is the WannierTBmodel class.
- class spinWannier.WannierTBmodel.WannierTBmodel(seedname='wannier90', sc_dir='0_self-consistent', nsc_dir='1_non-self-consistent', wann_dir='2_wannier', bands_dir='1_band_structure', tb_model_dir='2_wannier/tb_model_wann90', spn_formatted=False, spn_file_extension='spn', data_saving_format='parquet', band_for_Fermi_correction=None, kpoint_for_Fermi_correction='0.0000000E+00 0.0000000E+00 0.0000000E+00')#
Bases:
object
Calculates interpolated spin-texture on a dense k-point path. Plots the spin-texture on a 2D k-point mesh (Fermi surface). Calculates the quality of the Wannier functions.
- Needed files are
wannier90.eig
wannier90.win
wannier90.spn (or the WAVECAR file of VASP)
wannier90_u.mat
wannier90_u_dis.mat (if disentanglement was performed)
(FERMI_ENERGY.in file containing the Fermi energy value)
- PROCEDURE:
- Take the
spn_dict.dat and
u_dis_dict.dat along with
u_dict.dat
to obtain the S_mn(W), i.e., the spn matrix in the Wannier gauge.
- Then interpolate on an arbitrary k-point by performing the
Fourier transform to real space (on the coarse DFT k-point grid) and then
inverse Fourier transform with an arbitrary k-point.
- Interpolate the Hamiltonian on a dense k-point grid:
Take the diagonal Hamiltonian from DFT (the eigenvalues for the coarse k-point grid).
Apply the U(dis) and U to get the Hamiltonian in Wannier gauge H_mn(W).
inverse Fourier transform for an arbitrary k-point (dense k-point mesh).
- interpolate_bands_and_spin(kpoint_matrix, fout='bands_spin', kpath_ticks=None, kmesh_2D=False, kmesh_density=101, kmesh_2D_limits=[-0.5, 0.5], save_real_space_operators=True, save_folder_in_model_dir='tb_model_wann90/', save_bands_spin_texture=True)#
Interpolate the bands and the spin texture on a dense k-point path or 2D mesh.
- Parameters:
kpoint_matrix (list) – List of k-points in the path.
fout (str, optional) – Output file name. Defaults to ‘bands_spin’.
kpath_ticks (list, optional) – List of k-point ticks. Defaults to None.
kmesh_2D (bool, optional) – Whether to interpolate on a 2D mesh. Defaults to False.
kmesh_density (int, optional) – Density of the k-point mesh. Defaults to 101.
kmesh_2D_limits (list, optional) – Limits of the 2D mesh. Defaults to [-0.5, 0.5].
save_real_space_operators (bool, optional) – Whether to save the real space operators as dictionary files. Defaults to True.
save_folder_in_model_dir (str, optional) – Folder to save the data in the model directory. Defaults to “tb_model_wann90/”.
save_bands_spin_texture (bool, optional) – Whether to save the bands and spin texture. Defaults to True.
- plot1D_bands(fout='spin_texture_1D_home_made.jpg', yaxis_lim=[-8, 6])#
Plot the bands and the spin texture on a 1D path.
- Parameters:
fout (str, optional) – Output figure name. Defaults to ‘spin_texture_1D_home_made.jpg’.
yaxis_lim (list, optional) – Y-axis limits. Defaults to [-8, 6].
- plot2D_spin_texture(fin_2D='bands_spin_2D', fin_1D='bands_spin', fig_name='spin_texture_2D_home_made.jpg', E_to_cut=None)#
Plot the spin texture on a 2D mesh (Fermi surface).
- Parameters:
fin_2D (str, optional) – File name of the 2D mesh data. Defaults to ‘bands_spin_2D’.
fin_1D (str, optional) – File name of the 1D path data. Defaults to ‘bands_spin’.
fig_name (str, optional) – Output figure name. Defaults to “spin_texture_2D_home_made.jpg”.
E_to_cut (float, optional) – Energy to cut. Defaults to None.
- wannier_quality(band_for_Fermi_correction=None, kpoint_for_Fermi_correction='0.0000000E+00 0.0000000E+00 0.0000000E+00', yaxis_lim=[-10, 10])#
Calculate the quality of the Wannier functions compared to the original DFT band structure.
- Parameters:
band_for_Fermi_correction (_type_, optional) – Band number for Fermi correction. Defaults to None -> the lowest Wannier band wil be used.
kpoint_for_Fermi_correction (_type_, optional) – K-point for Fermi correction. Defaults to ‘0.0000000E+00 0.0000000E+00 0.0000000E+00’ (Gamma point).
yaxis_lim (list, optional) – Limits of the y-axis. Defaults to [-10, 10].