Skip to content

Files

seedname.win

INPUT. The master input file; contains the specification of the system and any parameters for the run. For a description of input parameters, see Chapter Parameters; for examples, see Section seedname.win and the wannier90 Tutorial.

Units

The following are the dimensional quantities that are specified in the master input file:

  • Direct lattice vectors

  • Positions (of atomic or projection) centres in real space

  • Energy windows

  • Positions of k-points in reciprocal space

  • Convergence thresholds for the minimisation of \(\Omega\)

  • zona (see Section Projections)

  • wannier_plot_cube: cut-off radius for plotting WF in Gaussian cube format

Notes:

  • The units (either ang (default) or bohr) in which the lattice vectors, atomic positions or projection centres are given can be set in the first line of the blocks unit_cell_cart, atoms_cart and projections, respectively, in seedname.win.

  • Energy is always in eV.

  • Convergence thresholds are always in Å\(^{2}\)

  • Positions of k-points are always in crystallographic coordinates relative to the reciprocal lattice vectors.

  • zona is always in reciprocal Angstrom (Å\(^{-1}\))

  • The keyword length_unit may be set to ang (default) or bohr, in order to set the units in which the quantities in the output file seedname.wout are written.

  • wannier_plot_radius is in Angstrom

The reciprocal lattice vectors \(\{\mathbf{B}_{1},\mathbf{B}_{2},\mathbf{B}_{3}\}\) are defined in terms of the direct lattice vectors \(\{\mathbf{A}_{1},\mathbf{A}_{2},\mathbf{A}_{3}\}\) by the equation

\[ \mathbf{B}_{1} = \frac{2\pi}{\Omega}\mathbf{A}_{2}\times\mathbf{A}_{3} \ \ \ \mathrm{etc.}, \]

where the cell volume is \(V=\mathbf{A}_{1}\cdot(\mathbf{A}_{2}\times\mathbf{A}_{3})\).

seedname.mmn

INPUT. Written by the underlying electronic structure code. See Chapter Post-processing for details.

seedname.amn

INPUT. Written by the underlying electronic structure code. See Chapter Post-processing for details.

seedname.dmn

INPUT. Read if site_symmetry = .true. (symmetry-adapted mode). Written by the underlying electronic structure code. See Chapter Post-processing for details.

seedname.eig

INPUT. Written by the underlying electronic structure code. See Chapter Post-processing for details.

seedname.spn

INPUT. Written by the underlying electronic structure code (e.g. by pw2wannier90.x if write_spn = .true.), and read by postw90 when the matrix elements of the spin operator are needed (non-collinear spin calculations only). See Chapter Post-processing for details.

The file contains the matrix elements \(\langle\psi_{n\mathbf{k}}|\sigma_{i}|\psi_{m\mathbf{k}}\rangle\) of the three Pauli matrices between the ab initio eigenstates. It is unformatted by default; a formatted version is read instead if spn_formatted = .true.. The two forms contain the same data:

  • a comment line, a 60-character string; pw2wannier90.x writes Created on <date> at <time>;

  • a line with the number of bands num_bands and the number of k-points num_kpts;

  • for each k-point, in the order in which the k-points are listed in seedname.win, the elements \(\langle\psi_{n\mathbf{k}}|\sigma_{i}|\psi_{m\mathbf{k}}\rangle\) for \(m=1,\ldots,\) num_bands, \(n=1,\ldots,m\) and \(i=x,y,z\), with \(i\) running fastest, then \(n\), then \(m\). Only the upper triangle is stored: the remaining elements follow from the fact that the matrices are Hermitian.

In the unformatted file the whole block of \(3\times\)num_bands\((\)num_bands\(+1)/2\) complex numbers of a given k-point is written as a single record. In the formatted file each complex number is written on its own line, as a real part followed by an imaginary part. wannier90 reads these with a list-directed read, so the exact spacing does not matter: pw2wannier90.x writes them with the format 2ES20.10, while w90spn2spn.x uses 2es26.16.

Since the unformatted file is machine-dependent, the utility w90spn2spn.x can be used to convert it to and from a portable formatted file seedname.spn.fmt, which has the layout described above; see Section w90spn2spn.x.

seedname.nnkp

OUTPUT. Written by wannier90 when postproc_setup=.TRUE. (or, alternatively, when wannier90 is run with the -pp command-line option). See Chapter Post-processing for details.

seedname.wout

OUTPUT. The master output file. Here we give a description of the main features of the output. The verbosity of the output is controlled by the input parameter iprint. The higher the value, the more detail is given in the output file. The default value is 1, which prints minimal information.

The header provides some basic information about wannier90, the authors, the code version and release, and the execution time of the current run. The header looks like the following (the string might slightly change across different versions):

Output file
             +---------------------------------------------------+
             |                                                   |
             |                   WANNIER90                       |
             |                                                   |
             +---------------------------------------------------+
             |                                                   |
             |        Welcome to the Maximally-Localized         |
             |        Generalized Wannier Functions code         |
             |            http://www.wannier.org                 |
             |                                                   |
             |  Wannier90 Developer Group:                       |
             |    Giovanni Pizzi    (Paul Scherrer Institute)    |
             |    Valerio Vitale    (Cambridge)                  |
             |    David Vanderbilt  (Rutgers University)         |
             |    Nicola Marzari    (EPFL)                       |
             |    Ivo Souza         (Universidad del Pais Vasco) |
             |    Arash A. Mostofi  (Imperial College London)    |
             |    Jonathan R. Yates (University of Oxford)       |
             |                                                   |
             |  For the full list of Wannier90 3.x authors,      |
             |  please check the code documentation and the      |
             |  README on the GitHub page of the code            |
             |                                                   |
             |                                                   |
             |  Please cite                                      |
                                       .
                                       .
             |                                                   |
             +---------------------------------------------------+
             |    Execution started on 18Dec2018 at 18:39:42     |
             +---------------------------------------------------+

System information

This part of the output file presents information that wannier90 has read or inferred from the master input file seedname.win. This includes real and reciprocal lattice vectors, atomic positions, k-points, parameters for job control, disentanglement, localisation and plotting.

Output file
                                    ------
                                    SYSTEM
                                    ------

                              Lattice Vectors (Ang)
                    a_1     3.938486   0.000000   0.000000
                    a_2     0.000000   3.938486   0.000000
                    a_3     0.000000   0.000000   3.938486

                   Unit Cell Volume:      61.09251  (Ang^3)

                        Reciprocal-Space Vectors (Ang^-1)
                    b_1     1.595330   0.000000   0.000000
                    b_2     0.000000   1.595330   0.000000
                    b_3     0.000000   0.000000   1.595330

 *----------------------------------------------------------------------------*
 |   Site       Fractional Coordinate          Cartesian Coordinate (Ang)     |
 +----------------------------------------------------------------------------+
 | Ba   1   0.00000   0.00000   0.00000   |    0.00000   0.00000   0.00000    |
 | Ti   1   0.50000   0.50000   0.50000   |    1.96924   1.96924   1.96924    |
                                          .
                                          .
 *----------------------------------------------------------------------------*

                                ------------
                                K-POINT GRID
                                ------------

             Grid size =  4 x  4 x  4      Total points =   64

 *---------------------------------- MAIN ------------------------------------*
 |  Number of Wannier Functions               :                 9             |
 |  Number of input Bloch states              :                 9             |
 |  Output verbosity (1=low, 5=high)          :                 1             |
 |  Length Unit                               :               Ang             |
 |  Post-processing setup (write *.nnkp)      :                 F             |
                                              .
                                              .
 *----------------------------------------------------------------------------*

