Exercises 19 Tot
Exercises 19 Tot
Exercises 19 Tot
Linux laptop: open a terminal and connect to your compute node using:
ssh -Y [email protected] (XXX and YY was given during
registration)
Windows: x2go (start new session and put:
Server: Host: psiYY.theochem.tuwien.ac.at
Server: Login: wienXXX # (XXX and YY was given during registration)
Session: XFCE
start w2web on port 66YY and a firefox browser using:
w2web (where YY corresponds to your psiYY hostname)
the first time you have to enter user-id/pw (use the same as for your
login) and also the port 66YY (for all other questions hit „enter“)
connect firefox to http:psiYY:66YY
If you later need to kill (and restart) w2web (because of X-display), use:
kill_w2web (; w2web)
Exercises:
In the following you find some suggestions for exercises, which teach you
various tasks one may perform with WIEN2k. Each exercise has a small
query at the beginning and you should be able to answer them afterwards.
New WIEN2k users should start with the first basic exercises (1-6),
covering: structure generation, initialization, scf-cycle, bandstructure, DOS,
electron density, structure optimization, supercell generation, surfaces,
parallelization, spin polarization
Later on, choose examples of your interest as there are probably more
exercises than you can do here.
Please note, that often “calculational parameters” are set to “minimal cpu-
time” instead of “fully converged calculations”.
Do not use such small values for final results and publications without
convergence checks !!
1
8/12/2019
Content
1) Basic tasks with w2web
2) Volume optimization
3) Optimization of free atomic positions
4) commandline interface, supercells, surfaces
5) parallelization
6) ferromagnetism
7) antiferromagnetism
8) mBJ and hybrid-DFT
9) Xspec (XANES)
10) DFT+U
11) optical properties
12) valence photoelectron spectra
13) phonons
14) atoms-in-molecules
15) Hyperfine interactions (EFG, NMR)
16) wannier functions, Berry charges, topology, fold2Bloch
Questions:
How many iterations did you need for scf ?
Which states dominate at: -15 eV: -8 to -2.5 eV: -2.5 to EF:
EF to 2.5 eV: 2.5 to 6 eV:
2
8/12/2019
TiN continued .
utilities: analyse
(:ENE, :DIS, :CTO), graphically
3
8/12/2019
TiN continued …
electron density (use xcrysden to select the (100) plane), view it in xcrysden and rhoplot to
“understand contour and 3D-plots”)
valence density (without semicore: check TiN.scf1 to find a EMIN which truncates the Ti-
3s,3p states, rerun x lapw2 with this EMIN); compare the density around Ti with TiC (UG)
difference density (observe “charge transfer” and “t2g-anisotropy” around Ti)
densities of the “N-p” and “occupied Ti-d-band” (get the corresponding E-
intervals from DOS-plots (in Ry!) and use these energies in the “x lapw2” step; observe the eg
and t2g asymmetry around Ti and the different N-p “weights”, explain the chemical bonding
TiN continued
bandstructure (along L-Gamma-X-W-K-Gamma with “character
plotting”)
use xcrysden (100 points, save as „TiN.klist_band“)
identify “t2g-” and “eg-” bands (fat band plots) by setting atom/column in
TiN.insp
4
8/12/2019
TiN continued …
Fermi surfaces
open a terminal, change into the TiN directory and issue:
xcrysden --wien_fermisurface .
choose a good k-mesh (eg. 10000 points);
plot the FS for all bands (9, 10,11) which cross EF and compare to band structure
Depending on your elements, RMTs, bandstructure (metals) and required accuracy fully
converged results may require Rkmax ~ 9-10 , 10000 k and 10 volumes with V=1%.
Different properties may require different parameters.
Different types of atoms, insulator/metal and system size may need different parameters:
H: RKmax > 2.5; sp-elements: RKmax > 5; d-elements: RKmax > 6; f-elements: RKmax >
7; (see our faq-page)
1 atom/cell, metal: 1000-10000 k-points or more
5
8/12/2019
exp.
6
8/12/2019
questions:
why did we use Rkmax=3.0 and only 100 k-points ?
7
8/12/2019
Mg(OH)2 continue
questions:
MgO 2x2x2 F cell: how many non-equivalent atoms do you have in
super_super.struct and the final super.struct ?
What has nn/sgroup done ?
MgO (001) surface:
What has sgroup done ??
How many total ( / ) and non-equivalent ( / ) atoms and how many
atoms/layer ( / ) do you have before/after sgroup ?
Do you have inversion symmetry ?
check the forces of unrelaxed scf-file. Which atoms will relax in which direction (into
or out of the surface) ?
How much have the surface and sub-surface atoms finally relaxed ?
8
8/12/2019
16-atom supercell
x supercell (use super.struct, select 2x2x2 and F-cell):
cp super_super.struct super.struct
edit super.struct and mark first Mg atom as “Mg1”
x nn and if :WARNINGs appear do the next line:
cp super.struct_nn super.struct; and repeat the “x nn“ step above
x sgroup and view super.outputsgroup (no errors, but gives you a spacegroup)
view the structure with xcrysden. (xcd super.struct) .Now you would be ready to run init_lapw -b
…., but we just save it using cp super.struct super_16.struct
32, 64 and 128-atom supercells (as above, but with B, P cell or 4x4x4-F)
cp init.struct super.struct
x supercell (use super.struct, …):
cp super_super.struct super.struct
edit super.struct and mark first Mg atom as “Mg1”
x nn and if :WARNINGs appear do the next line:
cp super.struct_nn super.struct; and repeat the “x nn“ step above
x sgroup and view super.outputsgroup (no errors, but gives you a spacegroup)
how many non-equivalent atoms do you have now ? view the structure with xcrysden. Now you would
be ready to run init_lapw -b …., (see eg. lecture on XANES spectroscopy)
save the structures using cp super.struct super_32.struct
9
8/12/2019
This structure could also serve as base for a bigger supercell (for instance
2x2x1) to simulate reduced “coverage”.
10
8/12/2019
Exercise 5: Parallelization
These tests should be done in the 001-directory (MgO-001 surface). We use this larger
example to test the different ways parallelism is realized in WIEN2k. In order to get longer run
times and see the parallelization effect more clearly, increase Rkmax in 001.in1 to 9.5
OMP parallelism (shared memory only):
Is used automatically, if the environment variable OMP_NUM_THREADS is set (2 in our
setup). You can change it with:
setenv OMP_NUM_THREADS X or
edit .machines and insert lines like: omp_global:X (omp_lapw0/1/2:X)
Run x lapw0, x lapw1, and x lapw2 with different number of threads and fill out the
table below.
In a second terminal keep a top command running to keep track of the peak CPU usage!
(timing may change if machines are overloaded by another user ! Note that psi31-39 have
only 6 physical cores ! psi11-psi24 have 8 cores.)
11
8/12/2019
Exercise 5: Parallelization
k-point parallelism: (works also on a cluster of PCs with shared filesystem)
needs a .machines file (we have 3 k-points, so only 3 parallel jobs make sense)
1:localhost
1:localhost
1:localhost
omp_global:1 # or 2
Calculations are started with x lapw1/2 (–p )
Run lapw1 and lapw2 serial or in parallel with omp_global 1 and 2, fill out the table
below and compare the times.
Exercise 5: Parallelization
MPI parallelism (distributed matrices, useful for VERY large problems (NMAT > 10000) and
a large computer cluster with infiniband network (up to several 100 cores))
needs a .machines file, e.g.:
lapw0: localhost:4 (runs lapw0 MPI parallely on 4 cores)
1: localhost:4 (runs lapw1 – and subsequently lapw2 – on 4 cores)
Calculations are started with x lapw0/1/2 –p (with OMP_NUM_THREADS 1).
Also try to change the grid shape in 001.in1 (pxq or qxp keyword in the 2nd line. If you
want, you can also compare ELPA and ScaLAPACK for lapw1 (two different libraries for
solving linear algebra problems in parallel).
# cores 1 2 4 4 (SCALA) 8 (pxq) 8 (qxp)
Program time (s) time (s) time (s) time(s) time (s) time (s)
lapw2
Hybrid forms
All three types of parallelism can be combined easily (just have a .machines file with k- or
MPI parallelism and omp_global:XX). However, any potential gain in compute time
strongly depends on problem size and the given hardware (cores, network, memory,
load). One can easily have longer runtime with higher parallelization !!!
12
8/12/2019
questions:
Why do we use Rkmax=8
What is the theoretical lattice parameter:
What is the Fe moment in PBE at the experimental and theoretical volume:
How do the moments and band width change with volume
Volume -6 -3 0 3 6
MMT
(eV)
H-H (eV)
compare bandstructure and DOS for large/small volumes (use restore_lapw for desired volume; adjust
EF in case.insp)
V=-6% V=+6%
13
8/12/2019
Questions:
is FM or AFM Cr more stable? (:ENE)
14
8/12/2019
Question:
How many scf-iterations did you need for PBE, mBJ and hybrid-DFT
changing of gap
from PBE to mBJ
(exp: 7.8 eV)
PBE mBJ
15
8/12/2019
Exercise 8: continued …
Perform a hybrid-DFT calculation using YS-PBE0
create a new case, perform a PBE calculation and save the results.
the setup for hybrid-calculations can be made in w2web
(Utils/init_hf_lapw), or in a terminal-window using „init_hf_lapw“.
(More details are given in the UG 4.5.8)
Select NBAND=12 (case.inhf)
and a 4x4x4 / 4x4x4 k-point mesh (no reduction)
scf cycle with -hf -p (insert 2 lines with 1:localhost into .machines)
we do this in k-parallel since hybrids are expensive, alternatively we could also
use a „reduced“ hf-k-mesh, see UG
monitor the change of the :GAP (only every 2nd value is from HF !), use
„scfmonitor :gap“ on the command line.
Questions:
compare core-hole and no-core-hole calculations with experiment (see lecture notes)
16
8/12/2019
Questions:
compare DOS (total, Ni1, Ni2, O) for all calculations
compare gaps (exp: 4eV),spin and orbital moments, occupied Ni-d band position
17
8/12/2019
18
8/12/2019
GGA+U calculation
x orb; x lapwdm -up # generate default input files
edit NiO.inorb; edit NiO.indm #actually, the defaults are ok for NiO
use U=7eV, J=0; search the UG to understand case.inorb/indm
runsp_lapw -orb #scf-calc. with PBE+U
save_lapw NiO_pbe+u
calculate and save the DOS as above ….
GGA+SO calculations (M=[111], without relativistic LO, Emax=5.0)
initso_lapw
select M=[111], no relativistic LO, Emax=5.0, spin-polarization and accept
the new struct file.
runsp -so -orb
x lapwdm -up -so # for orbital moment :orb001 in NiO.scfdmup
save_lapw NiO_pbe+u+so
calculate and save DOS
19
8/12/2019
NiO cont…
GGA+U
Ni-up
Ni-dn
Question:
How many k-points do you need to converge optics for Al:
What is the plasma frequency in Al ?
20
8/12/2019
x optic, x joint, x kram # this creates default inputs. Edit them for your needs
x optic, x joint, x kram
opticplot
absorption
DOS
21
8/12/2019
PS: The cross section of Pb-5d is a bit overestimated, since the Pb-d states close to EF
have already 6d character (smaller cross section)
22
8/12/2019
Questions:
Why are there imaginary frequencies at M and R ?? What does it mean ??
23
8/12/2019
Phonons continued
phonopy --wien2k -f 1.scf 2.scf 3.scf
create band.conf with editor, containing the following information:
ATOM_NAME = Sr Ti O
DIM = 2 2 2
PRIMITIVE_AXIS = 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0
BAND = 0 0 0 1/2 1/2 0 0 1/2 0 1/2 1/2 1/2 0 0 0
BAND_LABELS = G M X R G
BAND_CONNECTION = .TRUE.
phonopy --wien2k -c SrTiO3.struct band.conf –p
save with: phonopy --wien2k -c SrTiO3.struct band.conf –p –s #(band.pdf)
your result should be like:
Questions:
How many different bond- ring- and cage - critical points do we have
in TiN and TiC?
What are the Ti (N,C) Bader charges and atomic volumes in TiN and TiC using aim and
critic2 /100/200/300)?
24
8/12/2019
repeat this in TiC (restore the best calculation for vol=0.0 first
!)
25
8/12/2019
* These calc. will take some time, continue next page while run/x_nmr is running
26
8/12/2019
NMR continued ..
mkdir spin; cp BaGa4.struct spin/spin.struct; cp .machines spin; cd spin
instgen_lapw –nm; init_lapw –b –sp –numk 10000 –fermit 0.004
runsp_c_lapw –p; save non-magnetic
cp $WIENROOT/SRC_templates/case.vorbup_100T spin.vorbup (and for dn)
runsp_lapw –p –orbc –cc 0.000005; save_lapw rkm7_10k_4mry
grepline :hff002/3 ´rkm*scf´ 3 c=HFF*1000 (for a 100T field)
compare with experiment: (F.Haarmann et al. Chem. Eur. J. 2011, 17, 7560 – 7568)
cp $WIENROOT/SRC_templates/case.indm spin.indm;
edit *indm: set for atom 2 and 3, three ℓ values, ℓ=1,2,3; and 3 5 in last line
x lapwdm –p –up/dn; cat *scfdmup/dn; sd=(totup-totdn)*10000
Estimate ref(th) to obtain “best” agreement with exp. (usually one would either calculate the
reference compound or do several Ga compounds)
In metals the results are very sensitive to k-mesh and smearing and careful convergence are
necessary (up to 1 000 000 k-points).
27
GaAs -- MLWF
W IEN 2WANNIER 1.0 User’s Guide
From linearized augmented plane waves to maximally localized Wannier functions.
+ +
Special thanks to Elias Assmann (TU Graz)
for the generous help in
preparation of this tutorial
⇧ ⇧ ⇧
Emin (Ry) Emax occupancy
2. Construction of Wannier functions
There you can see the position and spread of the WF’s, how they changed in the
course of convergence. WF’s 1-4 are all positioned at the origin (atom 1), WF’s 5-8
are centred at the 2nd atom (please check the coordinates)
3. Post-processing
Plot the band structure
$ gnuplot
gnuplot> plot 'GaAs-WANN.spaghetti_ene' using
($4/0.529189):5, 'GaAs-WANN_band.dat' with lines
+ original Wien2k
band structure
- Band structure
computed from
Wannier functions
Plotting WF’s (can take a while). Get the template of an input file
$ cp $WIENROOT/SRC_templates/case.inwplot
GaAs-WANN.inwplot
Edit “GaAs-WANN.inwplot”
Select origin “-1 -1 -1 1” and axis x, y, z
“ 1 -1 -1 1”
“-1 1 -1 1”
“-1 -1 1 1”
grid point mesh: 30 30 30
“1” for the Wannier function index
Compute the 1st Wannier function on the mesh chosen
$ x wplot -wf 1
If you need to plot any other WF’s (2, 3, etc), just edit the option.
Convert the output of wplot into xcrysden format for plotting.
$ wplot2xsf
Visualize with xcrysden (instructions on the next page)
$ xcrysden --xsf GaAs-WANN_1.xsf
xcrysden Tools > Data Grid > OK
Set “Isovalue:” and check box “render +/- isovalue” (see screenshot on the
previous page)
Play with the settings.You will get a spherical (s-like) WF centred at the
origin.
The second WF resembles a p-orbital (you can get it by editing “GaAs-
WANN.inwplot”, re-run “x wplot” and “wplot2xsf”). The new file
should be called GaAs-WANN_2.xsf
WF #1 WF #2
information S1 S2 X1 Y1 Z1 X2 Y2 Z2
required to build S1
S2
Es ! Ek Vss g1
Vss g1∗
0
Es ! Ek !Vsp g2∗
0
!Vsp g3∗
0
!Vsp g4∗
Vsp g2
0
Vsp g3
0
Vsp g4
0
your ab initio TB X1 0 !Vsp g2 Ep ! E k 0 0 Vxx g1 Vxyg4 Vxyg3
Y1 0 !Vsp g3 0 E p ! Ek 0 Vxyg4 Vxx g1 Vxyg2
sp3 Hamiltonian Z1 0 !Vsp g4 0 0 Ep ! E k Vxyg3 Vxyg2 Vxx g1
(Yu & Cardona) X2
Y2
Vsp g2∗
Vsp g3∗
0
0
Vxx g1∗
Vxyg4∗
Vxyg4∗
Vxx g1∗
Vxyg3∗
Vxyg2∗
Ep ! E k
0
0
Ep ! Ek
0
0
Z2 Vsp g4∗ 0 Vxyg3∗ Vxyg2∗ Vxx g1∗ 0 0 Ep ! Ek
This tutorial was verified using
Wien2k 19.1
Wannier90 2.1.0
python 2.7.14
xcrysden 1.5.60
Born effective charge
of GaN
W IEN 2WANNIER 1.0 User’s Guide
From linearized augmented plane waves to maximally localized Wannier functions.
+ + BerryPI
YouTube video: https://youtu.be/hLl9nKf35tA
Background
e−
Na Cl H H
Z* = +1 Z* = -1 Z* = 0
Mixed
Z*?
Ga N
Instructions
w2web Construct a structure file (../GaN-W/GaN-W.struct)
4-atoms (2-Ga, 2-N) per unit cell
Hexagonal lattice “H”, α = β = 90°, γ = 120°
Cell size (Bohr): a = b = 5.963131; c = 9.722374
Coordinates:
Ga (2/3 1/3 0)
Ga (1/3 2/3 1/2)
N (2/3 1/3 0.376393)
N (1/3 2/3 0.876393)
Since we will introduce a displacement later,
a small (~3%) RMT reduction is needed.
Initialize SCF calculation with LDA, RKMAX=7, 300 k points.
The energy separation between core and valence electrons
should be set at -8 Ry to include Ga-3p as valence electrons (otherwise a core leakage
warning will be printed).
$ init_lapw -b -vxc 5 -ecut -8 -rkmax 7 -numk 300
It is worth to verify the structure with XCrysDen
Perform regular SCF calculation
$ run_lapw
Run Berry phase calculation
$ berrypi -k 8:8:4 | tee log
Note the ionic and electronic phases along Z-axis (wrapped [-π…+π])
Save the calculation
$ save_lapw -d Lambda0
Introduce small displacement on N-atoms
w2web Edit Z-coordinate of N atoms by adding 0.001 to the equilibrium
value of the fractional coordinate uz. Since nitrogen has 2 equivalent
positions, both need to be updated. Think what is the reason for the need
to shift both atoms in this case.
Repeat initialization, SCF and Berry phase calculation steps (note “-a”
option used in order to update the log file, not overwrite)
$ init_lapw -b -vxc 5 -ecut -8 -rkmax 7 -numk 300
$ run_lapw
$ berrypi -k 8:8:4 | tee -a log
option “-a” will append output to the file instead of overriding it
Evaluate the total Berry phase for each of two calculations performed
φ = φel + φion
For the electronic phase use “Berry phase (rad) [-pi … +pi] spin up+dn” value. For the
ionic phase use “Total ionic phase wrap. (rad)” value.
Evaluate the phase change
∆φ = φ(perturbed)−φ(unperturbed)
It should be about -0.034 rad. Compute the effective charge Z* of Nitrogen in GaN using a
Berry phases and the “shortcut” expression
∗ ∆φi
Zii =
2π∆ui
Here Δu is the displacement in fractional coordinates. The equation applies to the case of
one atom displaced. In our case, we need to take into account that 2 N-atoms were shifted.
Compare computed Z* with the literature value of -2.73 [Volume 44D of the series
Landolt-Börnstein - Group III Condensed Matter pp 420-423, “GaN: effective charge,
dielectric constants” by D. Strauch]
This tutorial was verified using
Wien2k 19.1
BerryPI (build Mar 08, 2019)
python 2.7.14
numpy 1.16.0
Spontaneous
polarization BaTiO3
W IEN 2WANNIER 1.0 User’s Guide
From linearized augmented plane waves to maximally localized Wannier functions.
+ + BerryPI
Work flow
w2web Create a new session “BaTiO3ncm” with the working directory “…/BaTiO3/BaTiO3ncm”
w2web Construct a structure file (we begin with
the lowest-symmetry non-centrosymmetric structure first)
4-atoms (Ba, Ti & 2O) per unit cell
Body-centred tetragonal lattice (spacegroup #99 P4mm)
Cell size (Bohr): a = b = 7.547566; c = 7.626934
Angles: α = γ = β = 90°
Coordinates:
Ba (0 0 0)
Ti (1/2 1/2 0.51517436)
O (1/2 1/2 0.97356131)
O (1/2 0 0.48343742)
[You will see 1 additional equivalent atom after you
save the structure O (0 1/2 0.48343742)]
Xcrysden Visualize the structure and compare to the one shown here
w2web Initialize SCF calculation (GGA-PBE) with a small (~3%) RMT reduction, RKMAX=7, and 230 k-
points in the whole BZ.
Perform regular SCF calculation with default convergence parameters (~12 iterations).You are
welcome to specify additional convergence criteria using -ec and -cc flags. It is the user's
responsibility to check the convergence with respect to the quantity of interest (polarization in this
case).
$ run_lapw
Run Berry phase calculation with a 6x6x6 k mesh. Note the “TOTAL POLARIZATION (C/m2)”
along Z.
$ berrypi -k 6:6:6
A typical mistake is to take the calculated polarization as the spontaneous polarization. The
spontaneous polarization is measured with respect to a reference structure, which is a
centrosymmetric structure in this case.
w2web Create another session “BaTiO3cm” with the working directory “…/BaTiO3/BaTiO3cm”
Copy files to the new directory while you are still in “…/BaTiO3/BaTiO3ncm” folder
$ cp * ../BaTiO3cm
Change to the newly created folder
$ cd ../BaTiO3cm
Rename all BaTiO3ncm.* files to BaTiO3cm.* files
$ rename_files BaTiO3ncm BaTiO3cm
w2web Edit the “BaTiO3cm” structure file without changing the symmetry operations (do not change
RMT radii)
Coordinates:
Ba (0 0 0)
Ti (1/2 1/2 1/2)
O1 (1/2 1/2 0)
O2 (1/2 0 1/2)
(0 1/2 1/2)
Restore original k-mesh taking into account the symmetry with 230 k-points (shifted)
$ x kgen
Initialize the electron density for the new structure. (We do not want to fully initialize the
calculation in order to preserve the former symmetry operations.)
$ x dstart
Perform standard SCF calculation
$ run_lapw
Run Berry phase calculation with a 6x6x6 k mesh. Note the “TOTAL POLARIZATION (C/m2)”
along Z.
$ berrypi -k 6:6:6
Spontaneous polarization is obtained by taking a difference in polarization between distorted and
the reference structures, i.e., P(BaTiO3ncm) and P(BaTiO3cm):
Ps = |Pnon-centr. − Pcentr. |
You should get Ps ~ 0.31 C/m2. The experimental value is Ps = 0.26 C/m2 for the tetragonal phase of
BaTiO3 at T ~ 180 K [H. H. Wieder, Phys. Rev. 99, 1161 (1955)].
This tutorial was verified using
Wien2k 19.1
BerryPI (build Mar 08, 2019)
python 2.7.14
numpy 1.16.0
xcrysden 1.5.60
Topological properties
(Chern number) of Weyl
semimetal TaAs
W IEN 2WANNIER 1.0 User’s Guide
From linearized augmented plane waves to maximally localized Wannier functions.
+ + BerryPI
Work flow
w2web Construct a structure file
2-atoms (Ta & As) per unit cell
Body-centred tetragonal lattice (spacegroup #109 I41md)
Cell size (Bohr): a = b = 6.494611; c = 22.004349
Angles: α = γ = β = 90°
Coordinates:
Ta (0 0 3/4)
As (0 0 0.1677)
[You will see 2 additional equivalent atoms after you save the structure
Ta (0 1/2 0) and As (0 1/2 0.4177)]
Initialize SCF calculation (GGA-PBE) with a small (~3%)
RMT reduction, RKMAX=7, and 300 k-points in the whole BZ.
Xcrysden Visualize the structure and compare to the one shown here
Perform regular SCF calculation with energy and change convergence
of 0.0001 and 0.001, respectively (~9 iterations)
$ run_lapw -ec 0.0001 -cc 0.001
Save calculation, then initialize spin-orbit calculation (SOC) using all default parameters, and run SCF-SOC (~6
iterations)
$ save_lapw -d noSOC
$ init_so_lapw
$ run_lapw -ec 0.0001 -cc 0.001 -so
Check the band gap in case.scf file. It should be about 0.087 eV
Xcrysden File > Open WIEN2k > Select k-path for band structure plot that goes through points listed on the
screenshot, ask for 600 points along the path and save the k-point list as “case.klist_band”. It is always good to
check the case.klist_band file and make sure there are no “******” entries resulted from an insufficient format.
Γ
X’
Σ
X
Expected position
of a Weyl point WP1
Recalculate eigenvalues on the k-path selected
$ x lapw1 -band
$ x lapwso
w2web Go to the “Bandstructure” menu and edit the case.insp file:
insert the Fermi energy of 0.801 Ry and set the energy range for plotting at [-1.0, 1.0] eV
Run “spaghetti” with -so option
TaAs atom 0 size 0.20
$ x spaghetti -so
1.0
w2web Plot the band structure.You will notice
the band almost vanish as you approach
Weyl points.
One set of Weyl points (nodes) is located near Σ.
It is difficult to design the k-path such
that it goes exactly through the Weyl point.
It is because Weyl points usually do not
Energy (eV)
coincide with high-symmetry points of BZ
and do not lie on high-symmetry
0.0 EF
directions. (See figure at the end
of this tutorial.) EF
Weyl point Weyl point
-1.0
Γ K.2 K.3
X X
Σ X X’
Next we calculate a Berry phase on a closed Wilson loop. It corresponds to the Berry flux through the loop.
It is an analogy of the fundamental theorem of the curl, where the magnetic flux through a surface may also be
defined as a line integral of the magnetic vector potential taken over the boundary of the surface.
Xcrysden Select k-path that encloses one (!) Weyl point as shown below
with 40 points along the path and save as “TaAs.klist”
Wilson loop
Weyl point
Determine the number of occupied bands in TaAs.scf file (it should be 84)
$ grep :BAN *scf
Run berry phase calculation on the Wilson loop for occupied bands only
(-j is for SOC, -w is for Wilson loop, -b sets the range of bands)
$ berrypi -j -w -b 1:84
The results is: 'Berry phase sum (rad) =', -28.274333908589554
which is exactly -9π and is equivalent to |π| after subtracting an arbitrary number of 2π wrappings. The total
Berry flux associated with the particular Weyl point is then |2π|. (The factor of 2 accounts for the fact that
only half of the Berry flux goes through the loop.) It also corresponds to the Chern number of 1 (= |2π|/2π)
as a topological characteristics. This gives us an indication of a monopole “charge of 1” associated with this
Weyl point.
To expand the exercise, you are encouraged to construct a Wilson
(a) (b)
loop in the same plane as before, but not to include any Weyl points
inside the loop (see the map of all Weil point in TaAs on the right).
The corresponding Berry phase should be 0 (modulo of 2π).
φπ
-0.5
-1
S Σ 1
Z
0.5
φπ
-0.5
-1
0 0
FIG. 2. Nodal rings and Weyl points distribution, as well as Z2 and MCN f
absence of SOC) and Weyl points (with SOC) in the BZ. (b) Side view from [1
rings and Weyl points. Once the SOC is turned on, the nodal rings are gapped
movie in Supplemental Material [36]). (d) Top panel: Flow chart of the average
calculation for bands with mirror eigenvalue i in the mirror plane ZNΓ. (d) Botto
by Wilson-loop calculation for bands in the glide mirror plane ZXΓ. There is
indicating the Z2 index is even.
011029-4
Effective band structure
of Si1-xGex alloy
+ fold2Bloch
YouTube video:
Instructions
w2web Construct a primitive lattice of Si
2-atoms per unit cell
Primitive lattice “P”, α = β = γ = 60°
Cell size (Ang.): a = b = c = 3.870393 Å
Coordinates:
Si (0 0 0)
Si (1/4 1/4 1/4)
RMTs = 2 Bohrs
Do not initialize calculation.
Create a 2x2x2 supercell: no shifts, P-type lattice, no additional vacuum
$ x supercell
Rename “[case]_super.struct”
to “[case].struct”
The new supercell should have
16 Si-atoms (2 atoms x 2 x 2 x 2)
w2web Introduce Ge into the structure by switching 3 Si → 3 Ge atoms
The Ge composition will be 3/16 = 0.1875 (ca. 19%)
One possibility is to pick any 3 Si-atoms of your choice. But this choice
will be “biased” and does not qualify as a random alloy.
Alternatively, we can generate a randomized sequence of integers
between 1 and 16 (total number of Si-atoms) using
https://www.random.org/sequences
“3 2 6 9 13 4 7 16 12 1 5 10 15 14 11 8”
The first 3 numbers are labels of atoms to be switched. Of course every
time you will get a different sequence. Thus the arrangement of atoms is
not unique.
More elegant solution involves the use of “Special Quasirandom
Structures”, but it goes beyond this tutorial.
When substituting Si → Ge using
StructGenTM, make sure to clear up
the Z value and label atoms as
Ge 1, Ge 2, Ge 3, Si 1, Si 2, …
Initialize SCF calculation: LDA, RKmax=6, 3x3x3 k-mesh (shifted)
(note: crude parameters are used for tutorial purposes)
$ init_lapw -b … or web interface
Run SCF calculation (~10 iterations): iterative diagonalization, energy convergence 0.0001,
charge convergence 0.001. It can be faster if you parallelize over k-points and/or take advantage
of OMP-parallelization (~10 mins on 4 cores)
Spectral weight
Energy (eV)
0.000000 0.000000 0.068362]
2.0 0.
reciprocal lattice vectors from
1.0
[case].outputkgen; 0.
0.0
Lunch Octave in GUI mode
−1.0 0.
$ octave
−2.0
octave >> ubs_dots_w2k_octave
L G X
Run plotting script in Octave and view
Wave vector
the effective band structure of the alloy.
Note a well-preserved Bloch character at the top of the valence band and bottom
of the conduction band in spite of the fact that the structure does not have a zinc-
blende symmetry any longer.
When you have time (requires1-2 hrs depending on parallelization and load of
machines)…
It should be noted that so far we ignored static atomic displacements that are
present in alloys due to the size mismatch between the additive element (Ge) and
the host (Si). Forces in our structure are of the order 15 mRy/Bohr that requires
optimization of atomic positions.
The suggested procedure would be to build supercell, place alloying element, and
perform optimization of atomic positions before undertaking infolding. The effective
band structure with static atomic displacements included in calculation is shown
below. Can you spot any changes at the band edges?
1
5.0
4.0
0.8
3.0
Spectral weight
Energy (eV)
2.0 0.6
1.0
0.4
0.0
−1.0 0.2
−2.0
0
L G X 0 0.5 1 1.5 2
Wave vector
This tutorial was verified using
Wien2k 19.1
fold2Bloch (build May 29, 2014)
octave 4.2.1