### 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.