# 2.2. Introduction of input files¶

Attention: From WannierTools 2.2, the name of input file changes from ‘input.dat’ to ‘wt.in’. The excutable binary changes from ‘wann_tools’ to ‘wt.x’

There are two input files you should prepare wt.in and wannier90_hr.dat

## 2.2.1. Main input file wt.in¶

Before executing wann_tools, you should cp the wt.in file in the directory wannier_tools/example by your own necessary.

For version later than 2.0, we updated the format of wt.in. The input file is structured in a number of NAMELIST and INPUT_CARDS.

Here we introduce the wt.in for Bi2Se3 as an example

&TB_FILE
Hrfile = 'wannier90_hr.dat'
Package = 'VASP'             ! obtained from VASP, it could be 'VASP', 'QE', 'Wien2k', 'OpenMx'
/

LATTICE
Angstrom
-2.069  -3.583614  0.000000     ! crystal lattice information
2.069  -3.583614  0.000000
0.000   2.389075  9.546667

ATOM_POSITIONS
5                               ! number of atoms for projectors
Direct                          ! Direct or Cartisen coordinate
Bi 0.3990    0.3990    0.6970
Bi 0.6010    0.6010    0.3030
Se 0     0     0.5
Se 0.2060    0.2060    0.1180
Se 0.7940    0.7940    0.8820

PROJECTORS
3 3 3 3 3          ! number of projectors
Bi px py pz         ! projectors
Bi px py pz
Se px py pz
Se px py pz
Se px py pz

SURFACE            ! See doc for details
1  0  0
0  1  0

&CONTROL
BulkBand_calc         = T
BulkFS_calc           = T
BulkGap_cube_calc     = T
BulkGap_plane_calc    = T
SlabBand_calc         = T
WireBand_calc         = T
SlabSS_calc           = T
SlabArc_calc          = T
SlabQPI_calc          = T
SlabSpintexture_calc  = T
Wanniercenter_calc    = T
BerryCurvature_calc   = T
EffectiveMass_calc    = T
/

&SYSTEM
NSLAB = 10              ! for thin film system
NSLAB1= 4               ! nanowire system
NSLAB2= 4               ! nanowire system
NumOccupied = 18        ! NumOccupied
SOC = 1                 ! soc
E_FERMI = 4.4195        ! e-fermi
Bx= 0, By= 0, Bz= 0     ! Bx By Bz
surf_onsite= 0.0        ! surf_onsite
/

&PARAMETERS
Eta_Arc = 0.001     ! infinite small value, like brodening
E_arc = 0.0         ! energy for calculate Fermi Arc
OmegaNum = 100      ! omega number
OmegaMin = -0.6     ! energy interval
OmegaMax =  0.5     ! energy interval
Nk1 = 21           ! number k points  odd number would be better
Nk2 = 21           ! number k points  odd number would be better
Nk3 = 21           ! number k points  odd number would be better
NP = 1              ! number of principle layers
Gap_threshold = 1.0 ! threshold for GapCube output
/

KPATH_BULK            ! k point path
4              ! number of k line only for bulk band
G 0.00000 0.00000 0.0000 Z 0.00000 0.00000 0.5000
Z 0.00000 0.00000 0.5000 F 0.50000 0.50000 0.0000
F 0.50000 0.50000 0.0000 G 0.00000 0.00000 0.0000
G 0.00000 0.00000 0.0000 L 0.50000 0.00000 0.0000

KPATH_SLAB
2        ! numker of k line for 2D case
K 0.33 0.67 G 0.0 0.0  ! k path for 2D case
G 0.0 0.0 M 0.5 0.5

KPLANE_SLAB
-0.1 -0.1      ! Original point for 2D k plane
0.2  0.0      ! The first vector to define 2D k plane
0.0  0.2      ! The second vector to define 2D k plane  for arc plots

KPLANE_BULK
-0.00 -0.00  0.00   ! Original point for 3D k plane
1.00  0.00  0.00   ! The first vector to define 3d k space plane
0.00  0.50  0.00   ! The second vector to define 3d k space plane

KCUBE_BULK
-0.50 -0.50 -0.50   ! Original point for 3D k plane
1.00  0.00  0.00   ! The first vector to define 3d k space plane
0.00  1.00  0.00   ! The second vector to define 3d k space plane
0.00  0.00  1.00   ! The third vector to define 3d k cube

