Generating Energy Bands

Table of Contents

Relation To Other Codes


This tutorial shows how to generate an energy band graph for Silicon using lm. Though, this tutorial can be applied to other materials as long as the general instructions are followed (with special attention paid to the –band flag).

This tutorial will apply to not only lm, but also other tools in the suite, e.g. lmf. The use of the –band flag is the same, as is the plotting procedure. The difference lies in how the various packages themselves are used, refer to package-specific tutorials to get an idea.

Preliminaries


This tutorial assumes you have cloned and built the lm repository (located here). For the purpose 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.

Tutorial


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.

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 k=(1/2,1/2,1/2)k=(1/2,1/2,1/2) to 00 in units of 2π/a (L to Γ)2\pi/a\ (L\ to\ \Gamma). ‘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 preffered 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 ps.dat.

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

--band~col=orbital-list~...

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