Nearest-neighbour k-points

This part of the output file provides information on the \(\mathrm{b}\)-vectors and weights chosen to satisfy the condition of Eq. B1.

Output file
 *---------------------------------- K-MESH ----------------------------------*
 +----------------------------------------------------------------------------+
 |                    Distance to Nearest-Neighbour Shells                    |
 |                    ------------------------------------                    |
 |          Shell             Distance (Ang^-1)          Multiplicity         |
 |          -----             -----------------          ------------         |
 |             1                   0.398833                      6            |
 |             2                   0.564034                     12            |
                                       .
                                       .
 +----------------------------------------------------------------------------+
 | The b-vectors are chosen automatically                                     |
 | The following shells are used:   1                                         |
 +----------------------------------------------------------------------------+
 |                        Shell   # Nearest-Neighbours                        |
 |                        -----   --------------------                        |
 |                          1               6                                 |
 +----------------------------------------------------------------------------+
 | Completeness relation is fully satisfied [Eq. (B1), PRB 56, 12847 (1997)]  |
 +----------------------------------------------------------------------------+

Disentanglement

Then (if required) comes the part where \(\Omega_{\mathrm{I}}\) is minimised to disentangle the optimally-connected subspace of states for the localisation procedure in the next step.

First, a summary of the energy windows that are being used is given:

Output file
 *------------------------------- DISENTANGLE --------------------------------*
 +----------------------------------------------------------------------------+
 |                              Energy  Windows                               |
 |                              ---------------                               |
 |                   Outer:    2.81739  to   38.00000  (eV)                   |
 |                   Inner:    2.81739  to   13.00000  (eV)                   |
 +----------------------------------------------------------------------------+

Then, each step of the iterative minimisation of \(\Omega_{\mathrm{I}}\) is reported.

Output file
                   Extraction of optimally-connected subspace
                   ------------------------------------------
 +---------------------------------------------------------------------+<-- DIS
 |  Iter     Omega_I(i-1)      Omega_I(i)      Delta (frac.)    Time   |<-- DIS
 +---------------------------------------------------------------------+<-- DIS
       1       3.82493590       3.66268867       4.430E-02      0.36    <-- DIS
       2       3.66268867       3.66268867       6.911E-15      0.37    <-- DIS
                                       .
                                       .

             <<<      Delta < 1.000E-10  over  3 iterations     >>>
             <<< Disentanglement convergence criteria satisfied >>>

        Final Omega_I     3.66268867 (Ang^2)

 +----------------------------------------------------------------------------+

The first column gives the iteration number. For a description of the minimisation procedure and expressions for \(\Omega_{\mathrm{I}}^{(i)}\), see the original paper 1. The procedure is considered to be converged when the fractional difference between \(\Omega_{\mathrm{I}}^{(i)}\) and \(\Omega_{\mathrm{I}}^{(i-1)}\) is less than dis_conv_tol over dis_conv_window iterations. The final column gives a running account of the wall time (in seconds) so far. Note that at the end of each line of output, there are the characters "<– DIS". This enables fast searching of the output using, for example, the Unix command grep:

grep DIS wannier.wout | less

Wannierisation

The next part of the output file provides information on the minimisation of \(\widetilde{\Omega}\). At each iteration, the centre and spread of each WF is reported.

Output file
 *------------------------------- WANNIERISE ---------------------------------*
 +--------------------------------------------------------------------+<-- CONV
 | Iter  Delta Spread     RMS Gradient      Spread (Ang^2)      Time  |<-- CONV
 +--------------------------------------------------------------------+<-- CONV

 ------------------------------------------------------------------------------
 Initial State
  WF centre and spread    1  (  0.000000,  1.969243,  1.969243 )     1.52435832
  WF centre and spread    2  (  0.000000,  1.969243,  1.969243 )     1.16120620
                                      .
                                      .
      0     0.126E+02     0.0000000000       12.6297685260       0.29  <-- CONV
        O_D=      0.0000000 O_OD=      0.1491718 O_TOT=     12.6297685 <-- SPRD
 ------------------------------------------------------------------------------
 Cycle:      1
  WF centre and spread    1  (  0.000000,  1.969243,  1.969243 )     1.52414024
  WF centre and spread    2  (  0.000000,  1.969243,  1.969243 )     1.16059775
                                      .
                                      .
  Sum of centres and spreads ( 11.815458, 11.815458, 11.815458 )    12.62663472

      1    -0.313E-02     0.0697660962       12.6266347170       0.34  <-- CONV
        O_D=      0.0000000 O_OD=      0.1460380 O_TOT=     12.6266347 <-- SPRD
 Delta: O_D= -0.4530841E-18 O_OD= -0.3133809E-02 O_TOT= -0.3133809E-02 <-- DLTA
 ------------------------------------------------------------------------------
 Cycle:      2
  WF centre and spread    1  (  0.000000,  1.969243,  1.969243 )     1.52414866
  WF centre and spread    2  (  0.000000,  1.969243,  1.969243 )     1.16052405
                                      .
                                      .
   Sum of centres and spreads ( 11.815458, 11.815458, 11.815458 )    12.62646411

      2    -0.171E-03     0.0188848262       12.6264641055       0.38  <-- CONV
        O_D=      0.0000000 O_OD=      0.1458674 O_TOT=     12.6264641 <-- SPRD
 Delta: O_D= -0.2847260E-18 O_OD= -0.1706115E-03 O_TOT= -0.1706115E-03 <-- DLTA
 ------------------------------------------------------------------------------
                                      .
                                      .
 ------------------------------------------------------------------------------
 Final State
  WF centre and spread    1  (  0.000000,  1.969243,  1.969243 )     1.52416618
  WF centre and spread    2  (  0.000000,  1.969243,  1.969243 )     1.16048545
                                      .
                                      .
  Sum of centres and spreads ( 11.815458, 11.815458, 11.815458 )    12.62645344

         Spreads (Ang^2)       Omega I      =    12.480596753
        ================       Omega D      =     0.000000000
                               Omega OD     =     0.145856689
    Final Spread (Ang^2)       Omega Total  =    12.626453441
 ------------------------------------------------------------------------------