EFFECTIVE_MASS      ! optional
2                   ! The i'th band to be calculated
0.01                ! k step in unit of (1/Angstrom)
0.0 0.0 0.0         ! k point where the effective mass calculated.

WANNIER_CENTRES     ! copy from wannier90.wout
Cartesian
-0.000040  -1.194745   6.638646
0.000038  -1.196699   6.640059
-0.000032  -1.192363   6.640243
-0.000086  -3.583414   2.908040
0.000047  -3.581457   2.906587
-0.000033  -3.585864   2.906443
-0.000001   1.194527   4.773338
0.000003   1.194538   4.773336
-0.000037   1.194536   4.773327
0.000006  -1.194384   1.130261
-0.000018  -1.216986   1.140267
0.000007  -1.172216   1.140684
0.000011  -3.583770   8.416406
-0.000002  -3.561169   8.406398
-0.000007  -3.605960   8.405979
0.000086  -1.194737   6.638626
-0.000047  -1.196693   6.640080
0.000033  -1.192286   6.640223
0.000040  -3.583406   2.908021
-0.000038  -3.581452   2.906608
0.000032  -3.585788   2.906424
0.000001   1.194548   4.773330
-0.000003   1.194537   4.773332
0.000037   1.194539   4.773340
-0.000011  -1.194381   1.130260
0.000002  -1.216981   1.140268
0.000007  -1.172191   1.140687
-0.000006  -3.583766   8.416405
0.000018  -3.561165   8.406400
-0.000007  -3.605935   8.405982


### Basic Parameters¶

TB_FILE, LATTICE, ATOM_POSITIONS, PROJECTORS and SURFACE are the necessary basic parameters. They are used by almost all functionalities listed in CONTROL namelist.

### NAMELISTS¶

NAMELISTS are a standard input construct in Fortran90. The use of NAMELISTS is relatively flexible. All the variables in the NAMELISTS have default values. You should set them only when it is needed. Variables can be inserted in any order. Such as

&NAMELIST
needed_variable2=XX, needed_variable1=YY,
character_variable1='a suitable string'
/


There are 4 NAMELISTS included in wt.in. They are TB_FILE, SYSTEM, CONTROL, PARAMETERS.

Note

If you want to comment one line, please use ‘!’ instead of ‘#’, because our codes were written in Fortran.

#### TB_FILE¶

Set the filename of the tight-binding Hamiltonian. At present, we use the format of wannier90_hr.dat specified in Wannier90.

&TB_FILE
Hrfile = 'wannier90_hr.dat'
Package = 'VASP'             ! obtained from VASP, it could be 'VASP', 'QE', 'Wien2k', 'OpenMx'
/


The default value for Hrfile is ‘wannier90_hr.dat’. You could specify the first-principle package that used for obtaining wannier90_hr.dat. Default value for Package is ‘VASP’. We support VASP, QE, Wien2k, OpenMx, Abinit at present. Please report new software package to me if you needed.

Note

Package is very important if you use QE to generate your tight binding model. Because the orbital order in QE is different from VASP, Wien2k et al.. And it will affect the results of spin texture. If you got strange spin texture, please carefully check this tag.

#### SYSTEM¶

In this namelists, we specify the system you need to compute.

&SYSTEM
Nslab = 10
Nslab1= 6
Nslab2= 6
NumOccupied = 18        ! NumOccupied
SOC = 1                 ! soc
E_FERMI = 4.4195        ! e-fermi
Bx= 0, By= 0, Bz= 0     ! Bx By Bz
surf_onsite= 0.0        ! surf_onsite
/

• NSlab : integer, Number of slabs for slab band, The default value is 10.
• NSlab1, Nslab2 : integers, The thickness of nano ribbon. If you don’t want to calculate the band structure of it, then don’t set it. The default values are Nslab1= 1, Nslab2= 1.
• NumOccupied : integer, Number of occupied Wannier bands. No default value.

Important: please set NumOccpuied correctly. It represents the “occpuied” wannier bands, not the total number of electrons. In the calculation of Wilson loop, the Wilson loop is the trace of NumOccupied bands. If you want to study the topology between the 8th and the 9th band, then set NumOccupied=8.

