Table of Contents
Generating energy bands with Questaal codes
You can make energy bands along symmetry lines you specify, using any code with band-generating capability (lmf, lm, tbe, lmgf and lumpy), using the --band switch, in symmetry lines mode. Some information to help you construct symmetry lines for any crystal lattice can be found here.
This tutorial shows how to generate energy bands for silicon using the ASA code lm; but the --band switch applies equally to all codes that make crystal energy bands.
As a second step you must draw the bands. In this tutorial we create a postscript figure using the plbnds utility.
Spectral functions are the analog of energy bands for interacting hamiltonians such as generated by GW or Dynamical Mean Field Theory. See this tutorial to draw the spectral function for Fe from a GW calculation.
This tutorial assumes you have cloned and built the lm repository (located here). For the purposes of demonstration, ~/lm will refer to the location of the cloned repository (source directory). In practice, this directory can be named differently.
All instances of commands assume the starting position is your build directory (this can be checked with the pwd command). In this tutorial it will be called ~/build/.
$ cd ~/build/
with ~/build being the directory the lm repository was built in to.
Note: the build directory should be different from the source directory.
Energy bands are typically plotted along specified symmetry lines, which information you supply through a symmetry-line file. For the purpose of this tutorial, we will use one included in the repository, although generally you will want to create your own. You can obtain the symmetry-line file for silicon, syml.si, by following these commands:
$ cp ../lm/startup/syml.si .
which will copy the symmetry-line file to your current working directory. For drawing bands you want to use the --band switch in the symmetry line mode. The symmetry line mode is the default mode; the code will generate bands along symmetry lines you specify.
syml.si has rows such as:
41 .5 .5 .5 0 0 0 L to Gamma (Lambda) ... 0 0 0 0 0 0 0
Each line of text specifies a line segment in k-space. In the first line of this file the segment runs from to in units of . ‘41’ specifies the number of k points are generated in this segment. At present the remainder of the line is not used. The last line tells the line reader not to read any more lines.
To generate the bands, simply run
$ lm si --band:fn=syml
The –band switch tells lm to generate energy bands, contained in the bands.si file, along the specified k-points (rather than the standard cycle of integration of states over the Brillouin zone)
Once you have this file, it can be plotted with your preferred plotting package. Here, we will give an example using plbnds and fplot:
echo -15 15 5 10 | plbnds -fplot -scl=13.6 -ef=0 si
Which will generate a fplot command file, plot.plnds, which can be run with
fplot -f plot.plbnds
This will give you your desired postscript file fplot.ps.
Colouring Energy Bands
It is also possible to colour your generated energy bands. The idea behind this is to assign a weight to each line, which is can be coloured by the graphics plotting package.
To obtain this, run the –band command with the list of orbitals you want to highlight
E.g. for Arsenic, using lmf (the commands are the same for lm):
$ lmf --band~col=28:47~syml ...
This will read line data from the syml file, and weight orbitals 28 to 47. Of course, you will want to colour specific orbitals, e.g. only the p orbitals. To see how the orbitals are ordered, run the energy band program (lm or lmf) with rather high verbosity (>51) and look for the tables following Makidx. This will detail at what orbital number various bands are located.
Makidx: basis arranged in downfolding order: ib low intermed high .. offH .. 1 spdf (16) (0) g (9) 0 0 0 k2 sd (6) (0) pfg (19) 16 0 9 k3 d (5) (0) (0) 22 0 28 2 spdf (16) (0) g (9) 27 0 28 k2 p (3) (0) sdfg (22) 43 0 37 k3 s (1) (0) (0) 46 0 59 3 spd (9) (0) fg (16) 47 0 59 k2 (0) (0) spdfg (25) 56 0 75 4 spd (9) (0) fg (16) 56 0 100 k2 (0) (0) spdfg (25) 65 0 116 Makidx: hamiltonian dimensions Low, Int, High, Negl: 65 0 141 94 kappa Low Int High L+I L+I+H Neglected 1 50 0 50 50 100 0 2 9 0 91 9 100 0 3 6 0 0 6 6 94 all 65 0 141 65 206 94 Orbital positions in hamiltonian, resolved by l: Site Spec Total By l ... 1 Ga 1:27 1:1(s) 2:4(p) 5:9(d) 10:16(f) 17:17(s) 18:22(d) 23:27(d) 2 As 28:47 28:28(s) 29:31(p) 32:36(d) 37:43(f) 44:46(p) 47:47(s) 3 EA1 48:56 48:48(s) 49:51(p) 52:56(d) 4 EC1 57:65 57:57(s) 58:60(p) 61:65(d)
As you can see, the relevant area is the last table.
Edit This Page