It looks quite complicated, but things look more simple if one uses grep:

Terminal
grep CONV wannier.wout

gives

Output file
 +--------------------------------------------------------------------+<-- CONV
 | Iter  Delta Spread     RMS Gradient      Spread (Ang^2)      Time  |<-- CONV
 +--------------------------------------------------------------------+<-- CONV
      0     0.126E+02     0.0000000000       12.6297685260       0.29  <-- CONV
      1    -0.313E-02     0.0697660962       12.6266347170       0.34  <-- CONV
                                                   .
                                                   .
     50     0.000E+00     0.0000000694       12.6264534413       2.14  <-- CONV

The first column is the iteration number, the second is the change in \(\Omega\) from the previous iteration, the third is the root-mean-squared gradient of \(\Omega\) with respect to variations in the unitary matrices \(\mathbf{U}^{(\mathbf{k})}\), and the last is the time taken (in seconds). Depending on the input parameters used, the procedure either runs for num_iter iterations, or a convergence criterion is applied on \(\Omega\). See Section Wannierise Parameters for details.

Similarly, the command

Terminal
grep SPRD wannier.wout

gives

Output file
        O_D=      0.0000000 O_OD=      0.1491718 O_TOT=     12.6297685 <-- SPRD
        O_D=      0.0000000 O_OD=      0.1460380 O_TOT=     12.6266347 <-- SPRD
                                            .
                                            .
        O_D=      0.0000000 O_OD=      0.1458567 O_TOT=     12.6264534 <-- SPRD

which, for each iteration, reports the value of the diagonal and off-diagonal parts of the non-gauge-invariant spread, as well as the total spread, respectively. Recall from Section Methodology that \(\Omega = \Omega_{\mathrm{I}}+ \Omega_{\mathrm{D}} + \Omega_{\mathrm{OD}}\).

Wannierisation with selective localization and constrained centres