When you search Weyl points, nodal line or study the gap in some k slices, NumOccupied is also a very important. WannierTools will look for touching point or calculate the energy gap between the NumOccupied’th band and the (NumOccupied+1)’th band.

When you calculate the Fermi surface with BulkFS_calc= T, In order to save the storage, WannierTools only writes out 8(16) energy bands around NumOccupied’th band for SOC=0 (SOC=1) system into FS3D.bxsf.

If you don’t put any physical meaning into this tag, then it is very easy to understand.

• SOC : integer, Flag for spin-orbital coupling. If SOC=0, it means there is no SOC included in your given tight binding model. if SOC=1 or >0, it means SOC is already included in the tight binding model.
• E_FERMI : real-valued, Fermi level for the given tight binding model.
• Bx, By, Bz : real-valued, magnetic field value. Ignore it in this version.
• surf_onsite : real-valued, Additional onsite energy on the surface, you can set this to see how surface state changes. But don’t set it if you don’t know what it is.

#### CONTROL¶

In this name list, you can set the keywords to setup the tasks. All these tasks can be set to be true at the same time.

&CONTROL
BulkBand_calc         = T        ! bulk band structure calculation flag
BulkFS_calc           = F
BulkGap_cube_calc     = F
BulkGap_plane_calc    = F
SlabBand_calc         = T
WireBand_calc         = F
SlabSS_calc           = T
SlabArc_calc          = F
SlabSpintexture_calc  = T
wanniercenter_calc    = F
BerryCurvature_calc   = F
/


Note

New features : :red: FindNodes_calc; WeylChirality_calc; Z2_3D_calc; Chern_3D_calc

We listed those features in the table below.

Flag options Function Output Tested
BulkBand_calc Band structure for bulk bulkek.dat, bulkek.gnu yes
BulkFS_calc Fermi surface for bulk system FS3D.dat, FS3D.bxsf yes
BulkGap_cube_calc Energy gap for a given k cube for bulk system GapCube.dat, GapCube.gnu yes
BulkGap_plane_calc Energy gap for a given k plane for bulk system GapPlane.dat, GapPlane.gnu yes
FindNodes_calc Find touching points between the Numoccpuied’th band and (Numoccpuied+1)’th band Nodes.dat, Nodes.gnu yes
SlabBand_calc Band structure for 2D slab system slabek.dat,slabek.gnu yes
WireBand_calc Band structure for 1D ribbon system ribbonek.dat,ribbonek.gnu yes
Dos_calc Density of state for 3D bulk system dos.dat yes
JDos_calc Joint Density of state for 3D bulk system jdos.dat yes
SlabSS_calc Surface spectrum A(k,E) along a kline and energy interval for slab system dos.dat_l, dos.dat_r, dos.dat_bulk,surfdos_l.gnu, surfdos_r.gnu, surfdos_l_only.gnu, surfdos_r_only.gnu, surfdos_bulk.gnu yes
SlabArc_calc Surface spectrum A(k,E0) for fixed energy E0 in 2D k-plane for slab system arc.dat_l, arc.dat_r, arc_l.gnu, arc_r.gnu, arc_l_only.gnu, arc_l_only.gnu, yes
SlabQPI_calc Surface QPI for fixed energy E0 in 2D k-plane for slab system arc.dat_l, arc.dat_r, arc_l.gnu, arc_r.gnu, arc_l_only.gnu, arc_l_only.gnu, arc.jdat_l, arc.jdat_r, arc.jsdat_l, arc.jsdat_r, arc_l_jdos.gnu, arc_l_jsdos.gnu, arc_r_jdos.gnu, arc_r_jsdos.gnu, yes
SlabSpintexture_calc Spin texture in 2D k-plane for slab system spindos_l.dat spindos_r.dat spintext_l.gnu spintext_r.gnu spintext_l.dat spintext_r.dat yes
wanniercenter_calc Wilson loop of a given 3D k-plane for bulk system wcc.dat, wcc.gnu yes
Z2_3D_calc Wilson loop in all 6 3D k-planes for bulk system Z2 number calculation wanniercenter3D_Z2.gnu, wanniercenter3D_Z2_{1-6}.dat yes
Chern_3D_calc Wilson loop in all 6 3D k-planes for bulk system Chern number calculation wanniercenter3D_Z2.gnu, wanniercenter3D_Z2_{1-6}.dat yes
WeylChirality_calc Weyl Chirality calculation for given k points find chiralities in WT.out, wanniercenter3D_Weyl.dat, wanniercenter3D_Weyl_*.gnu yes
BerryPhase_calc Berry phase with a 3D k path for bulk system find Berry phase in WT.out Yes
BerryCurvature_calc Berry Curvature in 3D k-plane for bulk system BerryCurvature.dat, BerryCurvature.gnu Berrycurvature-normalized.dat Berrycurvature-normalized.gnu yes
AHC_calc Calculate anomalous Hall conductivity for bulk system sigma_ahe.txt in unit of (Ohm*cm)^-1 yes
FindNodes_calc Find touch point between the N’th band to the (N+1)’th band in 3D BZ N=NumOccupied Nodes.dat Nodes.gnu yes

