Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
VASP And Wannier90:
A Quick Tutorial
J. M. Skelton
WMD Group Meeting
15th February 2016
WMD Group Meeting, February 2016 | Slide 2
Wannier functions in two slides (simplified!)
• Wannier functions (WFs) are essentially an alternative basis for expanding the electronic
states in periodic solids
• They are related to the more usual Bloch orbitals 𝛹 𝑛𝐤 by a unitary transformation:
𝛹 𝑛𝐤 𝐫 = 𝑒 𝑖𝐤.𝐫
𝑒 𝑖𝜑 𝑛(𝐤)
𝑢 𝑛(𝐫) 𝑤 𝐑𝑛 𝐫 =
𝑉
(2𝜋)3
𝐤
𝛹 𝑛𝐤 𝐫 𝑒−𝑖𝐤.𝐑 𝑒 𝑖𝜑 𝑛(𝐤)
Arbitrary phase factor 𝑒 𝑖𝜑 𝑛(𝐤)
not assigned by
the Schrödinger equation
• The arbitrariness of 𝑒 𝑖𝜑 𝑛(𝐤)
propagates to the WFs, but we can exploit this freedom to
choose WFs which have the smallest “spread”, i.e. “maximally locallised” WFs (MLWFs),
which are the easiest to understand “chemically”
http://cfm.ehu.es/ivo/publications/marzari-psik03.pdf
WMD Group Meeting, February 2016 | Slide 3
Wannier functions in two slides (simplified!)
• The most general form of the WF <-> Bloch orbital transformation must take into account
the fact that Bloch orbitals may be degenerate at some k-points:
• The procedure for this is called “disentanglement”
• A few good links covering the mathematics in more detail:
• http://journals.aps.org/rmp/abstract/10.1103/RevModPhys.84.1419
• http://cfm.ehu.es/ivo/publications/marzari-psik03.pdf
• http://www.tcm.phy.cam.ac.uk/~jry20/esdg2.pdf
𝛹 𝑛𝐤 𝐫 →
𝑛
𝑈 𝑚𝑛
(𝐤)
𝛹 𝐦𝐤 𝐫 𝑤 𝐑𝑛 𝐫 =
𝑉
(2𝜋)3
𝐤 𝑛
𝑈 𝑚𝑛
(𝐤)
𝛹 𝐦𝐤 𝐫 𝑒−𝑖𝐤.𝐑 𝑒 𝑖𝜑 𝑛(𝐤)
WMD Group Meeting, February 2016 | Slide 4
Wannier functions
Images from: https://en.wikipedia.org/wiki/Wannier_function
WMD Group Meeting, February 2016 | Slide 5
Wannier functions: Why?
• MLWFs are the solid-state equivalent of molecular orbitals -> can be used to perform
analyses which are difficult with Bloch orbitals:
o More intuitive visualisation of orbitals
o In an insulator, the charge centre of a MLWF provides a kind of classical definition
for the location of an electron (pair) -> good for e.g. bonding analyses
o The vector sum of the Wannier centres is directly related to the macroscopic
polarisation
• Easy to obtain Bloch orbitals (and eigenvalues) at arbitrary k-points -> allows band
dispersions to be computed from uniform k-point grids (“Wannier interpolation”)
o Potentially very useful for calculating effective masses
http://cfm.ehu.es/ivo/publications/marzari-psik03.pdf
WMD Group Meeting, February 2016 | Slide 6
Building VASP with Wannier90 support
• Download Wannier90 1.2 from http://www.wannier.org/download.html [N.B. the
interface from VASP 5.4.1 does not use the latest version]
• For more recent Intel compilers, copy config/make.sys.ifort to make.sys and edit
as follows:
LIBDIR = /opt/intel/mkl721/lib/32
LIBS = -L$(LIBDIR) -lmkl_lapack -lmkl_ia32 -lguide -lpthread
LIBDIR = ${MKLROOT}/lib/intel64
LIBS = -L$(LIBDIR) -mkl -lpthread
• Build the executable and library, run the tests, and check the report:
make wannier lib test
WMD Group Meeting, February 2016 | Slide 7
Building VASP with Wannier90 support
• For VASP 5.4.1 and the Intel compilers, edit makefile.include as follows:
CPP_OPTIONS = ...
...
LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS)
CPP_OPTIONS = -DVASP2WANNIER90 ...
...
LLIBS = install_path/libwannier.a $(SCALAPACK) $(LAPACK) $(BLAS)
• Recompile VASP:
make veryclean ; make gam std ncl
• N.B. The build was done from a copy of the source with all the latest patches applied - if
you run into any strange build errors, try applying these to see if it fixes it
http://cms.mpi.univie.ac.at/wiki/index.php/LWANNIER90
WMD Group Meeting, February 2016 | Slide 8
Tutorial: HSE 06 band structure
ALGO = All
EDIFF = 1.0e-8
ENCUT = 500
ISIF = 2
ISMEAR = -5
KPAR = 2
NPAR = 1
LCHARG = .FALSE.
LREAL = .FALSE.
NBANDS = 16
NEDOS = 2000
PREC = Accurate
SYSTEM = Si
LHFCALC = .TRUE.
HFSCREEN = 0.2
ALGO = All
EDIFF = 1.0e-8
ENCUT = 500
ISIF = 2
ISMEAR = -5
KPAR = 2
!NPAR = 1
LCHARG = .FALSE.
LREAL = .FALSE.
NBANDS = 16
NEDOS = 2000
PREC = Accurate
SYSTEM = Si
LHFCALC = .TRUE.
HFSCREEN = 0.2
LWANNIER90 = .TRUE.
• First step: • Second step (restart from WAVECAR):
Appears to crash when
LWANNIER90 is set and
NPAR != N
Switch on the Wannier90
interface
Two-step job safer because typos in a
wannier90.win file cause VASP to crash
before writing out the WAVECAR; also, have to
use NPAR = N with LWANNIER90 set
WMD Group Meeting, February 2016 | Slide 9
Tutorial: HSE 06 band structure
• Wannier90 takes an input file seedname.win
with control tags, plus a set of other input files
containing information about the Bloch states
• The VASP interface uses a seedname of
wannier90; VASP will look for
wannier90.win, and create/update it if
required
• Add the blocks in blue to the skeleton input
file; these instruct VASP/Wannier90 to use a
random initial guess for the MLWFs, and to
use them to guide the “Wannierisation”
• The remaining blocks are added by VASP if
they are not already there
Begin Projections
Random
End Projections
guiding_centres = true
num_wann = 16
begin unit_cell_cart
2.7155 2.7155 0.000
...
end unit_cell_cart
begin atoms_cart
Si 0.000 0.000 0.000
...
end atoms_cart
mp_grid = 8 8 8
begin kpoints
...
end kpoints
WMD Group Meeting, February 2016 | Slide 10
Tutorial: HSE 06 band structure
• After the initial “Wannierisation”, Wannier90 can perform various post-processing - e.g.
to compute a band structure:
restart = plot
bands_plot = true
begin kpoint_path
L 0.50000 0.50000 0.50000 G 0.00000 0.00000 0.00000
G 0.00000 0.00000 0.00000 X 0.50000 0.00000 0.50000
X 0.50000 0.00000 0.50000 W 0.50000 0.25000 0.75000
W 0.50000 0.25000 0.75000 G 0.00000 0.00000 0.00000
end kpoint_path
bands_num_points 50
bands_plot_format gnuplot xmgrace
This sets the number of segments
along the first path
If not specified, gnuplot is the
default
Each line specifies a segment of the
band structure
http://www.wannier.org/doc/user_guide.pdf
WMD Group Meeting, February 2016 | Slide 11
Tutorial: HSE 06 band structure
1. Run VASP with LWANNIER90 = .TRUE. and
your skeleton input file in the working directory
2. Run:
wannier90.x wannier90
to minimise the MLWFs; the solutions are
written to wannier90.chk
3. Add the band-structure (or other post-
processing) commands and rerun wannier90.x
4. Raw data are written to
wannier90_band.dat/wannier90_kpt.dat;
scripts to plot using gnuplot/grace are also
produced depending on bands_plot_format
WMD Group Meeting, February 2016 | Slide 12
Wannier90 vs “fake self-consistency”
• The alternative technique for computing hybrid band structures in VASP is to introduce
zero-weight k-points into the KPOINTS file
• The eigenvalues at these k-points are converged iteratively, but do not contribute to the
total energy, and so are not part of the break criteria for the SCF loop
For hybrid functionals and Hartree-Fock, the band structure can be calculated by
adding additional k-points with zero weight to the KPOINTS file. This is easily
achieved, by performing first a standard hybrid functional calculation with a
conventional KPOINTS file. After the run, copy the IBZKPT file to the KPOINTS file (this
file stores explictly the list of k-points used in the previous calculation), and simply
add the desired additional k-points with zero weight. Since VASP uses an iterative
matrix diagonalization and since the added k-points do not influence the energy, one
needs to force VASP to perform at least 5 iterations before inspecting the one-
electron energies at k-points with zero weight (NELMIN = 5).
http://cms.mpi.univie.ac.at/vasp/vasp/Accurate_DOS_Band_structure_calculations.html
WMD Group Meeting, February 2016 | Slide 13
• How many iterative steps (NELMIN) are needed to converge the eigenvalues at the zero-
weight k-points? We can check by comparing the “mesh” and “band” Γ-point
eigenvalues…
Wannier90 vs “fake self-consistency”
k-point 1 : 0.0000 0.0000 0.0000
band No. band energies occupation
1 -7.8357 2.00000
2 5.4647 2.00000
3 5.4647 2.00000
4 5.4647 2.00000
5 8.8034 0.00000
6 8.8034 0.00000
7 8.8034 0.00000
8 9.7959 0.00000
9 14.2683 0.00000
10 14.2683 0.00000
11 14.2739 0.00000
12 17.8122 0.00000
13 17.8122 0.00000
14 17.8122 0.00000
15 21.7603 0.00000
16 30.2363 0.00000
k-point 39 : 0.0000 0.0000 0.0000
band No. band energies occupation
1 -7.2102 0.00000
2 7.0956 0.00000
3 7.4845 0.00000
4 9.1114 0.00000
5 8.8483 0.00000
6 12.7657 0.00000
7 11.5932 0.00000
8 8.3881 0.00000
9 11.7581 0.00000
10 25.6173 0.00000
11 16.9587 0.00000
12 22.9149 0.00000
13 29.8875 0.00000
14 27.4218 0.00000
15 27.8106 0.00000
16 35.8819 0.00000
WMD Group Meeting, February 2016 | Slide 14
Wannier90 vs “fake self-consistency”
k-point 1 : 0.0000 0.0000 0.0000
band No. band energies occupation
1 -7.8357 2.00000
2 5.4647 2.00000
3 5.4647 2.00000
4 5.4647 2.00000
5 8.8034 0.00000
6 8.8034 0.00000
k-point 39 : 0.0000 0.0000 0.0000
band No. band energies occupation
1 -7.2102 0.00000
2 7.0956 0.00000
3 7.4845 0.00000
4 9.1114 0.00000
5 8.8483 0.00000
6 12.7657 0.00000
k-point 1 : 0.0000 0.0000 0.0000
band No. band energies occupation
1 -7.8357 2.00000
2 5.4647 2.00000
3 5.4647 2.00000
4 5.4647 2.00000
5 8.8034 0.00000
6 8.8034 0.00000
k-point 39 : 0.0000 0.0000 0.0000
band No. band energies occupation
1 -7.5815 0.00000
2 6.7979 0.00000
3 7.3720 0.00000
4 7.7883 0.00000
5 8.7538 0.00000
6 10.9143 0.00000
• Restart from WAVECAR w/ NELMIN = 5
• Restart from WAVECAR w/ NELMIN = 10
WMD Group Meeting, February 2016 | Slide 15
Wannier90 vs “fake self-consistency”
• In practice, the best solution is to run a “clean” SCF (i.e. restart from fresh, or from a
standard DFT WAVECAR) with the zero-weight k-points present…
• This is how it’s done in the Si tutorial on the VASP Wiki
k-point 1 : 0.0000 0.0000 0.0000
band No. band energies occupation
1 -7.8357 2.00000
2 5.4647 2.00000
3 5.4647 2.00000
4 5.4647 2.00000
5 8.8034 0.00000
6 8.8034 0.00000
7 8.8034 0.00000
8 9.7959 0.00000
9 14.2683 0.00000
10 14.2683 0.00000
11 14.2739 0.00000
12 17.8122 0.00000
k-point 39 : 0.0000 0.0000 0.0000
band No. band energies occupation
1 -7.8219 0.00000
2 5.4785 0.00000
3 5.4785 0.00000
4 5.4788 0.00000
5 8.8034 0.00000
6 8.8034 0.00000
7 8.8050 0.00000
8 9.7953 0.00000
9 14.2742 0.00000
10 14.2705 0.00000
11 14.2706 0.00000
12 17.8126 0.00000
• The “clean” SCF does 10 steps in this particular case (i.e. the same as NELMIN = 10), but
gives much better convergence - presumably an implementation detail…?
WMD Group Meeting, February 2016 | Slide 16
Wannier90 vs “fake self-consistency”
• The main issue with the “fake SCF” method is that the eigenvalues at the zero-weight k-
points still need to be explicitly calculated, which increases the calculation time
Calculation SCF time [s]
8x8x8 Γ-centred mesh 1063.904
+ 40 zero-weight k-points 2511.258
10x10x10 Γ-centred mesh 3349.650
Using Wannier90 is much cheaper - if you
have computing time to burn, use a larger k-
point sampling mesh and/or more bands
instead!
WMD Group Meeting, February 2016 | Slide 17
Wannier90 vs “fake self-consistency”
• The Wannier-interpolated eigenvalues converge exponentially to the exact ones as a
function of the size of the uniform k-point sampling mesh
Figures from: http://www.tcm.phy.cam.ac.uk/~jry20/esdg2.pdf
WMD Group Meeting, February 2016 | Slide 18
Tutorial: Some other post processing
• Plot the MLWFs for visualisation
1. Re-run VASP (restart from WAVECAR) with LWRITE_UNK = .TRUE. in the INCAR
file; this writes the cell-periodic part of the wavefunctions at each k-point, which
are needed by Wannier90 for plotting
2. Run Wannier90 to generate the MLWFs, then restart with the following post-
processing tags:
Images from: http://www.tcm.phy.cam.ac.uk/~jry20/esdg2.pdf
wannier_plot = true
wannier_plot_supercell = 2
wannier_plot_format = xcrysden
Technically, the Wannier functions exist in a
supercell compatible with the k-point mesh
used to generate them
WMD Group Meeting, February 2016 | Slide 19
Tutorial: Some other post processing
• Calculate and plot the Fermi surface (when EF cuts across bands):
o Restart Wannier90 with the following post-processing tags:
restart = plot
fermi_energy = 5.465085
fermi_surface_plot = true
Images from: http://www.tcm.phy.cam.ac.uk/~jry20/esdg2.pdf
Get from OUTCAR
• To output the coordinates of the Wannier centres:
o Just add write_xyz = true to the input file
o Can also add translate_home_cell = true to translate centres to the first unit
cell
WMD Group Meeting, February 2016 | Slide 20
Tutorial: Some other post processing
16
Wannier centres, written by Wannier90 on14Feb2016 at 13:33:04
X 4.73106304 3.08479106 3.22307628
X 0.58670091 2.37932699 1.81687824
X 1.84763232 2.03487825 1.28324033
X 3.35644008 4.04048840 4.09626106
X 2.24955146 2.58038861 4.71003077
X 1.29288053 3.20634223 3.14141564
X 2.49404870 0.75778886 3.04055439
X 3.16416139 2.89011223 0.91641396
...
Si 0.00000000 0.00000000 0.00000000
Si 1.35775000 1.35775000 1.35775000
WMD Group Meeting, February 2016 | Slide 21
Summary (and a caveat)
• Wannier90 is easy to use with VASP (when you know how!), and is a great post-
processing tool
• Particularly good for band structures
o The “correct” way to do hybrid band structures
o The only way to do GW band structures
o Recalculating band structures (e.g. with different k-point paths) is trivial once the
initial calculation has been done
• Potentially useful for a lot of other things (e.g. visualisation, calculating effective masses)
• Unfortunately, the VASP/Wannier90 interface does not yet support spin-orbit coupling -
newer versions of Wannier90 support SoC, but the VASP interface needs to be updated
to pass it the necessary information
WMD Group Meeting, February 2016 | Slide 22
Some useful links
• Covering the mathematics in detail (again):
• http://journals.aps.org/rmp/abstract/10.1103/RevModPhys.84.1419
• http://cfm.ehu.es/ivo/publications/marzari-psik03.pdf
• http://www.tcm.phy.cam.ac.uk/~jry20/esdg2.pdf
• Wannier90 manual: http://www.wannier.org/doc/user_guide.pdf
• VASP manual page on the LWANNIER90 tag and Si band structure tutorials:
o http://cms.mpi.univie.ac.at/wiki/index.php/Si_bandstructure
o http://cms.mpi.univie.ac.at/wiki/index.php/Bandstructure_of_Si_in_GW_(VASP2W
ANNIER90)
• Tutorial (explains the features; easily adaptable): http://wannier.org/doc/tutorial.pdf

