Questaal Home
Navigation

ASA calculation for CsPbI3 in cubic and pseudocubic structures


In this tutorial,

  1. The energy band structure of CsPbI3 is computed in both an ideal cubic structure, and also a pseudocubic structure, using the LDA code lmf.
  2. Corresponding calculations are carried out using the ASA code lm, and results compared.
  3. A QSGW calculation is carried out, which modifies the band structure and widens the bandgap.

This tutorial is self-contained. It is required to prepare necessary inputs to the Levenberg-Marquardt tutorial which makes small adjustments to the ASA potential parameters to fit the ASA bands to QSGW bands.

You may wish to go through the introductory tutorial for the ASA, if you haven’t already done so.

Cubic structure
Setup, self-consistency, and energy bands for lmf
blm --brief --nfile --rdsite=site0 --nosort --shorten=no --nk=4 --gw --wsitex@fn=site1 cspbi
cp actrl.cspbi ctrl.fp
cp site1.cspbi site.fp
cp basp.cspbi  basp.fp

lmfa ctrl.fp
lmf ctrl.fp >out.fp
lmchk ctrl.fp --syml~n=61~mq~wmq~lblq:G=0,0,0,R=1/2,1/2,1/2,X=0,0,1/2,M=0,1/2,1/2~lbl=MRG
lmf ctrl.fp --band~mq~scol@atom=pb~scol2@atom=cs~scol3@atom=i~fn=syml

plbnds -range=-10,8 -fplot -ef=0 -scl=13.6 -dat=green -lt=1,col=0,0,0,colw=1,0,0,colw2=0,1,0,colw3=0,0,1 -lbl=M,R,G bnds.fp
fplot -f plot.plbnds
gs fplot.ps

Setup for lm

blm --brief --nfile --rdsite=site0 --nosort --shorten=no --nk=4 --asa~pfree~rmaxs=10 --wsitex@fn=site cspbi
cp actrl.cspbi ctrl.asa
cp site.cspbi site.asa
lmf ctrl.fp --asars2
cp rsta.fp rsta.asa
lm ctrl.asa -vnit=0 --rs=1

blm --brief --nfile --rdsite=site0 --nosort --shorten=no --nk=4 --asa~pfree~rmaxs=10 --wsitex@fn=site cspbi --findes~rmin=1.5~omaxi=0~resize=20~nspmx=3
cp site.cspbi site.asa
cp actrl.cspbi ctrl.asa
lmchk asa --mino~z --wsitex~short~fn=site1
cp site1.asa site.asa
lm ctrl.asa -vnit=0 --zerq~es~add~qin --pr45

ASA self-consistency and energy bands

lmstr ctrl.asa
rm -f mixm.asa sv.asa log.asa
lm ctrl.asa -vnit=100 > out.asa
cp syml.fp syml.asa
lm ctrl.asa --band~mq~scol@atom=pb~scol2@atom=cs~scol3@atom=i~fn=syml
lmctl asa
cat log.asa >> ctrl.asa
Pseudocubic structure
Setup and self-consistency for lmf
blm --brief --scala=6.25772999 --nfile --rdsite=site0 --nk=4 --gw --wsitex@fn=site1 --gmax=8 dcspbi --xshftx=-.5,.5,0
cp actrl.dcspbi ctrl.dfp
cp site1.dcspbi site1.dfp
lmscell -vfile=1 ctrl.dfp --stack~sort@targ=1,2,5,4,3~addpos@dp=0,1,1@targ=2~wsitex@short@fn=site
cp basp.fp basp.dfp
lmfa ctrl.dfp
lmf ctrl.dfp >out.dfp
grep gap out.fp out.dfp

cp syml.fp syml.dfp
lmf ctrl.dfp --band~mq~scol@atom=pb~scol2@atom=cs~scol3@atom=i~fn=syml

Setup for lm