#### PARAMETERS¶

In this namelists, we listed some parameters necessary in the task you specified in namelists CONTROL.

&PARAMETERS
E_arc = 0.0             ! energy for calculate Fermi Arc
Eta_Arc = 0.001     ! infinite small value, like broadening
OmegaNum = 200      ! omega number
OmegaMin = -0.6     ! energy interval
OmegaMax =  0.5     ! energy interval
Nk1 = 50            ! number k points
Nk2 = 50            ! number k points
Nk3 = 50            ! number k points
NP = 2              ! number of principle layers
Gap_threshold = 1.0    ! threshold for GapCube output
/


E_arc : real-valued, energy for calculate Fermi arc, used if SlabArc_calc = T. The default value is 0.0.

Eta_Arc : real-valued, infinite same value for broadening used in Green’s function calculation. used if SlabArc_calc = T. Default value is 0.001.

[OmegaMin, OmegaMax] : real-valued, energy interval for surface state calculation. used if SlabSS_calc= T. No default value.

OmegaNum : integer valued, Number of slices in the energy interval [OmegaMin, OmegaMax]. used if SlabSS_calc= T. The default value is 100.

Nk1, Nk2, Nk3 : integer valued, Number of k points for different purpose. I will explain that later. Default value is Nk1=20, Nk2=20, Nk3=20.

NP : integer valued, Number of principle layers, see details related to iterative green’s function. Used if SlabSS_calc= T, SlabArc_calc=T, SlabSpintexture_calc=T. Default value is 2. You need to do a convergence test by setting Np= 1, Np=2, Np=3, and check the surface state spectrum. Basically, the value of Np depends on the spread of Wannier functions you constructed. One thing should be mentioned is that the computational time grows cubically of Np.

Gap_threshold : real valued. This value is used when you do energy gap calculation like BulkGap_cube_calc=T, BulkGap_plane_calc=T. The k points will be printed out in a file when the energy gap is smaller than Gap_threshold.

### Input Card¶

The second important format in wt.in is the input_card format, which is relatively fixed format. First, we need a keyword like LATTICE, which is name of this card. After this keyword, the number of lines is fixed until it is done. There are several INPUT_CARDS in the wt.in. There is no order between the INPUT_CARDS. And any comments or blank lines could be added between the INPUT_CARDS. Lets introduce them one by one.

#### LATTICE¶

In this card, we set three lattice vectors coordinates. For the unit, you can use both Angstrom and Bohr. However, in the program, we use Angstrom. Bohr unit will be transformed to Angstrom automatically. No default values for the LATTICE CARD.

LATTICE
Angstrom
-2.069  -3.583614  0.000000     ! crystal lattice information
2.069  -3.583614  0.000000
0.000   2.389075  9.546667


#### ATOM_POSITIONS¶

In this card, we set the atom’s position.

ATOM_POSITIONS
5                               ! number of atoms for projectors
Direct                          ! Direct or Cartisen coordinate
Bi 0.3990    0.3990    0.6970
Bi 0.6010    0.6010    0.3030
Se 0     0     0.5
Se 0.2060    0.2060    0.1180
Se 0.7940    0.7940    0.8820


Note

1. Here the atom means that the atoms with projectors. not the whole atoms in the unit cell. 2. You can use “Direct” or “Cartesian” coordinates. “Direct” means the fractional coordinate based on the primitive lattice vector listed in LATTICE CARDS.

