Questaal Home

ASA Partial DOS

This tutorial makes and draws the partial density-of-states in CsPbI3.

Table of Contents


This tutorial builds on the basic ASA/FP tutorial for CsPbI3. To follow it you will need ctrl.asa and site.asa generated there.

This tutorial also assumes you have cloned and built the Questaal repository from bitbucket. It assumes that the executables lmstr, lm, lmdos and pldos are in your path. Otherwise you must prepend each of these commands with the path to your build directory, e.g. your_build_directory/lmstr.


Copy files ctrl.asa and site.asa generated in this tutorial.

Confirm the potential is self-consistent with

lmstr asa
lm -vnit=0 asa
lm asa --quit=rho

You should see that the RMS DQ is small, less than 10−5.

To get a smooth DOS, you need a relatively fine k-mesh. The given setup has a mesh 4 divisions on each axis (see preprocessor variable nkabc and toekn NKABC in the BZ category). Here we use a 12×12×12 mesh.

lmdos, the utility that generates the partial DOS, needs as input weights generate by a band calculation. To make these weights, run lm as follows:

lm asa -vnkabc=12 -vmet=3 '--pdos~mode=1~nl=3~group=1;2;3:5' --quit=rho

--pdos is documented in the command line switches page. In this context

  • mode=1 tells lm to resolve weights by site and (with mode=2 lm will resolve weights by site and and )
  • nl=3 tells lm to keeps weights only for , i.e. spd orbitals.
  • group=1;2;3:5 tells lm to make DOS channels for three groups of sites: site 1 (Pb); site 2 (Cs) and all I sites (3,4,5) are combined into one channel.

stdout should contain this line:

 sumlst:  Partial DOS mode 1 (site list l-projected)  5 sites 9 channels

The five sites are combined into 3×3 channels (three groups, spd channels for each group).

Now run lmdos to make the DOS over an energy window (−1,1) Ry

lmdos asa -vnkabc=12 -vmet=3 '--pdos~mode=1~nl=3~group=1;2;3:5' --quit=rho --dos:npts=501:window=-1,1

lmdos writes a file dos.asa.

You should see the following near the end of stdout

 Channels in dos file generated by LMDOS:
 site class label   spin-1
    1    1   Pb     1:3
    2    2   Cs     4:6
    3    3   I      7:9
    4    3   I      7:9
    5    3   I      7:9

It is a handy table telling you which DOS are associated with which channel. To translate the -resolved DOS into a figure, use the pldos utility

echo 3 3 | pldos -esclxy=13.6 -ef=0 -fplot~open~tmy=1  '-lst=1;2;3;4;5;6;7;8;9' dos.asa

This creates a data file dosp.dat and a script plot.pldos for the fplot utiilty. The arguments to pldos are documented in the pldos manual.

Render a postscript figure as follows:

fplot -f plot.dos

fplot creates a postscript file,, which you can view with your favorite postscript viewer; e.g. gs

Note that the most important contribution to DOS near the Fermi level are the Pb p (second panel) and the I p (penultimate panel).

Note: lmdos will generate a file dos in an easier-to-read format (Questaal’s standard ASCII format for 2D arrays). This makes it easier to use other graphics packages to render figures. Simply append :rdm to --dos:npts=501:window=-1,1.