cp ctrl.asa ctrl.dasa
cp site.dfp site.dasa
lmf ctrl.dfp --asars2
cp rsta.dfp rsta.dasa
lm ctrl.dasa -vnit=0 --rs=1

cp ctrl.asa ctrl.dasa
cp site.dfp site1.dasa
tail -11 site.asa >> site1.dasa
sed -i 's/nbas=5/nbas=16/' site1.dasa
lmchk -vfile=1 ctrl.dasa --mino~z --wsite@short@fn=site
lmchk dasa --sfill~sclwsr=11~lock=1,1,1~omax=.18,.26,.26
sed -i.bak 's/\(ATOM=E .*R= *\)\([.0-9]*\)/\13.195825/'  ctrl.dasa
sed -i.bak 's/\(ATOM=E1 .*R= *\)\([.0-9]*\)/\12.321059/' ctrl.dasa

Self-consistent ASA, and energy bands

lm ctrl.dasa -vnit=0 --zerq~qin~ic=1
lmstr ctrl.dasa
rm -f mixm.dasa sv.dasa log.dasa
lm ctrl.dasa -vscr=0 -vnit=100 --pr31,20 > out.dasa
grep gap out.asa out.dasa
cp syml.fp syml.dasa
lm ctrl.dasa -vnit=100 --band~mq~col=1:4~col2=5:13~col3=14:40~fn=syml

Introduction

CsPbI3 is a close cousin of NH3CH3PbI3 (usually called MAPI). They are in the family of perovskites that have attracted a great deal of attention recently because of their considerable potential as efficient, low-cost solar cells.

CsPbI3 has, on average, a cubic structure. However, the PbI3 cage flexes rather dramatically in time, roughly on the scale of a phonon period, distorting the underlying cubic structure and changing the instantaneous band structure. MAPI flexes in a similar way, but CsPbI3 is simpler so this tutorial is written for it. The effect of distortions on the band structure is significant, and it is the subject of this tutorial. It is based on a paper analyzing the effects of nuclear motion in CHNHPbI and CsPbI.

This tutorial develops the energy bands for CsPbI3 in its ideal cubic structure, and a pseudocubic structure which approximates the flexing of the system at room temperature.

Cubic structure

Copy the following box to file site0.cspbi

% site-data vn=3.0 xpos fast io=15 nbas=5 alat=11.82540057 plat= 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0
#                        pos
 Pb        0.0000000   0.0000000   0.0000000
 Cs        0.5000000   0.5000000   0.5000000
 I         0.5000000   0.0000000   0.0000000
 I         0.0000000   0.5000000   0.0000000
 I         0.0000000   0.0000000   0.5000000

and the box below to site0.dcspbi.

% site-data vn=3.0 xpos fast io=15 nbas=5 alat=1.88972688 plat= 6.2887979 0.0 0.0 0.0015427 6.2287686 0.0 0.1397332 -0.0003656 6.3725603
#                        pos
 Pb        0.4448840  -0.5000200  -0.0223770
 Cs        0.0094815   0.0000333  -0.4695814
 I         0.4094870  -0.5000180   0.4751450
 I         0.3992710  -0.0000420   0.0236640
 I        -0.0676570   0.4999950  -0.0775210

LDA energy bands, calculated with lmf

Use site0.cspbi to create the input file

blm --brief --nfile --rdsite=site0 --nosort --shorten=no --nk=4 --gw --wsitex@fn=site1 cspbi
cp actrl.cspbi ctrl.fp
cp site1.cspbi site.fp
cp basp.cspbi  basp.fp

Command line switches to blm are explained here.

Set up symmetry lines for energy bands, file syml.fp. Command adpated from the symmetry lines page

lmchk ctrl.fp --syml~n=61~mq~wmq~lblq:G=0,0,0,R=1/2,1/2,1/2,X=0,0,1/2,M=0,1/2,1/2~lbl=MRG

Make the system self-consistent and compute energy bands