#### PROJECTORS¶

In this card, we set the Wannier projectors for the tight binding.

PROJECTORS
3 3 3 3 3          ! number of projectors
Bi pz px py         ! projectors
Bi pz px py
Se pz px py
Se pz px py
Se pz px py


Here we don’t take into account the spin degeneracy, only consider the orbital part. The name of orbitals should be “s”, “px”, “py”, “pz”, “dxy”, “dxz”, “dyz”, “dx2-y2”, “dz2”. I will add f orbitals latter. The order of the orbitals is very important if you want to analyze the symmetry properties. The default order in Wannier90 is “s”, “pz”, “px”, “py”, “dz2”, “dxz”, “dyz”, “dx2-y2”, “dxy”. You can find the orbital order from wannier90.wout.

Note

If you don’t care about the calculation related to symmetry like mirror chern number. The order or the name is not important. So for the f electrons, please write 7 random orbitals like px or dz2 or what else you want.

##### SURFACE¶

Attention: from version v2.2.6 on, you can specify a surface with SURFACE card with only two lattice vectors.

#### MILLER_INDICES CARD¶

Miller indices form a notation system in crystallography for planes in crystal (Bravais) lattices. You can find more information from Wikipedia https://en.wikipedia.org/wiki/Miller_index. In WannierTools, you only need to specfiy three integers like

MILLER_INDICES
0 0 1


Note

Since this is very confusing, we discard it from version V2.2.6. You should notice that the Miller indices mentioned here are based on three vectors specified in LATTICE card.

#### SURFACE CARD¶

This card is very important for slabs calculation. You need to read the following text carefully

SURFACE            ! See doc for details
1  0  0           a11, a12, a13
0  1  0           a21 a22 a23


In this card, we specify the surface you want to investigate. Basically, you should be aware of which surface you want to investigate, and of which direction you want to study the ribbon. So we need to define the new lattice vector system like this,

Choose two lattice vectors on the surface we want to study, and choose another vector which is not on this plane.

The slab calculations are base on the surface constructed by vector $$R_1', R_2'$$.

Note

a11, a12, a13 …, a23 should be integers, in unit of three lattice vectors

#### KPATH_BULK¶

This is the k path for bulk band structure calculation.

KPATH_BULK            ! k point path
4              ! number of k line only for bulk band
G 0.00000 0.00000 0.0000 Z 0.00000 0.00000 0.5000
Z 0.00000 0.00000 0.5000 F 0.50000 0.50000 0.0000
F 0.50000 0.50000 0.0000 G 0.00000 0.00000 0.0000
G 0.00000 0.00000 0.0000 L 0.50000 0.00000 0.0000


These k points are in unit of the reciprocal lattice constant built by the lattice vector LATTICE CARD. The number of k points is Nk1, which is set in NAMELISTS PARAMETERS. There are no default values for this CARD. So you must set some value in the input file when choosing BulkBand_calc=T.

#### KPOINTS_3D¶

You can calculate the properties on some kpoints you specified in point mode. e.g. the energy bands

KPOINTS_3D
4              ! number of k points
Direct         ! Direct or Cartesian
0.00000 0.00000 0.0000
0.00000 0.00000 0.5000
0.50000 0.50000 0.0000
0.00000 0.00000 0.0000


The number of lines below “Direct” should be the same as the number above “Direct”. You could add comments at the end of each line. But you can’t add additional comment lines between the formatted lines.

#### KPATH_SLAB¶

This is the k path for slab system.

KPATH_SLAB
2        ! numker of k line for 2D case
K 0.33 0.67 G 0.0 0.0  ! k path for 2D case
G 0.0 0.0 M 0.5 0.5


including the band structure calculation and the surface state calculation. It is necessary to set it when SlabBand_calc=T or SlabSS_calc=T. Number of k points along the line is Nk1.

#### KPLANE_SLAB¶

Define a 2D k space plane for arc plots.

KPLANE_SLAB
-0.1 -0.1      ! Original point for 2D k plane
0.2  0.0      ! The first vector to define 2D k plane
0.0  0.2      ! The second vector to define 2D k plane  for arc plots