For full details of the selectively localised Wannier function (SLWF) method, the reader is referred to Ref. 2. When using the SLWF method, only a few things change in the output file and in general the same principles described above will apply. In particular, when minimising the spread with respect to the degrees of freedom of only a subset of functions, it is not possible to cast the total spread functional \(\Omega\) as a sum of a gauge-invariant part and a gauge-dependent part. Instead, one has \(\Omega^{'} = \Omega_{\mathrm{IOD}} + \Omega_{\mathrm{D}}\), where

\[ \Omega^{'} = \sum_{n=1}^{J'<J} \left[\langle r^2 \rangle_n - \overline{\mathbf{r}}_{n}^{2}\right] \]

and

\[ \Omega_{\mathrm{IOD}} = \sum_{n=1}^{J'<J} \left[\langle r^2_n \rangle- \sum_{\mathbf{R}} \vert\langle\mathbf{R}n\vert \mathbf{r} \vert n\mathbf{R}\rangle\vert^2 \right]. \]

The total number of Wannier functions is \(J\), whereas \(J'\) is the number functions to be selectively localized (so-called objective WFs). The information on the number of functions which are going to be selectively localized (Number of Objective Wannier Functions) is given in the MAIN section of the output file:

Output file
 *---------------------------------- MAIN ------------------------------------*
 |  Number of Wannier Functions               :                 4             |
 |  Number of Objective Wannier Functions     :                 1             |
 |  Number of input Bloch states              :                 4             |

Whether or not the selective localization procedure has been switched on is reported in the WANNIERISE section as

Output file
 |  Perform selective localization            :                 T             |

The next part of the output file provides information on the minimisation of the modified spread functional:

Output file
 *------------------------------- WANNIERISE ---------------------------------*
 +--------------------------------------------------------------------+<-- CONV
 | Iter  Delta Spread     RMS Gradient      Spread (Ang^2)      Time  |<-- CONV
 +--------------------------------------------------------------------+<-- CONV

 ------------------------------------------------------------------------------
 Initial State
  WF centre and spread    1  ( -0.857524,  0.857524,  0.857524 )     1.80463310
  WF centre and spread    2  (  0.857524, -0.857524,  0.857524 )     1.80463311
  WF centre and spread    3  (  0.857524,  0.857524, -0.857524 )     1.80463311
  WF centre and spread    4  ( -0.857524, -0.857524, -0.857524 )     1.80463311
  Sum of centres and spreads ( -0.000000, -0.000000,  0.000000 )     7.21853243

      0    -0.317E+01     0.0000000000       -3.1653368719       0.00  <-- CONV
       O_D=      0.0000000 O_IOD=     -3.1653369 O_TOT=     -3.1653369 <-- SPRD
 ------------------------------------------------------------------------------
 Cycle:      1
  WF centre and spread    1  ( -0.853260,  0.853260,  0.853260 )     1.70201498
  WF centre and spread    2  (  0.857352, -0.857352,  0.862454 )     1.84658331
  WF centre and spread    3  (  0.857352,  0.862454, -0.857352 )     1.84658331
  WF centre and spread    4  ( -0.862454, -0.857352, -0.857352 )     1.84658331
  Sum of centres and spreads ( -0.001010,  0.001010,  0.001010 )     7.24176492

      1    -0.884E-01     0.2093698260       -3.2536918930       0.00  <-- CONV
       O_IOD=     -3.2536919 O_D=      0.0000000 O_TOT=     -3.2536919 <-- SPRD
Delta: O_IOD= -0.1245020E+00 O_D=  0.0000000E+00 O_TOT= -0.8835502E-01 <-- DLTA
 ------------------------------------------------------------------------------
                                      .
                                      .
 ------------------------------------------------------------------------------
 Final State
  WF centre and spread    1  ( -0.890189,  0.890189,  0.890189 )     1.42375495
  WF centre and spread    2  (  0.895973, -0.895973,  0.917426 )     2.14313664
  WF centre and spread    3  (  0.895973,  0.917426, -0.895973 )     2.14313664
  WF centre and spread    4  ( -0.917426, -0.895973, -0.895973 )     2.14313664
  Sum of centres and spreads ( -0.015669,  0.015669,  0.015669 )     7.85316486

         Spreads (Ang^2)       Omega IOD    =     1.423371553
        ================       Omega D      =     0.000383395
                               Omega Rest   =     9.276919811
    Final Spread (Ang^2)       Omega Total  =     1.423754947
 ------------------------------------------------------------------------------

When comparing the output from an SLWF calculation with a standard wannierisation (see Sec. Wannierisation), the only differences are in the definition of the spread functional. Hence, during the minimization O_OD is replaced by O_IOD and O_TOT now reflects the fact that the new total spread functional is \(\Omega^{'}\). The part on the final state has one more item of information: the value of the difference between the global spread functional and the new spread functional given by Omega Rest

\[ \Omega_{R} = \sum_{n=1}^{J-J'} \left[\langle r^2 \rangle_n - \overline{\mathbf{r}}_{n}^{2} \right] \]

If adding centre-constraints to the SLWFs, you will find the information about the centres of the original projections and the desired centres in the SYSTEM section

Output file
 *----------------------------------------------------------------------------*
 | Wannier#        Original Centres              Constrained centres          |
 +----------------------------------------------------------------------------+
 |    1     0.25000   0.25000   0.25000   |    0.00000   0.00000   0.00000    |
 *----------------------------------------------------------------------------*

As before one can check that the selective localization with constraints is being used by looking at the WANNIERISE section:

Output file
 |  Perform selective localization            :                 T             |
 |  Use constrains in selective localization  :                 T             |
 |  Value of the Lagrange multiplier          :         0.100E+01             |
 *----------------------------------------------------------------------------*

which also gives the selected value for the Lagrange multiplier. The output file for the minimisation section is modified as follows: both O_IOD and O_TOT now take into account the factors coming from the new term in the functional due to the constraints, which are implemented by adding the following penalty functional to the spread functional,

\[ \lambda_c \sum_{n=1}^{J'} \left(\overline{\mathbf{r}}_n - \mathbf{r}_{0n} \right)^2, \]

where \(\mathbf{r}_{0n}\) is the desired centre for the \(n^{\text{th}}\) Wannier function, see Ref. 2 for details. The layout of the output file at each iteration is unchanged.

Output file
      1    -0.884E-01     0.2093698260       -3.2536918930       0.00  <-- CONV

As regarding the final state, the only addition is the information on the value of the penalty functional associated with the constraints (Penalty func), which should be zero if the final centres of the Wannier functions are at the target centres:

Output file
 Final State
  WF centre and spread    1  ( -1.412902,  1.412902,  1.412902 )     1.63408756
  WF centre and spread    2  (  1.239678, -1.239678,  1.074012 )     2.74801593
  WF centre and spread    3  (  1.239678,  1.074012, -1.239678 )     2.74801592
  WF centre and spread    4  ( -1.074012, -1.239678, -1.239678 )     2.74801592
  Sum of centres and spreads ( -0.007559,  0.007559,  0.007559 )     9.87813534

         Spreads (Ang^2)       Omega IOD_C   =    -4.261222001
        ================       Omega D       =     0.000000000
                               Omega Rest    =     5.616913337
                               Penalty func  =     0.000000000
    Final Spread (Ang^2)       Omega Total_C =    -4.261222001
 ------------------------------------------------------------------------------

Plotting

After WF have been localised, wannier90 enters its plotting routines (if required). For example, if you have specified an interpolated bandstructure:

Output file
 *---------------------------------------------------------------------------*
 |                               PLOTTING                                    |
 *---------------------------------------------------------------------------*

 Calculating interpolated band-structure

Summary timings

At the very end of the run, a summary of the time taken for various parts of the calculation is given. The level of detail is controlled by the timing_level input parameter (set to 1 by default).

Output file
 *===========================================================================*
 |                             TIMING INFORMATION                            |
 *===========================================================================*
 |    Tag                                                Ncalls      Time (s)|
 |---------------------------------------------------------------------------|
 |kmesh: get                                        :         1         0.212|
 |overlap: read                                     :         1         0.060|
 |wann: main                                        :         1         1.860|
 |plot: main                                        :         1         0.168|
 *---------------------------------------------------------------------------*

 All done: wannier90 exiting

seedname.werr

OUTPUT. Written only if the run does not complete successfully. wannier90 creates this file at the beginning of the run and deletes it when it exits normally, so its presence after a run signals that something went wrong. The first line records the date and time at which the run started. If an error is trapped, the error message and the MPI rank on which the error occurred are appended (the same message is also written to seedname.wout).

Error file
 Wannier90: Execution started on  4Mar2022 at 11:12:35
 Exiting.......
 Input parameter nnkpts_block is allowed only if postproc_setup = .true.
 (rank: 0)

seedname.chk

INPUT/OUTPUT. Information required to restart the calculation or enter the plotting phase. If we have used disentanglement this file also contains the rectangular matrices \(\bf{U}^{{\rm dis}({\bf k})}\).

seedname.r2mn

OUTPUT. Written if write_r2mn = true. The matrix elements \(\langle m|r^2|n\rangle\) (where \(m\) and \(n\) refer to MLWF)

seedname_band.dat

OUTPUT. Written if bands_plot=.TRUE.; The raw data for the interpolated band structure.

seedname_band.gnu

OUTPUT. Written if bands_plot=.TRUE. and bands_plot_format=gnuplot; A gnuplot script to plot the interpolated band structure.

seedname_band_proj.gnu

OUTPUT. Written if bands_plot=.TRUE., bands_plot_format=gnuplot and bands_plot_project is given; a gnuplot script to plot the interpolated band structure as a colour map. The colour of each point is taken from the third column of seedname_band.dat, which contains the projection of the corresponding interpolated state onto the WF selected by bands_plot_project (a number between 0 and 1). The script also contains a few commented-out lines that may be uncommented to produce a figure in encapsulated PostScript format.

seedname_band.agr

OUTPUT. Written if bands_plot=.TRUE. and bands_plot_format=xmgrace; A grace file to plot the interpolated band structure.

seedname_band.kpt

OUTPUT. Written if bands_plot=.TRUE.; The k-points used for the interpolated band structure, in units of the reciprocal lattice vectors. This file can be used to generate a comparison band structure from a first-principles code.

seedname_band.labelinfo.dat

OUTPUT. Written if bands_plot=.TRUE.; it says where the high-symmetry points of the k-point path fall in seedname_band.kpt and seedname_band.dat, so that the band structure can be labelled by an external plotting script. There is one line per high-symmetry point, with (in this order): the label of the point; its position in the list of k-points of seedname_band.kpt (counting from 1); its coordinate along the horizontal axis of the band plot (that is, the value found in the first column of seedname_band.dat); and the three coordinates of the point in units of the reciprocal lattice vectors.

Where the path is discontinuous, the two points on either side of the jump are both listed, on consecutive lines and with the same horizontal-axis coordinate. Plotting tools should therefore consider two consective lines, both with a k-point label, as indicating a discontinuity; it should plot them at the same x-axis coordinate, with an appropriate tick label to indicate that the energies from both k-points is shown (e.g., if L and X are the k-point labels of two consecutive lines, the tick labels on the x axis could be L|X).

Output file
L                               1         0.0000000000      0.5000000000      0.5000000000      0.5000000000
G                              11         1.0081143643      0.0000000000      0.0000000000      0.0000000000
X                              23         2.1721845635      0.5000000000      0.0000000000      0.5000000000
X                              24         2.1721845635      0.5000000000     -0.5000000000      0.0000000000
K                              28         2.5837455293      0.3750000000     -0.3750000000      0.0000000000
G                              40         3.8184284267      0.0000000000      0.0000000000      0.0000000000
X                              41         3.8184284267      0.5000000000      0.0000000000      0.5000000000
L                              51         4.8265427910      0.5000000000      0.5000000000      0.5000000000

seedname.bxsf

OUTPUT. Written if fermi_surface_plot=.TRUE.; A Fermi surface plot file suitable for plotting with XCrySDen.

seedname_w.xsf

OUTPUT. Written if wannier_plot=.TRUE. and wannier_plot_format=xcrysden. Contains the w\(^{\mathrm{th}}\) WF in real space in a format suitable for plotting with XCrySDen or VMD, for example.

seedname_w.cube

OUTPUT. Written if wannier_plot=.TRUE. and wannier_plot_format=cube. Contains the w\(^{\mathrm{th}}\) WF in real space in Gaussian cube format, suitable for plotting in XCrySDen, VMD, gopenmol etc.

UNKp.s

INPUT. Read if wannier_plot=.TRUE. and used to plot the MLWF. Read if transport_mode=lcr and tran_read_ht=.FALSE. for use in automated lcr transport calculations.

The periodic part of the Bloch states represented on a regular real space grid, indexed by k-point p (from 1 to num_kpts) and spin s ('1' for 'up', '2' for 'down').

The name of the wavefunction file is assumed to have the form:

Fortran
    write(wfnname,200) p,spin
200 format ('UNK',i5.5,'.',i1)

The first line of each file should contain 5 integers: the number of grid points in each direction (ngx, ngy and ngz), the k-point number ik and the total number of bands num_band in the file. The full file will be read by wannier90 as:

Fortran
read(file_unit) ngx,ngy,ngz,ik,nbnd
do loop_b=1,num_bands
  read(file_unit) (r_wvfn(nx,loop_b),nx=1,ngx*ngy*ngz)
end do

If spinors=true then s='NC', and the name of the wavefunction file is assumed to have the form:

Fortran
    write(wfnname,200) p
200 format ('UNK',i5.5,'.NC')

and the file will be read by wannier90 as:

Fortran
read(file_unit) ngx,ngy,ngz,ik,nbnd
do loop_b=1,num_bands
  read(file_unit) (r_wvfn_nc(nx,loop_b,1),nx=1,ngx*ngy*ngz) ! up-spinor
  read(file_unit) (r_wvfn_nc(nx,loop_b,2),nx=1,ngx*ngy*ngz) ! down-spinor
end do

All UNK files can be in formatted or unformatted style, this is controlled by the logical keyword wvfn_formatted.

seedname_centres.xyz

OUTPUT. Written if write_xyz=.TRUE.; xyz format atomic structure file suitable for viewing with your favourite visualiser (jmol, gopenmol, vmd, etc.).

seedname_hr.dat

OUTPUT. Written if write_hr=.TRUE.. The first line gives the date and time at which the file was created. The second line states the number of Wannier functions num_wann. The third line gives the number of Wigner-Seitz grid-points nrpts. The next block of nrpts integers gives the degeneracy of each Wigner-Seitz grid point, with 15 entries per line. Finally, the remaining num_wann\(^2 \times\) nrpts lines each contain, respectively, the components of the vector \(\mathbf{R}\) in terms of the lattice vectors \(\{\mathbf{A}_{i}\}\), the indices \(m\) and \(n\), and the real and imaginary parts of the Hamiltonian matrix element \(H_{mn}^{(\mathbf{R})}\) in the WF basis, e.g.,

Output file
 Created on 24May2007 at 23:32:09
        20
        17
    4   1   2    1    4    1    1    2    1    4    6    1    1   1   2
    1   2
    0   0  -2    1    1   -0.001013    0.000000
    0   0  -2    2    1    0.000270    0.000000
    0   0  -2    3    1   -0.000055    0.000000
    0   0  -2    4    1    0.000093    0.000000
    0   0  -2    5    1   -0.000055    0.000000
    .
    .
    .

If write_ndegen_applied = true, the \(\mathbf{R}\) list is the expanded one --- every \(\mathbf{R}+\mathbf{T}\) produced by the Wigner-Seitz mapping of use_ws_distance --- and every matrix element has already been divided by its degeneracy weights, so that

\[ H_{mn}(\mathbf{k}) = \sum_{\mathbf{R}} e^{i\mathbf{k}\cdot\mathbf{R}}\, H_{mn}^{(\mathbf{R})} . \]

The degeneracy block is still present, written as all 1s, so a reader that divides by it is unaffected. seedname_wsvec.dat must not be applied on top.

seedname_r.dat

OUTPUT. Written if write_rmn = true. The matrix elements \(\langle m\mathbf{0}|\mathbf{r}|n\mathbf{R}\rangle\) (where \(n\mathbf{R}\) refers to MLWF \(n\) in unit cell \(\mathbf{R}\)). The first line gives the date and time at which the file was created. The second line states the number of Wannier functions num_wann. The third line states the number of \(\mathbf{R}\) vectors nrpts. Similar to the case of the Hamiltonian matrix above, the remaining num_wann\(^2 \times\) nrpts lines each contain, respectively, the components of the vector \(\mathbf{R}\) in terms of the lattice vectors \(\{\mathbf{A}_{i}\}\), the indices \(m\) and \(n\), and the real and imaginary parts of the position matrix element in the WF basis.

Unlike seedname_hr.dat, this file carries no degeneracy block, so by itself it does not say how to weight the \(\mathbf{R}\) sum: the weights have to be taken from seedname_hr.dat or seedname_wsvec.dat. With write_ndegen_applied = true the file is written on the expanded \(\mathbf{R}\) list with the weights already applied and is self-contained,

\[ \langle m\mathbf{0}|\mathbf{r}|n\mathbf{R}\rangle \;\longrightarrow\; \mathbf{A}_{mn}(\mathbf{k}) = \sum_{\mathbf{R}} e^{i\mathbf{k}\cdot\mathbf{R}}\, \mathbf{A}_{mn}^{(\mathbf{R})} . \]

seedname_tb.dat

OUTPUT. Written if write_tb=.TRUE.. This file is essentially a combination of seedname_hr.dat and seedname_r.dat, plus lattice vectors. The first line gives the date and time at which the file was created. The second to fourth lines are the lattice vectors in Angstrom unit.

Output file
 written on 27Jan2020 at 18:08:42
  -1.8050234585004898        0.0000000000000000        1.8050234585004898
   0.0000000000000000        1.8050234585004898        1.8050234585004898
  -1.8050234585004898        1.8050234585004898        0.0000000000000000

The next part is the same as seedname_hr.dat. The fifth line states the number of Wannier functions num_wann. The sixth line gives the number of Wigner-Seitz grid-points nrpts. The next block of nrpts integers gives the degeneracy of each Wigner-Seitz grid point, with 15 entries per line. Then, the next num_wann\(^2 \times\) nrpts lines each contain, respectively, the components of the vector \(\mathbf{R}\) in terms of the lattice vectors \(\{\mathbf{A}_{i}\}\), the indices \(m\) and \(n\), and the real and imaginary parts of the Hamiltonian matrix element \(H_{mn}^{(\mathbf{R})}\) in the WF basis, e.g.,

Output file
           7
          93
    4    6    2    2    2    1    2    2    1    1    2    6    2    2    2
    6    2    2    4    1    1    1    4    1    1    1    1    2    1    1
    1    2    2    1    1    2    4    2    1    2    1    1    1    1    2
    1    1    1    2    1    1    1    1    2    1    2    4    2    1    1
    2    2    1    1    1    2    1    1    1    1    4    1    1    1    4
    2    2    6    2    2    2    6    2    1    1    2    2    1    2    2
    2    6    4

   -3    1    1
    1    1    0.42351556E-02 -0.95722060E-07
    2    1    0.69481480E-07 -0.20318638E-06
    3    1    0.10966508E-06 -0.13983284E-06
    .
    .
    .

If write_ndegen_applied = true, both blocks are written on the expanded \(\mathbf{R}\) list with the degeneracy weights already applied, exactly as described for seedname_hr.dat and seedname_r.dat above, and both interpolate with a plain \(\sum_{\mathbf{R}} e^{i\mathbf{k}\cdot\mathbf{R}}\).

Finally, the last part is the same as seedname_r.dat. The num_wann\(^2 \times\) nrpts lines each contain, respectively, the components of the vector \(\mathbf{R}\) in terms of the lattice vectors \(\{\mathbf{A}_{i}\}\), the indices \(m\) and \(n\), and the real and imaginary parts of the position matrix element in the WF basis (the float numbers in columns 3 and 4 are the real and imaginary parts for \(\langle m\mathbf{0}|\mathbf{r}_x|n\mathbf{R}\rangle\), columns 5 and 6 for \(\langle m\mathbf{0}|\mathbf{r}_y|n\mathbf{R}\rangle\), and columns 7 and 8 for \(\langle m\mathbf{0}|\mathbf{r}_z|n\mathbf{R}\rangle\)), e.g.

Output file
   -3    1    1
    1    1    0.32277552E-09  0.21174901E-08 -0.85436987E-09  0.26851510E-08  ...
    2    1   -0.18881883E-08  0.21786973E-08  0.31123076E-03  0.39228431E-08  ...
    3    1    0.31123242E-03 -0.35322230E-09  0.70867281E-09  0.10433480E-09  ...
    .
    .
    .

seedname.kshell

INPUT. Read if kmesh_shell_from_file = .TRUE.; it specifies by hand which b-vectors enter the finite-difference formulas, and how they are grouped into shells, instead of letting wannier90 select the shells automatically. This is useful when the automatic search fails, which typically happens when the k-point mesh has accidentally degenerate shells of neighbours.

Each non-empty line of the file defines one shell and contains the indices of the b-vectors belonging to it, separated by spaces; the number of such lines therefore sets the number of shells. Blank lines and lines beginning with ! or # are ignored. The b-vectors are numbered by their position in the list of all b-vectors of the first search_shells shells of neighbours, in the order in which wannier90 generates them; this numbered list, together with the distance of each shell, is printed in seedname.wout when the automatic search fails. One weight \(w_{b}\) is determined for each shell, so that b-vectors that should carry the same weight must be put on the same line.

In the following example a single shell is defined, containing twelve b-vectors picked out of the first few shells of neighbours:

Input file
1 2 3 4 5 6 7 8 9 11 13 14

seedname.bvec

OUTPUT. Written if write_bvec = true. This file contains the matrix elements of bvector and their weights. The first line gives the date and time at which the file was created. The second line states the number of k-points and the total number of neighbours for each k-point nntot. Then all the other lines contain the b-vector (x,y,z) coordinate and weights for each k-points and each of its neighbours.

seedname_wsvec.dat

OUTPUT. Written if write_hr = true or write_rmn = true or write_tb = true. The first line gives the date and time at which the file was created and the value of use_ws_distance. For each pair of Wannier functions (identified by the components of the vector \(\mathbf{R}\) separating their unit cells and their indices) it gives: (i) the number of lattice vectors of the periodic supercell \(\mathbf{T}\) that bring the Wannier function in \(\mathbf{R}\) back in the Wigner-Seitz cell centred on the other Wannier function and (ii) the set of superlattice vectors \(\mathbf{T}\) to make this transformation. These superlattice vectors \(\mathbf{T}\) should be added to the \(\mathbf{R}\) vector to obtain the correct centre of the Wannier function that underlies a given matrix element (e.g. the Hamiltonian matrix elements in seedname_hr.dat) in order to correctly interpolate in reciprocal space.

With write_ndegen_applied = true this file is informational only

The header then also carries write_ndegen_applied=.true.. The shifts are still the true ones, and remain useful for operators that Wannier90 does not itself write, but they have already been folded into seedname_hr.dat, seedname_r.dat and seedname_tb.dat, whose \(\mathbf{R}\) list no longer matches the one listed here. Applying them a second time gives a wrong result.

Output file
## written on 20Sep2016 at 18:12:37  with use_ws_distance=.true.
    0    0    0    1    1
    1
    0    0    0
    0    0    0    1    2
    1
    0    0    0
    0    0    0    1    3
    1
    0    0    0
    0    0    0    1    4
    1
    0    0    0
    0    0    0    1    5
    1
    0    0    0
    0    0    0    1    6
    2
    0   -1   -1
    1   -1   -1
    .
    .
    .

seedname_qc.dat

OUTPUT. Written if transport = .TRUE.. The first line gives the date and time at which the file was created. In the subsequent lines, the energy value in units of eV is written in the left column, and the quantum conductance in units of \(\frac{2e^2}{h}\) (\(\frac{e^2}{h}\) for a spin-polarized system) is written in the right column.

Output file
 ## written on 14Dec2007 at 11:30:17
   -3.000000       8.999999
   -2.990000       8.999999
   -2.980000       8.999999
   -2.970000       8.999999
    .
    .
    .

seedname_dos.dat

OUTPUT. Written if transport = .TRUE.. The first line gives the date and time at which the file was created. In the subsequent lines, the energy value in units of eV is written in the left column, and the density of states in an arbitrary unit is written in the right column.

Output file
 ## written on 14Dec2007 at 11:30:17
   -3.000000       6.801199
   -2.990000       6.717692
   -2.980000       6.640828
   -2.970000       6.569910
    .
    .
    .

seedname_htB.dat

INPUT/OUTPUT. Read if transport_mode = bulk and tran_read_ht = .TRUE.. Written if tran_write_ht = .TRUE.. The first line gives the date and time at which the file was created. The second line gives tran_num_bb. The subsequent lines contain tran_num_bb\(\times\)tran_num_bb \(H_{mn}\) matrix, where the indices \(m\) and \(n\) span all tran_num_bb WFs located at \(0^{\mathrm{th}}\) principal layer. Then tran_num_bb is recorded again in the new line followed by \(H_{mn}\), where \(m^{\mathrm{th}}\) WF is at \(0^{\mathrm{th}}\) principal layer and \(n^{\mathrm{th}}\) at \(1^{\mathrm{st}}\) principal layer. The \(H_{mn}\) matrix is written in such a way that \(m\) is the fastest varying index.

Output file
 written on 14Dec2007 at 11:30:17
   150
   -1.737841   -2.941054    0.052673   -0.032926    0.010738   -0.009515
    0.011737   -0.016325    0.051863   -0.170897   -2.170467    0.202254
    .
    .
    .
   -0.057064   -0.571967   -0.691431    0.015155   -0.007859    0.000474
   -0.000107   -0.001141   -0.002126    0.019188   -0.686423  -10.379876
   150
    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000
    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000
    .
    .
    .
    0.000000    0.000000    0.000000    0.000000    0.000000   -0.001576
    0.000255   -0.000143   -0.001264    0.002278    0.000000    0.000000

seedname_htL.dat

INPUT. Read if transport_mode = lcr and tran_read_ht = .TRUE.. The file must be written in the same way as in seedname_htB.dat. The first line can be any comment you want. The second line gives tran_num_ll. tran_num_ll in seedname_htL.dat must be equal to that in seedname.win. The code will stop otherwise.

Output file
 Created by a WANNIER user
   105
    0.316879    0.000000   -2.762434    0.048956    0.000000   -0.016639
    0.000000    0.000000    0.000000    0.000000    0.000000   -2.809405
    .
    .
    .
    0.000000    0.078188    0.000000    0.000000   -2.086453   -0.001535
    0.007878   -0.545485  -10.525435
   105
    0.000000    0.000000    0.000315   -0.000294    0.000000    0.000085
    0.000000    0.000000    0.000000    0.000000    0.000000    0.000021
    .
    .
    .
    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000
    0.000000    0.000000    0.000000

seedname_htR.dat

INPUT. Read if transport_mode = lcr and tran_read_ht = .TRUE. and tran_use_same_lead = .FALSE.. The file must be written in the same way as in seedname_htL.dat. tran_num_rr in seedname_htR.dat must be equal to that in seedname.win.

seedname_htC.dat

INPUT. Read if transport_mode = lcr and tran_read_ht = .TRUE.. The first line can be any comment you want. The second line gives tran_num_cc. The subsequent lines contain tran_num_cc\(\times\)tran_num_cc \(H_{mn}\) matrix, where the indices \(m\) and \(n\) span all tran_num_cc WFs inside the central conductor region. tran_num_cc in seedname_htC.dat must be equal to that in seedname.win.

Output file
 Created by a WANNIER user
    99
  -10.499455   -0.541232    0.007684   -0.001624   -2.067078   -0.412188
    0.003217    0.076965    0.000522   -0.000414    0.000419   -2.122184
    .
    .
    .
   -0.003438    0.078545    0.024426    0.757343   -2.004899   -0.001632
    0.007807   -0.542983  -10.516896

seedname_htLC.dat

INPUT. Read if transport_mode = lcr and tran_read_ht = .TRUE.. The first line can be any comment you want. The second line gives tran_num_ll and tran_num_lc in the given order. The subsequent lines contain tran_num_ll\(\times\)tran_num_lc \(H_{mn}\) matrix. The index \(m\) spans tran_num_ll WFs in the surface principal layer of semi-infinite left lead which is in contact with the conductor region. The index \(n\) spans tran_num_lc WFs in the conductor region which have a non-negligible interaction with the WFs in the semi-infinite left lead. Note that tran_num_lc can be different from tran_num_cc.

Output file
 Created by a WANNIER user
   105    99
    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000
    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000
    .
    .
    .
   -0.000003    0.000009    0.000290    0.000001   -0.000007   -0.000008
    0.000053   -0.000077   -0.000069

seedname_htCR.dat

INPUT. Read if transport_mode = lcr and tran_read_ht = .TRUE.. The first line can be any comment you want. The second line gives tran_num_cr and tran_num_rr in the given order. The subsequent lines contain tran_num_cr\(\times\)tran_num_rr \(H_{mn}\) matrix. The index \(m\) spans tran_num_cr WFs in the conductor region which have a non-negligible interaction with the WFs in the semi-infinite right lead. The index \(n\) spans tran_num_rr WFs in the surface principal layer of semi-infinite right lead which is in contact with the conductor region. Note that tran_num_cr can be different from tran_num_cc.

Output file
 Created by a WANNIER user
    99   105
   -0.000180    0.000023    0.000133   -0.000001    0.000194    0.000008
   -0.000879   -0.000028    0.000672   -0.000257   -0.000102   -0.000029
    .
    .
    .
    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000
    0.000000    0.000000    0.000000

seedname.unkg

INPUT. Read if transport_mode = lcr and tran_read_ht = .FALSE.. The first line is the number of G-vectors at which the \(\tilde{u}_{m\mathbf{k}}(\mathbf{G})\) are subsequently printed. This number should always be 32 since 32 specific \(\tilde{u}_{m\mathbf{k}}\) are required. The following lines contain the following in this order: The band index \(m\), a counter on the number of G-vectors, the integer co-efficient of the G-vector components \(a,b,c\) (where \(\mathbf{G}=a\mathbf{b}_1+b\mathbf{b}_2+c\mathbf{b}_3\)), then the real and imaginary parts of the corresponding \(\tilde{u}_{m\mathbf{k}}(\mathbf{G})\) at the \(\Gamma\)-point. We note that the ordering in which the G-vectors and \(\tilde{u}_{m\mathbf{k}}(\mathbf{G})\) are printed is not important, but the specific G-vectors are critical. The following example displays for a single band, the complete set of \(\tilde{u}_{m\mathbf{k}}(\mathbf{G})\) that are required. Note the G-vectors (\(a,b,c\)) needed.

Output file
      32
    1    1    0    0    0   0.4023306   0.0000000
    1    2    0    0    1  -0.0000325   0.0000000
    1    3    0    1    0  -0.3043665   0.0000000
    1    4    1    0    0  -0.3043665   0.0000000
    1    5    2    0    0   0.1447143   0.0000000
    1    6    1   -1    0   0.2345179   0.0000000
    1    7    1    1    0   0.2345179   0.0000000
    1    8    1    0   -1   0.0000246   0.0000000
    1    9    1    0    1   0.0000246   0.0000000
    1   10    0    2    0   0.1447143   0.0000000
    1   11    0    1   -1   0.0000246   0.0000000
    1   12    0    1    1   0.0000246   0.0000000
    1   13    0    0    2   0.0000338   0.0000000
    1   14    3    0    0  -0.0482918   0.0000000
    1   15    2   -1    0  -0.1152414   0.0000000
    1   16    2    1    0  -0.1152414   0.0000000
    1   17    2    0   -1  -0.0000117   0.0000000
    1   18    2    0    1  -0.0000117   0.0000000
    1   19    1   -2    0  -0.1152414   0.0000000
    1   20    1    2    0  -0.1152414   0.0000000
    1   21    1   -1   -1  -0.0000190   0.0000000
    1   22    1   -1    1  -0.0000190   0.0000000
    1   23    1    1   -1  -0.0000190   0.0000000
    1   24    1    1    1  -0.0000190   0.0000000
    1   25    1    0   -2  -0.0000257   0.0000000
    1   26    1    0    2  -0.0000257   0.0000000
    1   27    0    3    0  -0.0482918   0.0000000
    1   28    0    2   -1  -0.0000117   0.0000000
    1   29    0    2    1  -0.0000117   0.0000000
    1   30    0    1   -2  -0.0000257   0.0000000
    1   31    0    1    2  -0.0000257   0.0000000
    1   32    0    0    3   0.0000187   0.0000000
    2    1    0    0    0  -0.0000461   0.0000000
    .
    .
    .

seedname_u.mat

OUTPUT. Written if write_u_matrices = .TRUE.. The first line gives the date and time at which the file was created. The second line states the number of kpoints num_kpts and the number of wannier functions num_wann twice. The third line is empty. Then there are num_kpts blocks of data, each of which starts with a line containing the kpoint (in fractional coordinates of the reciprocal lattice vectors) followed by num_wann * num_wann lines containing the matrix elements (real and imaginary parts) of \(\mathbf{U}^{(\mathbf{k})}\). The matrix elements are in column-major order (ie, cycling over rows first and then columns). There is an empty line between each block of data.

Output file
 written on 15Sep2016 at 16:33:46
           64           8           8

   0.0000000000  +0.0000000000  +0.0000000000
   0.4468355787  +0.1394579978
  -0.0966033667  +0.4003934902
  -0.0007748974  +0.0011788678
  -0.0041177339  +0.0093821027
   .
   .
   .

   0.1250000000   0.0000000000  +0.0000000000
   0.4694005589  +0.0364941808
  +0.2287801742  -0.1135511138
  -0.4776782452  -0.0511719121
  +0.0142081014  +0.0006203139
   .
   .
   .

seedname_u_dis.mat

OUTPUT. Written if write_u_matrices = .TRUE. and disentanglement is enabled. The first line gives the date and time at which the file was created. The second line states the number of kpoints num_kpts, the number of wannier functions num_wann and the number of bands num_bands. The third line is empty. Then there are num_kpts blocks of data, each of which starts with a line containing the kpoint (in fractional coordinates of the reciprocal lattice vectors) followed by num_wann * num_bands lines containing the matrix elements (real and imaginary parts) of \(\mathbf{U}^{\mathrm{dis}(\mathbf{k})}\). The matrix elements are in column-major order (ie, cycling over rows first and then columns). There is an empty line between each block of data.

Output file
 written on 15Sep2016 at 16:33:46
           64           8          16

   0.0000000000  +0.0000000000  +0.0000000000
   1.0000000000  +0.0000000000
  +0.0000000000  +0.0000000000
  +0.0000000000  +0.0000000000
  +0.0000000000  +0.0000000000
   .
   .
   .

   0.1250000000   0.0000000000  +0.0000000000
   1.0000000000  +0.0000000000
  +0.0000000000  +0.0000000000
  +0.0000000000  +0.0000000000
  +0.0000000000  +0.0000000000
   .
   .
   .

seedname_v.mat

OUTPUT. Written if write_u_matrices = .TRUE. and disentanglement is enabled. The format is identical to that of seedname_u_dis.mat: the first line gives the date and time at which the file was created, the second line states the number of kpoints num_kpts, the number of wannier functions num_wann and the number of bands num_bands, the third line is empty, and there follow num_kpts blocks of data, each starting with a line containing the kpoint (in fractional coordinates of the reciprocal lattice vectors) followed by num_wann * num_bands lines containing the matrix elements (real and imaginary parts) in column-major order, with an empty line between blocks.

What this file contains is the product

\[ \mathbf{V}^{(\mathbf{k})} = \mathbf{U}^{\mathrm{dis}(\mathbf{k})}\ \mathbf{U}^{(\mathbf{k})}, \]

that is, the num_bands\(\times\)num_wann matrix that transforms the original Bloch states directly into the MLWFs, without going through the optimally-connected subspace. It is therefore the combination of seedname_u_dis.mat and seedname_u.mat that is needed in most post-processing steps, and is provided here for convenience.

seedname.vdw

OUTPUT. Written if write_vdw_data = .TRUE., which requires Brillouin-zone sampling at the Gamma point only. It contains the Wannier centres, spreads and occupancies needed by the w90vdw utility to compute van der Waals energies; see Section w90vdw and the documentation in utility/w90vdw/doc/.

The file is read line by line by w90vdw, so the order of the keywords and of the values matters. After a set of keyword lines it contains a centres_spreads_occ block: a line with the units of the data (ang, as written by wannier90) followed by one line per MLWF, giving the three Cartesian coordinates of the centre, the quadratic spread, and the occupancy. Centres are translated into the home unit cell. If disentanglement was used, the occupancies are the diagonal elements of \(\mathbf{V}^{\dagger}\mathbf{V}\), with \(\mathbf{V} = \mathbf{U}^{\mathrm{dis}}\mathbf{U}\) restricted to the num_valence_bands occupied states (which must then be set in seedname.win); otherwise they are all equal to one.

Output file
disentangle F
amalgamate F
degeneracy  2
num_frag 2
num_wann
 15  15
tol_occ 0.9
pxyz
F F F
F F F
tol_dist 0.05
centres_spreads_occ
ang
 6.8742130969  9.1647361906  7.9381392067  0.6114182868   1.00000000
 7.8203233235  8.4839104790  8.2232988115  1.1955763722   1.00000000
 7.8182901655  7.3925794877 12.4610823959  1.2061444591   1.00000000
 .
 .
 .

Note

wannier90 can only write a template. Several of the entries describe the way the system is partitioned into molecular fragments, which the code does not know about: amalgamate, num_frag, num_wann, tol_occ, pxyz, tol_dist and the ordering of the centres_spreads_occ block must be checked, and usually corrected, by hand before running w90vdw. In particular the number of fragments is always written as two, with the MLWFs split evenly between them.


  1. I. Souza, N. Marzari, and D. Vanderbilt. Maximally localized wannier functions for entangled energy bands. Phys. Rev. B, 65:035109, 2001. ↩

  2. Runzhi Wang, Emanuel A. Lazar, Hyowon Park, Andrew J. Millis, and Chris A. Marianetti. Selectively localized wannier functions. Physical Review B, 10 2014. doi:10.1103/PhysRevB.90.165125. ↩↩