lmfa ctrl.fp
lmf ctrl.fp >out.fp
lmf ctrl.fp --band~mq~scol@atom=pb~scol2@atom=cs~scol3@atom=i~fn=syml

To create a postscript figure of the band structure, do

plbnds -range=-10,8 -fplot -ef=0 -scl=13.6 -dat=green -lt=1,col=0,0,0,colw=1,0,0,colw2=0,1,0,colw3=0,0,1 -lbl=M,R,G  bnds.fp
fplot -f plot.plbnds
gs fplot.ps

[Any postscript viewer can be used in place of the Ghostscript gs]

The states near the valence band maximum are iodine-like (blue), while the states at the conduction band minimum are Pb like (purple = red+blue).

LDA-ASA energy bands, calculated with lm

The ASA doesn’t have a Mattheis construction to supply a reasonable starting guess the charge density, as lmf does. On the other hand, because it is the ASA, it is able to store information about the density in a highly compact way1.

Extract l resolved sphere charges generated by lmf
The ASA contracts all the information about the density into energy moments of the sphere charges 1, for each l. This step is not necessary, but it makes use of moments generated by lmf as input to the ASA. Thus it supplies a reasonable starting guess for the density.
blm --brief --nfile --rdsite=site0 --nosort --shorten=no --nk=4 --asa~pfree~rmaxs=10 --wsitex@fn=site cspbi
cp actrl.cspbi ctrl.asa
cp site.cspbi site.asa
lmf ctrl.fp --asars2
cp rsta.fp rsta.asa
lm ctrl.asa -vnit=0 --rs=1

Note that there is missing charge. From the end of the output of the last step you should see

 Sum Q=-5.836727  Emad=-0.559668(-2.648708)  Vmtz=-0.315457

We will address the deviation from charge neutrality by adding empty spheres, and adding charges to them to satisfy charge neutrality, as explained next.

Autogenerate empty spheres
Use blm to remake the ctrl.asa, but this time locating empty spheres.
blm --brief --nfile --rdsite=site0 --nosort --shorten=no --nk=4 --asa~pfree~rmaxs=10 --wsitex@fn=site cspbi --findes~rmin=1.5~omaxi=0~resize=20~nspmx=3

Note the --asa switch.

  • pfree inserts a line into ctrl.cspbi to keep the continuous principal quantum number Pl from falling too low (below the free electron value)
  • rmaxs=10 sets the range of the tight binding structure constants. The entire family of command line switches is explained here.

Compare site.cspbi and site.asa. They should be the same except for the addition of empty spheres. Next do a little cleanup:

cp site.cspbi site.asa
cp actrl.cspbi ctrl.asa
lmchk asa --mino~z --wsitex~short~fn=site1
cp site1.asa site.asa

The last two steps are not essential, but they move the E sites around to reduce sphere overlaps.

Now we are ready to create a starting potential Use the --zerq command-line switch to tell lm to add charges to empty spheres in a manner that charge neutrality is satisfied.

lm ctrl.asa -vnit=0 --zerq~es~add~qin --pr45

You should see these lines near the beginning of stdout

 asazerq : system charge is now -5.836727
           adding charge 0.962397 to s channel, class 1
           adding charge 0.368692 to s channel, class 2

lm added electrons to the s channel in the empty spheres, in proportion to their volumes, so that the total extra charge makes the system neutral. You should see this table at the end of stdout

 Class        Qtot       Qbak       Vmad     Vh(Rmax)    V(Rmax)
 Pb        -1.324811   0.000000   0.434942  -0.337686  -0.829351
 Cs        -0.935569   0.000000   0.835369   0.300759  -0.129149
 I         -1.192116   0.000000   0.658431  -0.036809  -0.527685
 E          0.962397   0.000000  -0.404977   0.204973  -0.278103
 E1         0.368692   0.000000  -0.252756   0.068981  -0.407160
 Sum Q=0.000000  Emad=0.432771(-3.399443)  Vmtz=-0.453235