The first line is the start point of the plane. The second and third line are the two vectors defining the plane. The number of k points for the 1st and 2nd vector is Nk1 and Nk2 respectively. Set this CARD when SlabArc_calc=T, SlabSpintexture_calc= T. The default values are

KPLANE_SLAB
-0.5 -0.5      ! Original point for 2D k plane
1.0  0.0      ! The first vector to define 2D k plane
0.0  1.0      ! The second vector to define 2D k plane  for arc plots


#### KPLANE_BULK¶

The same set as KPLANE_SLAB CARD, but for 3D case.

KPLANE_BULK
-0.50 -0.50  0.00   ! Original point for 3D k plane
1.00  0.00  0.00   ! The first vector to define 3d k space plane
0.00  1.00  0.00   ! The second vector to define 3d k space plane


We can use these two vectors to calculate the band gap of a plane in 3D BZ, then we can check whether there are Weyl points or nodal line in that plane. Notice that these vectors is in unit of reciprocal vectors. Set this CARD when BulkGap_plane_calc=T, BerryCurvature_calc=T, wanniercenter_calc=T. Default values are

KPLANE_BULK
0.00  0.00  0.00    ! Original point for 3D k plane
1.00  0.00  0.00   ! The first vector to define 3d k space plane
0.00  0.50  0.00   ! The second vector to define 3d k space plane


#### KCUBE_BULK¶

The same set as KPLANE_BULK CARD

KCUBE_BULK
-0.50 -0.50 -0.50   ! Original point for 3D k plane
1.00  0.00  0.00   ! The first vector to define 3d k space plane
0.00  1.00  0.00   ! The second vector to define 3d k space plane
0.00  0.00  1.00   ! The third vector to define 3d k cube


We add another k vector to construct a k cube. Set this for BulkGap_cube_calc=T. The values list above are default values.

#### EFFECTIVE_MASS¶

This card is set for effective mass calculation

EFFECTIVE_MASS      ! optional
2                   ! The i'th band to be calculated
0.01                ! k step in unit of (1/Angstrom)
0.0 0.0 0.0         ! k point where the effective mass calculated.


#### WANNIER_CENTRES¶

This card will be usefull for Wilson loop calculations.

WANNIER_CENTRES     ! copy from wannier90.wout
Cartesian
-0.000040  -1.194745   6.638646
0.000038  -1.196699   6.640059
-0.000032  -1.192363   6.640243
-0.000086  -3.583414   2.908040
0.000047  -3.581457   2.906587
-0.000033  -3.585864   2.906443
-0.000001   1.194527   4.773338
0.000003   1.194538   4.773336
-0.000037   1.194536   4.773327
0.000006  -1.194384   1.130261
-0.000018  -1.216986   1.140267
0.000007  -1.172216   1.140684
0.000011  -3.583770   8.416406
-0.000002  -3.561169   8.406398
-0.000007  -3.605960   8.405979
0.000086  -1.194737   6.638626
-0.000047  -1.196693   6.640080
0.000033  -1.192286   6.640223
0.000040  -3.583406   2.908021
-0.000038  -3.581452   2.906608
0.000032  -3.585788   2.906424
0.000001   1.194548   4.773330
-0.000003   1.194537   4.773332
0.000037   1.194539   4.773340
-0.000011  -1.194381   1.130260
0.000002  -1.216981   1.140268
0.000007  -1.172191   1.140687
-0.000006  -3.583766   8.416405
0.000018  -3.561165   8.406400
-0.000007  -3.605935   8.405982


Those centres can be obtained from wannier90.wout by searching “Final state”. The default values for this card are atomic positions.

## 2.2.2. Special tags for phonon system (under testing)¶

Now we have one testing version of phonon system, you can write to wuquansheng@gmail.com for testing. There are two steps for using WannierTools for phonon system.

1. Use phonon_hr.py to get the tight-binding Hamiltonian from the FORCE_CONSTANTS or FORCE_SETS which generated with phonopy. This part was written by Changming Yue (yuechangming8 at gmail.com). You can write email to him to get the source. By default the hrfile name of the Hamiltonian is phonopyTB_hr.dat. You can change the name of it as whatever you want.

2. After the generation of hrfile. You need another wt.in file as the same as the electron system. One difference is that you need to specify Particle = ‘phonon’ in the TB_FILE namelist like