More Related Content

VASP And Wannier90: A Quick Tutorial

  • 1. VASP And Wannier90: A Quick Tutorial J. M. Skelton WMD Group Meeting 15th February 2016
  • 2. WMD Group Meeting, February 2016 | Slide 2 Wannier functions in two slides (simplified!) • Wannier functions (WFs) are essentially an alternative basis for expanding the electronic states in periodic solids • They are related to the more usual Bloch orbitals 𝛹 𝑛𝐤 by a unitary transformation: 𝛹 𝑛𝐤 𝐫 = 𝑒 𝑖𝐤.𝐫 𝑒 𝑖𝜑 𝑛(𝐤) 𝑢 𝑛(𝐫) 𝑤 𝐑𝑛 𝐫 = 𝑉 (2𝜋)3 𝐤 𝛹 𝑛𝐤 𝐫 𝑒−𝑖𝐤.𝐑 𝑒 𝑖𝜑 𝑛(𝐤) Arbitrary phase factor 𝑒 𝑖𝜑 𝑛(𝐤) not assigned by the Schrödinger equation • The arbitrariness of 𝑒 𝑖𝜑 𝑛(𝐤) propagates to the WFs, but we can exploit this freedom to choose WFs which have the smallest “spread”, i.e. “maximally locallised” WFs (MLWFs), which are the easiest to understand “chemically” http://cfm.ehu.es/ivo/publications/marzari-psik03.pdf
  • 3. WMD Group Meeting, February 2016 | Slide 3 Wannier functions in two slides (simplified!) • The most general form of the WF <-> Bloch orbital transformation must take into account the fact that Bloch orbitals may be degenerate at some k-points: • The procedure for this is called “disentanglement” • A few good links covering the mathematics in more detail: • http://journals.aps.org/rmp/abstract/10.1103/RevModPhys.84.1419 • http://cfm.ehu.es/ivo/publications/marzari-psik03.pdf • http://www.tcm.phy.cam.ac.uk/~jry20/esdg2.pdf 𝛹 𝑛𝐤 𝐫 → 𝑛 𝑈 𝑚𝑛 (𝐤) 𝛹 𝐦𝐤 𝐫 𝑤 𝐑𝑛 𝐫 = 𝑉 (2𝜋)3 𝐤 𝑛 𝑈 𝑚𝑛 (𝐤) 𝛹 𝐦𝐤 𝐫 𝑒−𝑖𝐤.𝐑 𝑒 𝑖𝜑 𝑛(𝐤)
  • 4. WMD Group Meeting, February 2016 | Slide 4 Wannier functions Images from: https://en.wikipedia.org/wiki/Wannier_function
  • 5. WMD Group Meeting, February 2016 | Slide 5 Wannier functions: Why? • MLWFs are the solid-state equivalent of molecular orbitals -> can be used to perform analyses which are difficult with Bloch orbitals: o More intuitive visualisation of orbitals o In an insulator, the charge centre of a MLWF provides a kind of classical definition for the location of an electron (pair) -> good for e.g. bonding analyses o The vector sum of the Wannier centres is directly related to the macroscopic polarisation • Easy to obtain Bloch orbitals (and eigenvalues) at arbitrary k-points -> allows band dispersions to be computed from uniform k-point grids (“Wannier interpolation”) o Potentially very useful for calculating effective masses http://cfm.ehu.es/ivo/publications/marzari-psik03.pdf
  • 6. WMD Group Meeting, February 2016 | Slide 6 Building VASP with Wannier90 support • Download Wannier90 1.2 from http://www.wannier.org/download.html [N.B. the interface from VASP 5.4.1 does not use the latest version] • For more recent Intel compilers, copy config/make.sys.ifort to make.sys and edit as follows: LIBDIR = /opt/intel/mkl721/lib/32 LIBS = -L$(LIBDIR) -lmkl_lapack -lmkl_ia32 -lguide -lpthread LIBDIR = ${MKLROOT}/lib/intel64 LIBS = -L$(LIBDIR) -mkl -lpthread • Build the executable and library, run the tests, and check the report: make wannier lib test
  • 7. WMD Group Meeting, February 2016 | Slide 7 Building VASP with Wannier90 support • For VASP 5.4.1 and the Intel compilers, edit makefile.include as follows: CPP_OPTIONS = ... ... LLIBS = $(SCALAPACK) $(LAPACK) $(BLAS) CPP_OPTIONS = -DVASP2WANNIER90 ... ... LLIBS = install_path/libwannier.a $(SCALAPACK) $(LAPACK) $(BLAS) • Recompile VASP: make veryclean ; make gam std ncl • N.B. The build was done from a copy of the source with all the latest patches applied - if you run into any strange build errors, try applying these to see if it fixes it http://cms.mpi.univie.ac.at/wiki/index.php/LWANNIER90
  • 8. WMD Group Meeting, February 2016 | Slide 8 Tutorial: HSE 06 band structure ALGO = All EDIFF = 1.0e-8 ENCUT = 500 ISIF = 2 ISMEAR = -5 KPAR = 2 NPAR = 1 LCHARG = .FALSE. LREAL = .FALSE. NBANDS = 16 NEDOS = 2000 PREC = Accurate SYSTEM = Si LHFCALC = .TRUE. HFSCREEN = 0.2 ALGO = All EDIFF = 1.0e-8 ENCUT = 500 ISIF = 2 ISMEAR = -5 KPAR = 2 !NPAR = 1 LCHARG = .FALSE. LREAL = .FALSE. NBANDS = 16 NEDOS = 2000 PREC = Accurate SYSTEM = Si LHFCALC = .TRUE. HFSCREEN = 0.2 LWANNIER90 = .TRUE. • First step: • Second step (restart from WAVECAR): Appears to crash when LWANNIER90 is set and NPAR != N Switch on the Wannier90 interface Two-step job safer because typos in a wannier90.win file cause VASP to crash before writing out the WAVECAR; also, have to use NPAR = N with LWANNIER90 set
  • 9. WMD Group Meeting, February 2016 | Slide 9 Tutorial: HSE 06 band structure • Wannier90 takes an input file seedname.win with control tags, plus a set of other input files containing information about the Bloch states • The VASP interface uses a seedname of wannier90; VASP will look for wannier90.win, and create/update it if required • Add the blocks in blue to the skeleton input file; these instruct VASP/Wannier90 to use a random initial guess for the MLWFs, and to use them to guide the “Wannierisation” • The remaining blocks are added by VASP if they are not already there Begin Projections Random End Projections guiding_centres = true num_wann = 16 begin unit_cell_cart 2.7155 2.7155 0.000 ... end unit_cell_cart begin atoms_cart Si 0.000 0.000 0.000 ... end atoms_cart mp_grid = 8 8 8 begin kpoints ... end kpoints
  • 10. WMD Group Meeting, February 2016 | Slide 10 Tutorial: HSE 06 band structure • After the initial “Wannierisation”, Wannier90 can perform various post-processing - e.g. to compute a band structure: restart = plot bands_plot = true begin kpoint_path L 0.50000 0.50000 0.50000 G 0.00000 0.00000 0.00000 G 0.00000 0.00000 0.00000 X 0.50000 0.00000 0.50000 X 0.50000 0.00000 0.50000 W 0.50000 0.25000 0.75000 W 0.50000 0.25000 0.75000 G 0.00000 0.00000 0.00000 end kpoint_path bands_num_points 50 bands_plot_format gnuplot xmgrace This sets the number of segments along the first path If not specified, gnuplot is the default Each line specifies a segment of the band structure http://www.wannier.org/doc/user_guide.pdf
  • 11. WMD Group Meeting, February 2016 | Slide 11 Tutorial: HSE 06 band structure 1. Run VASP with LWANNIER90 = .TRUE. and your skeleton input file in the working directory 2. Run: wannier90.x wannier90 to minimise the MLWFs; the solutions are written to wannier90.chk 3. Add the band-structure (or other post- processing) commands and rerun wannier90.x 4. Raw data are written to wannier90_band.dat/wannier90_kpt.dat; scripts to plot using gnuplot/grace are also produced depending on bands_plot_format
  • 12. WMD Group Meeting, February 2016 | Slide 12 Wannier90 vs “fake self-consistency” • The alternative technique for computing hybrid band structures in VASP is to introduce zero-weight k-points into the KPOINTS file • The eigenvalues at these k-points are converged iteratively, but do not contribute to the total energy, and so are not part of the break criteria for the SCF loop For hybrid functionals and Hartree-Fock, the band structure can be calculated by adding additional k-points with zero weight to the KPOINTS file. This is easily achieved, by performing first a standard hybrid functional calculation with a conventional KPOINTS file. After the run, copy the IBZKPT file to the KPOINTS file (this file stores explictly the list of k-points used in the previous calculation), and simply add the desired additional k-points with zero weight. Since VASP uses an iterative matrix diagonalization and since the added k-points do not influence the energy, one needs to force VASP to perform at least 5 iterations before inspecting the one- electron energies at k-points with zero weight (NELMIN = 5). http://cms.mpi.univie.ac.at/vasp/vasp/Accurate_DOS_Band_structure_calculations.html
  • 13. WMD Group Meeting, February 2016 | Slide 13 • How many iterative steps (NELMIN) are needed to converge the eigenvalues at the zero- weight k-points? We can check by comparing the “mesh” and “band” Γ-point eigenvalues… Wannier90 vs “fake self-consistency” k-point 1 : 0.0000 0.0000 0.0000 band No. band energies occupation 1 -7.8357 2.00000 2 5.4647 2.00000 3 5.4647 2.00000 4 5.4647 2.00000 5 8.8034 0.00000 6 8.8034 0.00000 7 8.8034 0.00000 8 9.7959 0.00000 9 14.2683 0.00000 10 14.2683 0.00000 11 14.2739 0.00000 12 17.8122 0.00000 13 17.8122 0.00000 14 17.8122 0.00000 15 21.7603 0.00000 16 30.2363 0.00000 k-point 39 : 0.0000 0.0000 0.0000 band No. band energies occupation 1 -7.2102 0.00000 2 7.0956 0.00000 3 7.4845 0.00000 4 9.1114 0.00000 5 8.8483 0.00000 6 12.7657 0.00000 7 11.5932 0.00000 8 8.3881 0.00000 9 11.7581 0.00000 10 25.6173 0.00000 11 16.9587 0.00000 12 22.9149 0.00000 13 29.8875 0.00000 14 27.4218 0.00000 15 27.8106 0.00000 16 35.8819 0.00000
  • 14. WMD Group Meeting, February 2016 | Slide 14 Wannier90 vs “fake self-consistency” k-point 1 : 0.0000 0.0000 0.0000 band No. band energies occupation 1 -7.8357 2.00000 2 5.4647 2.00000 3 5.4647 2.00000 4 5.4647 2.00000 5 8.8034 0.00000 6 8.8034 0.00000 k-point 39 : 0.0000 0.0000 0.0000 band No. band energies occupation 1 -7.2102 0.00000 2 7.0956 0.00000 3 7.4845 0.00000 4 9.1114 0.00000 5 8.8483 0.00000 6 12.7657 0.00000 k-point 1 : 0.0000 0.0000 0.0000 band No. band energies occupation 1 -7.8357 2.00000 2 5.4647 2.00000 3 5.4647 2.00000 4 5.4647 2.00000 5 8.8034 0.00000 6 8.8034 0.00000 k-point 39 : 0.0000 0.0000 0.0000 band No. band energies occupation 1 -7.5815 0.00000 2 6.7979 0.00000 3 7.3720 0.00000 4 7.7883 0.00000 5 8.7538 0.00000 6 10.9143 0.00000 • Restart from WAVECAR w/ NELMIN = 5 • Restart from WAVECAR w/ NELMIN = 10
  • 15. WMD Group Meeting, February 2016 | Slide 15 Wannier90 vs “fake self-consistency” • In practice, the best solution is to run a “clean” SCF (i.e. restart from fresh, or from a standard DFT WAVECAR) with the zero-weight k-points present… • This is how it’s done in the Si tutorial on the VASP Wiki k-point 1 : 0.0000 0.0000 0.0000 band No. band energies occupation 1 -7.8357 2.00000 2 5.4647 2.00000 3 5.4647 2.00000 4 5.4647 2.00000 5 8.8034 0.00000 6 8.8034 0.00000 7 8.8034 0.00000 8 9.7959 0.00000 9 14.2683 0.00000 10 14.2683 0.00000 11 14.2739 0.00000 12 17.8122 0.00000 k-point 39 : 0.0000 0.0000 0.0000 band No. band energies occupation 1 -7.8219 0.00000 2 5.4785 0.00000 3 5.4785 0.00000 4 5.4788 0.00000 5 8.8034 0.00000 6 8.8034 0.00000 7 8.8050 0.00000 8 9.7953 0.00000 9 14.2742 0.00000 10 14.2705 0.00000 11 14.2706 0.00000 12 17.8126 0.00000 • The “clean” SCF does 10 steps in this particular case (i.e. the same as NELMIN = 10), but gives much better convergence - presumably an implementation detail…?
  • 16. WMD Group Meeting, February 2016 | Slide 16 Wannier90 vs “fake self-consistency” • The main issue with the “fake SCF” method is that the eigenvalues at the zero-weight k- points still need to be explicitly calculated, which increases the calculation time Calculation SCF time [s] 8x8x8 Γ-centred mesh 1063.904 + 40 zero-weight k-points 2511.258 10x10x10 Γ-centred mesh 3349.650 Using Wannier90 is much cheaper - if you have computing time to burn, use a larger k- point sampling mesh and/or more bands instead!
  • 17. WMD Group Meeting, February 2016 | Slide 17 Wannier90 vs “fake self-consistency” • The Wannier-interpolated eigenvalues converge exponentially to the exact ones as a function of the size of the uniform k-point sampling mesh Figures from: http://www.tcm.phy.cam.ac.uk/~jry20/esdg2.pdf
  • 18. WMD Group Meeting, February 2016 | Slide 18 Tutorial: Some other post processing • Plot the MLWFs for visualisation 1. Re-run VASP (restart from WAVECAR) with LWRITE_UNK = .TRUE. in the INCAR file; this writes the cell-periodic part of the wavefunctions at each k-point, which are needed by Wannier90 for plotting 2. Run Wannier90 to generate the MLWFs, then restart with the following post- processing tags: Images from: http://www.tcm.phy.cam.ac.uk/~jry20/esdg2.pdf wannier_plot = true wannier_plot_supercell = 2 wannier_plot_format = xcrysden Technically, the Wannier functions exist in a supercell compatible with the k-point mesh used to generate them
  • 19. WMD Group Meeting, February 2016 | Slide 19 Tutorial: Some other post processing • Calculate and plot the Fermi surface (when EF cuts across bands): o Restart Wannier90 with the following post-processing tags: restart = plot fermi_energy = 5.465085 fermi_surface_plot = true Images from: http://www.tcm.phy.cam.ac.uk/~jry20/esdg2.pdf Get from OUTCAR
  • 20. • To output the coordinates of the Wannier centres: o Just add write_xyz = true to the input file o Can also add translate_home_cell = true to translate centres to the first unit cell WMD Group Meeting, February 2016 | Slide 20 Tutorial: Some other post processing 16 Wannier centres, written by Wannier90 on14Feb2016 at 13:33:04 X 4.73106304 3.08479106 3.22307628 X 0.58670091 2.37932699 1.81687824 X 1.84763232 2.03487825 1.28324033 X 3.35644008 4.04048840 4.09626106 X 2.24955146 2.58038861 4.71003077 X 1.29288053 3.20634223 3.14141564 X 2.49404870 0.75778886 3.04055439 X 3.16416139 2.89011223 0.91641396 ... Si 0.00000000 0.00000000 0.00000000 Si 1.35775000 1.35775000 1.35775000
  • 21. WMD Group Meeting, February 2016 | Slide 21 Summary (and a caveat) • Wannier90 is easy to use with VASP (when you know how!), and is a great post- processing tool • Particularly good for band structures o The “correct” way to do hybrid band structures o The only way to do GW band structures o Recalculating band structures (e.g. with different k-point paths) is trivial once the initial calculation has been done • Potentially useful for a lot of other things (e.g. visualisation, calculating effective masses) • Unfortunately, the VASP/Wannier90 interface does not yet support spin-orbit coupling - newer versions of Wannier90 support SoC, but the VASP interface needs to be updated to pass it the necessary information
  • 22. WMD Group Meeting, February 2016 | Slide 22 Some useful links • Covering the mathematics in detail (again): • http://journals.aps.org/rmp/abstract/10.1103/RevModPhys.84.1419 • http://cfm.ehu.es/ivo/publications/marzari-psik03.pdf • http://www.tcm.phy.cam.ac.uk/~jry20/esdg2.pdf • Wannier90 manual: http://www.wannier.org/doc/user_guide.pdf • VASP manual page on the LWANNIER90 tag and Si band structure tutorials: o http://cms.mpi.univie.ac.at/wiki/index.php/Si_bandstructure o http://cms.mpi.univie.ac.at/wiki/index.php/Bandstructure_of_Si_in_GW_(VASP2W ANNIER90) • Tutorial (explains the features; easily adaptable): http://wannier.org/doc/tutorial.pdf