The E sphere has twice the volume of the E1 sphere, so it gets twice the charge.

We now have a good starting point for a self-consistent ASA calculation.

Self-consistent ASA, first attempt
Drive the density to self-consistency, and make the energy bands.
lmstr ctrl.asa
rm -f mixm.asa sv.asa log.asa
lm ctrl.asa -vnit=100 > out.asa

The density converged smoothly in its iteration to self-consistency, as can be seen by looking for the rms change DQ in the moments from the out.asa (do grep DQ out.asa) or by inspecting the fourth column of sv.asa.

See this page for a description of the program flow in lm, how it manages the charge density and iterates towards self-consistency.

Create the energy bands:

cp syml.fp syml.asa
lm ctrl.asa --band~mq~scol@atom=pb~scol2@atom=cs~scol3@atom=i~fn=syml

LDA (blue) and first attempt at LDA-ASA energy bands of CsPbI3.

energy bands of CsPbI3

The energy bands compare favorably to the full LDA calculation, except for a flat state in the FP case at -8 eV. It can be seen from color weights in the FP bands that this state is Cs derived, and further analysis shows it comes from the semicore Cs 5p orbital. This is included in the valence using local orbitals in lmf, but there is no facility for it in the ASA.

To preserve a complete setup, append the self-consistent moments to ctrl.asa

lmctl asa
cat log.asa >> ctrl.asa

To confirm that ctrl.asa and site.asa make a self-contained setup, copy these files to a clean directory and do:

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

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

Note: with a modest change in how the calculation is set up, you may find a spurious flat band near 3 eV; this is a spurious Pb 6d (“ghost”) state.

Self-consistent ASA

The spurious state or “ghost band,” 2 must be removed before proceeding. In this particular instance the problem can be fixed simply by reducing the overlap between the Pb and empty spheres. But this is a special case. For pedagogical reasons, we point out three other ways to solve the problem.

  1. Downfold the Pb 6d.
  2. Freeze the Pb 6d continuous principal quantum number Pd at a higher value than the one reached through the self-consistency cycle 2 (PMIN=-1 is designed to guard against this problem but it wasn’t sufficient.)
  3. Replace the Pb 6d with Pb 5d.


Option 1 : Downfold the Pb 6d.
Set  IDXDN  to 2 in the Pb d channel and iterate to self-consistency
cat actrl.cspbi | sed 's/\(ATOM=Pb.*IDXDN=0,0\),0/\1,2/'   > ctrl.asa
rm -f mixm.asa sv.asa log.asa
lm ctrl.asa -vnit=100 > out

Draw the energy bands of the downfolded hamiltonian

lm ctrl.asa -vnit=100 --band~mq~col=1:4~col2=5:13~col3=14:40~fn=syml
echo -8,6,5,10 | plbnds -fplot~sh -ef=0 -scl=13.6 -lt=1,col=0,0,0,colw=1,0,0,colw2=0,1,0,colw3=0,0,1 -lbl=M,R,G bnds.asa

The spurious state is gone; now the bands compare favorably with the full LDA result.

Note: this method has one drawback: namely that the layer Green’s function code lmpg does not have downfolding capability.

Option 2. Freeze the Pb 6d Pnu at a higher linearization energy
Set  IDMOD  to 1 in the Pb d channel; replace P the Pb d (now at about 6.15) with 6.2, and iterate to self-consistency
sed -i 's/\(2    6.[0-9]*\) / 2   6.2       /' pb.asa
cat actrl.cspbi | sed 's/\(ATOM=Pb.*\)/\1 IDMOD=0,0,1/'   > ctrl.asa
rm -f mixm.asa sv.asa log.asa
lm ctrl.asa -vnit=100 > out
lm ctrl.asa -vnit=100 --band~mq~col=1:9~col2=10:18~col3=19:27~fn=syml
echo -8,6,5,10 | plbnds -fplot~sh -ef=0 -scl=13.6 -lt=1,col=0,0,0,colw=1,0,0,colw2=0,1,0,colw3=0,0,1 -lbl=M,R,G bnds.asa