&TB_FILE
Hrfile = 'phonopyTB_hr.dat'
Particle = 'phonon'
/


### LO-TO splitting¶

The LO-TO splitting can be treated as a pertubation see phonopy.

We need the following necessary CARDs in the wt.in. Take FeSi as an example

ATOM_MASS
2  ! number of types of atom, for FeSi, we have 2
4 4  ! number of atoms for each atom-type Fe4Si4
55.845 28.0855 ! atomic mass for each type of atom

LOTO_DT        ! Dielectric constant tensor
199.480 0 0
0 199.480 0
0 0 199.480

LOTO_BC   ! Born charge tensor for each type of atom
-4.3431500   0.6899200  -0.4140700
-0.4140800  -4.3431600   0.6899300
0.6898900  -0.4140600  -4.3431500
4.3909800   0.2300200  -0.1092900
-0.1093100   4.3909900   0.2300100
0.2300400  -0.1092800   4.3909800


LOTO_DT is a 3*3 matrix. LOTO_BC are Number-of-atom-types 3*3 matrices.

## 2.2.3. Tight-binding model wannier90_hr.dat¶

This file contains the TB parameters. Usually, it can be generated by Wannier90.

Of cource, you can generate it from the Slater-Koster method or discretize k.p model onto a cubic lattice. The format should like this

written on  8May2016 at 13:57:00
30
547
2    2    1    1    1    1    1    1    1    1    2    2    2    2    2
1    1    1    2    1    1    1    2    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    4
2    2    2    2    2    2    2    4    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    2    1
1    1    1    1    1    1    2    1    1    1    1    1    1    1    1
2    2    2    2    2    1    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    2    1    1    1    1
1    1    1    2    1    1    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    2    2    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    2    1    1    1
1    1    1    1    2    1    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
1    2    1    1    1    2    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    2
1    1    1    1    1    1    1    2    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
1    2    1    1    1    2    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
1    1    2    1    1    1    1    1    1    1    2    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    2    2    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
1    1    1    2    1    1    1    1    1    1    1    2    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
1    1    2    2    2    2    2    1    1    1    1    1    1    1    1
2    1    1    1    1    1    1    1    2    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    4
2    2    2    2    2    2    2    4    1    1    1    1    1    1    1
1    1    1    1    1    1    1    1    1    1    1    1    1    1    2
1    1    1    2    1    1    1    2    2    2    2    2    1    1    1
1    1    1    1    1    2    2
-6    2   -3    1    1   -0.000002    0.000003
-6    2   -3    2    1    0.000002    0.000017
-6    2   -3    3    1   -0.000053    0.000002
-6    2   -3    4    1   -0.000031    0.000002
-6    2   -3    5    1    0.000001   -0.000000
-6    2   -3    6    1   -0.000003    0.000002
-6    2   -3    7    1    0.000037   -0.000001
-6    2   -3    8    1   -0.000001   -0.000003
-6    2   -3    9    1   -0.000005   -0.000003
-6    2   -3   10    1   -0.000062   -0.000001
-6    2   -3   11    1   -0.000001    0.000001
-6    2   -3   12    1   -0.000031    0.000002
-6    2   -3   13    1    0.000011   -0.000000
-6    2   -3   14    1   -0.000001    0.000001
-6    2   -3   15    1    0.000003    0.000003
-6    2   -3   16    1    0.000000   -0.000010
-6    2   -3   17    1   -0.000010   -0.000001
-6    2   -3   18    1   -0.000000   -0.000008
-6    2   -3   19    1    0.000000    0.000000
-6    2   -3   20    1    0.000012   -0.000002
......

1. The 1st line is a comment line with any content.
2. The 2nd line is the number of Wannier orbitals, in consideration of spin degeneracy. We call it NUM_WANNS
3. The 3rd line is the number of R lattice vectors, we call it NRPTS
4. This section is about the degeneracy of R points. If you generate wannier90_hr.dat by you self, please set it to 1. There are NRPTS number of 1.
5. This section gives the TB parameters. The first three integers are the coordinates or R vectors in unit of three lattice vectors. The 4th and 5th column are the band index (Row first). The 6th and 7th are complex entities of the Hamiltonian.