Introduction

Here we will describe how to generate an Hamiltonian matrix in Wannier functions basis from a DFT calculation. The theoretical background for Wannier functions generation and Hamiltonian production procedure is described in EPJB 65, 91 (2008). The obtained Hamiltonian is suitable to be used as an input for the AMULET code. When we say ‘DFT calculation’ we talk about Quantum ESPRESSO based results at the moment.

Typical Hamiltonian generation procedure consists of three steps:
1. Self-consistent DFT calculation
2. Calculation of eigenvalues and eigenvectors on an uniform grid within the full Brillouin zone
3. Wannier functions generation and the Hamiltonian construction.

Step 1: Self-consistent DFT calculation

Use Quantum ESPRESSO as usual. It doesn’t matter what pseudopotential you choose and what type of the exchange-correlation functional you use. One should note that usage of a hybrid functional of DFT+U approach is meaningless in this step if you plan to perform DMFT calculation later. One can set any reasonable k-points grid. The goal of the first step is to obtain a reasonable and self-consistent ground state charge density of a system.

Step 2: Non self-consistent DFT calculation on a regular mesh

In a general case, symmetry of Wannier functions could be lower than the symmetry of the crystal. Therefore one should switch off symmetry operations and run an nscf calculation on a regular k-points grid within full Brillouin zone. Reciprocal space integration should be performed with gaussian smearing. Use the following keys:

nosym = .true.
noinv = .true.
occupations = ''smearing''
degauss = set a reasonable value for your system

It is allowed to perform nscf calculation in a parallel mode, but wf_collect = .true. key must be set, since the code for the Hamiltonian generation is serial.

Step 3: Hamiltonian in Wannier functions basis generation.

There is an example for Hamiltonian production in QE distributive (in PP/examples/WannierHam_example dir).

Before you start the Hamiltonian generation, you should know a symmetry of trial atomic orbitals that will be used for projection (typically these are transition metal d- plus, sometimes, the nearest ligands p-orbitals). And you should know numbers of bands (or energy interval) that you are going to reproduce with the model Hamiltonian. One of the simplest methods to determine the energy interval is to plot the partial densities of states for atomic orbitals with desired symmetry.

Structure of the input file for wannier_ham.x:

========================================================================
NAMELIST: &INPUTPP
+--------------------------------------------------------------------
Variable: prefix

Type: CHARACTER
Default: '' ''
Description: as usual
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: outdir

Type: CHARACTER
Default: '' ''
Description: as usual
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: nwan

Type: INTEGER
Default: '' ''
Description: Number of Wannier functions
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: use_energy_int

Type: LOGICAL
Default: ''.FALSE.''
Description: If .true. bands will be defined not by numbers, but by
energy range (in eV)!
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: plot_bands

Type: LOGICAL
Default: ''.FALSE.''
Description: If .true. bands structures of original and model hamiltonian
will be outputted in gnuplot format for comparison
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variable: form

Type: character
Default: '' ''
Description: Hamiltonian file format. Should be set to ''amulet'' to obtain
the Hamiltonian in the AMULET format. ''default'' for an old file format
+--------------------------------------------------------------------
========================================================================
CARD: WANNIER_AC

Definition of trial atomic functions and bands for Wannier generation

/////////////////////////////////////////
// Syntax: //
/////////////////////////////////////////

Wannier# 1 bands_from bands_to
atom iatom
l m
Wannier# 2 bands_from bands_to
atom iatom
l m
...
/////////////////////////////////////////

DESCRIPTION OF ITEMS:
+--------------------------------------------------------------------
Variables: bands_from, bands_to

Type: REAL or INTEGER
Description: Defines Bloch functions subspace for projection
procedure. If use_energy_interval=.true. these are
energy values in eV. Otherwise these are bands numbers.
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variables: iatom

Type: INTEGER
Description: Number of site on that Wannier function centered
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variables: l

Type: CHARACTER
Description: Angular channel for trial wavefunction. ''s'', ''p'' or ''d''
+--------------------------------------------------------------------
+--------------------------------------------------------------------
Variables: m

Type: INTEGER
Description: Magnetic quantum number of trial orbital (from 1 to 5
for d-orbitals, from 1 to 3 for o-orbitals)
+--------------------------------------------------------------------
===END OF CARD==========================================================

Run wannier_ham.x < your_input_file on 1 processor in the directory with your nscf calculation.

Please check obtained Wannier functions occupations. They should be reliable. If you obtain a lot of wrong orthogonalization warnings in output, it means that something is wrong with the energy bands selection.

As a result of Hamiltonian generation procedure at least four files will be produced :

hamilt.am
system.am
original_bands.dat
wannier_bands.dat

The first two contains the Hamiltonian and some data about crystal structure of the compound (If you didn’t obtain *.am files - check form = ''amulet'' parameter in the input file for wannier_ham.x). The last two contains eigenvalues of the full and model Hamiltonians. These files could be plotted with gnuplot and results should coincide within the energy window of interest. The coincidence of the eigenvalues is the main indicator of successful projection procedure.

Back to top