These bands are practically indistinguishable from Option 1.

Option 3 : Replace the Pb 6d with Pb 5d.
Replace P on the Pb with 5d. So far we have treated the Pb 5d as a core state. This will improve the treateent of the the Pb 5d, but in the region of the Fermi level, Pb has more 6d than 5d character near the Fermi level, so we might expect this method to be a little less accurate.

In setting up the starting conditions the Pb moments are now completely out of whack, since Pb 6d and Pb 5d are very different. Rather than try to guess Pb moments, instead we can remove the Pb atom file, let lm choose some moments taken from the free atom, and scale the charge on that atom to enforce charge neutrality.

cat actrl.cspbi | sed 's/\(ATOM=Pb.*\)/\1 P=0,0,5.93/'   > ctrl.asa
rm pb.asa
lm ctrl.asa -vnit=0 --zerq~qin~ic=1
rm -f mixm.asa sv.asa log.asa
lm ctrl.asa -vnit=100 > out
lm ctrl.asa -vnit=100 --band~mq~col=1:9~col2=10:18~col3=19:45~fn=syml

Agreement now is bit worse, as the Figure shows. Pb d partial waves do have some effect near the Fermi level.

Energy bands of CsPbI3 with Pb 5d

Pseudocubic structure

Compare site0.dcspbi and site0.cspbi. They are basically the same structure, with relatively modest distortions, but:

  1. alat and plat are distributed differently: plat(i,i) is about 6.2, corresponding to the (slightly distorted) cube edge in Angstroms. This data was extracted from a VASP POSCAR file.
  2. Some sites are translated by approximate integer multiples of lattice vectors (approximate because of distortions)
  3. The order of the Iodine sites is permuted.

It is convenient to render the site file of the distorted lattice as near as possible to the undistorted one. Then comparisons are simpler to make. A combination of switches in the blm and lmscell make this easy work.

LDA energy bands, pseudocubic structure

blm can eliminate difference (1) with the --scala switch, and most of the differences in lattice translations elminated with the --xshft switch.

blm --brief --scala=6.25772999 --nfile --rdsite=site0 --nk=4 --gw --wsitex@fn=site1 --gmax=8 dcspbi --xshftx=-.5,.5,0
cp actrl.dcspbi ctrl.dfp
cp site1.dcspbi site1.dfp

site1.dfp and site.fp are much closer to each other. The superlattice editor lmscell --stack can undo the permutation of Iodine sites with the ~sort option, and it can clean the up the one remaining difference in the translation vector (Cs) with the ~addpos option.

lmscell -vfile=1 ctrl.dfp --stack~sort@targ=1,2,5,4,3~addpos@dp=0,1,1@targ=2~wsitex@short@fn=site

site.dfp and site.fp are as similar as they can be: the remaining differences are all connected with distortions, which is the property of interest.

Use lmf to make self-consistent and draw the energy bands. Here we can re-use the basis set from the undistorted lattice.

cp basp.fp basp.dfp
lmfa ctrl.dfp
lmf ctrl.dfp >out.dfp
cp syml.fp syml.dfp
lmf ctrl.dfp --band~mq~scol@atom=pb~scol2@atom=cs~scol3@atom=i~fn=syml

Notice that the gap in the pseudocubic structure is 1.58 eV, almost 0.3 eV larger than the gap of the cubic structure. This change is important for the hybrid perovskite devices.

To find the gap, do

grep gap out.fp out.dfp

LDA-ASA energy bands, pseudocubic structure

The procedure follows that of the cubic structure, but we can reuse site and ctrl files from prior calculations.

