pythtb.W90.model#

W90.model(zero_energy=0.0, min_hopping_norm=None, max_distance=None, ignorable_imaginary_part=None, *, onsite_imag_tol=1e-09)[source]#

Get TBModel associated with this Wannier90 calculation.

This function returns pythtb.TBModel object that can be used to interpolate the band structure at arbitrary k-point, analyze the wavefunction character, etc.

The tight-binding basis orbitals in the returned object are maximally localized Wannier functions as computed by Wannier90. Locations of the orbitals in the returned pythtb.TBModel object are the centers of the Wannier functions computed by Wannier90.

Parameters:
zero_energyfloat

Sets the zero of the energy in the band structure. This value is typically set to the Fermi level computed by the density-functional code (or to the top of the valence band). Units are electron-volts.

min_hopping_normfloat

Hopping terms read from Wannier90 with complex norm less than min_hopping_norm will not be included in the returned tight-binding model. This parameters is specified in electron-volts. By default all terms regardless of their norm are included.

max_distancefloat

Hopping terms from site i to site j+R will be ignored if the distance from orbital i to j+R is larger than max_distance. This parameter is given in Angstroms. By default all terms regardless of the distance are included.

ignorable_imaginary_partfloat

The hopping term will be assumed to be exactly real if the absolute value of the imaginary part as computed by Wannier90 is less than ignorable_imaginary_part. By default imaginary terms are not ignored. Units are again eV.

Returns:
tbpythtb.TBModel

The pythtb.TBModel that can be used to interpolate Wannier90 band structure to an arbitrary k-point as well as to analyze the character of the wavefunctions.

Notes

  • The character of the maximally localized Wannier functions is not exactly the same as that specified by the initial projections. The orbital character of the Wannier functions can be inferred either from the projections block in the prefix.win or from the prefix.nnkp file.

  • One way to ensure that the Wannier functions are as close to the initial projections as possible is to first choose a good set of initial projections (for these initial and final spread should not differ more than 20%) and then perform another Wannier90 run setting num_iter=0 in the prefix.win file.

  • The tight-binding model returned by this function is only as good as the input from Wannier90. In particular, the choice of initial projections can have a significant impact on the quality of the resulting Wannier functions. It is recommended to experiment with different sets of initial projections and to carefully analyze the resulting Wannier functions to ensure that they are physically meaningful.

  • The number of spin components is always set to 1, even if the underlying DFT calculation includes spin. Please refer to the projections block or the prefix.nnkp file to see which orbitals correspond to which spin.

Examples

Get TBModel with all hopping parameters

>>> my_model = silicon.model()

Simplified model that contains only hopping terms above 0.01 eV

>>> my_model_simple = silicon.model(min_hopping_norm=0.01)
>>> my_model_simple.display()