Extract l resolved sphere charges from the lmf calculation
cp ctrl.asa ctrl.dasa
cp site.dfp site.dasa
lmf ctrl.dfp --asars2
cp rsta.dfp rsta.dasa
lm ctrl.dasa -vnit=0 --rs=1
Add empty spheres
Take the empty spheres from the cubic lattice, and use the overlap minimizer to optimize their positions:
  cp ctrl.asa ctrl.dasa
  cp site.dfp site1.dasa
  tail -11 site.asa >> site1.dasa
  sed -i 's/nbas=5/nbas=16/' site1.dasa
  lmchk -vfile=1 ctrl.dasa --mino~z --wsite@short@fn=site

This creates a working site file. The volume of the pseudocubic lattice is slightly larger than the cubic one. So sphere volumes no long quite fill the cell volumes, a requirement for the ASA.

This is remedied with sphere resizer, invoked by the command-line argument --sfill

  lmchk dasa --sfill~sclwsr=11~lock=1,1,1~omax=.18,.26,.26

You should see this table

   spec  name        old rmax    new rmax     ratio  lock
     1   Pb          3.429366    3.429366    1.000000 *
     2   Cs          3.500000    3.500000    1.000000 *
     3   I           3.429366    3.429366    1.000000 *
     4   E           3.155659    3.195825    1.012728
     5   E1          2.291887    2.321059    1.012728
   

Use your text editor to cut and paste the modified E and E1 sphere radii into ctrl.dasa. Alternatively do it with sed:

  sed -i.bak 's/\(ATOM=E .*R= *\)\([.0-9]*\)/\13.195825/'  ctrl.dasa
  sed -i.bak 's/\(ATOM=E1 .*R= *\)\([.0-9]*\)/\12.321059/' ctrl.dasa
Self-consistent ASA
Drive the density to self-consistency, and make the energy bands.
lm ctrl.dasa -vnit=0 --zerq~qin~ic=1
lmstr ctrl.dasa
rm -f mixm.dasa sv.dasa log.dasa
lm ctrl.dasa -vscr=0 -vnit=100 --pr31,20 > out.dasa
cp syml.cspbi syml.dasa
lm ctrl.dasa -vnit=100 --band~mq~col=1:4~col2=5:13~col3=14:40~fn=syml

LDA (blue) and LDA-ASA energy bands of CsPbI3, with the Pb 6d folded down. Left: cubic structure. Right: pseudocubic structure.

energy bands of CsPbI3, downfolded Pd d

Distortions widen the gap. The figure shows that the ASA tracks shifts in the bands with displacement fairly well.

Next steps: compute the partial DOS in the ASA; see this tutorial

Footnotes and references

1 The ASA does not keep the density itself, but contracts all the information about the density into energy moments of the sphere charges, , , and , of the density of states for each , and the continuous principal quantum number. . It can do this because of the special structure of the ASA. When the density is needed to make the potential, it is constructed from the and the .

If no data is available for a particular atom, the ASA codes lm, lmgf, and lmpg select from charges in the atom, and sets to zero. It reads preset values for the and from a lookup table. This is will make a crude estimate of the density, but it is usually sufficient to make a starting guess, which can be iterated to the self-consistent values.

Another alternative is to extract the moments from the same species of a different self-consistent calculation, as a starting guess for the self-consistent moments.

A third alternative is to extract the moments , and boundary conditions , from a full-potential calculation run by lmf. The present tutorial follows this strategy.

2 Normally the continuous principal quantum numbers. are allowed to float to band center of gravity (the at which vanishes), but when the partial wave is far removed from the Fermi level, this can cause “ghost bands” to appear. One guard against this is to restrict the , and not let it fall below the free-electron value. Tag HAM_PMIN is designed for this purpose. Another guard is to freeze the to a fixed value, using SPEC_ATOM_IDMOD. Another way is to downfold the . You can tell the ASA codes to downfold a particular state with SPEC_ATOM_IDXDN.