Superlattices in QSGW

This tutorial shows how to construct a superlattice using Questaal tools.

A short-period superlattice of InAs and GaSb is constructed and a self-consistent QSGW made for it. Longer periods superlattices are built by using the sigma editor, embedding the QSGW self-energy into bulk regions away from the interface, calculated from QSGW calculations for bulk InAs and GaSb. This makes it possible to generate QSGW quality band structure for relatively large superlattices.


Table of Contents

Zincblende InAs

  • Input file, LDA self-consistency
cp init.dat init.inas
blm -vinas=t --sort=no --shorten=no --wsitex,quad1 --findes,rmin=1.3,float,1spec --ehmx=-.3 --nit=20 --gw~gcutb=2.7~gcutx=2.3~pbtol=3e-4,3e-4,1e-3,1e-3,1e-2 --nk=6 --nkgw=4 --gmax=9.2 --eloc=-3.5 --ctrl=ctrl inas
lmfa -vles=1 --basfile=basp ctrl.inas
lmfa -vles=1 --basfile=basp ctrl.inas
mpix -n 16 lmf-MPIK ctrl.inas
  • QSGW self-consistency
lmfgwd --job=-1 ctrl.inas
lmgwsc --wt --insul=14 --mpi=12,12 --tol=2e-5 --sym --getsigp --save= inas-bulk inas > out.job
mpix -n 16 lmf-MPIK ctrl.inas
cp ctrl.inas basp.inas rst.inas site.inas inas-bulk
  • QSGW band structure

cp ~/lm/startup/syml.fcc syml.inas
lmf ctrl.inas -vso=1 --quit=rho --mixsig=0.8
lmf ctrl.inas -vso=1 --quit=rho --band~fn=syml --mixsig=0.8
echo -7,6 / | plbnds -nocol -fplot~sh~scl=.7 -ef=0 -scl=13.6 -lbl=L,G,X,W,G bnds.inas

Zincblende GaSb

  • Create input files
cp init.dat init.gasb
blm --sort=no --shorten=no --wsitex,quad1 --findes,rmin=1.3,float,1spec --ehmx=-.3 --nit=20 --gw~gcutb=2.7~gcutx=2.3~pbtol=3e-4,3e-4,1e-3,1e-3,1e-2 --nk=6 --nkgw=4 --gmax=9.2 --eloc=-3.5 --ctrl=ctrl gasb
sed -i s/#SYMGRP/SYMGRP/ ctrl.gasb
lmscell ctrl.gasb --stack~sort@h3~wsitex@short@fn=site
lmfa -vles=1 --basfile=basp ctrl.gasb
lmfa -vles=1 --basfile=basp ctrl.gasb
rm -f mixsigma sigm
mpix -n 16 lmf-MPIK ctrl.gasb
  • QSGW self-consistency
lmfgwd --job=-1 ctrl.gasb
lmgwsc --wt --insul=14 --mpi=12,12 --tol=2e-5 --sym --getsigp --save= gasb-bulk gasb > out.job
mpix -n 16 lmf-MPIK ctrl.gasb > out.lmf
cp ctrl.gasb basp.gasb rst.gasb site.gasb out.lmf gasb-bulk
  • QSGW band structure
cp ~/lm/startup/syml.fcc syml.gasb
lmf ctrl.gasb -vso=1 --quit=rho --mixsig=0.75
lmf ctrl.gasb -vso=1 --quit=rho --band~fn=syml --mixsig=0.75
echo -7,6 / | plbnds -nocol -fplot~sh~scl=.7 -ef=0 -scl=13.6 -lbl=L,G,X,W,G bnds.gasb

Sheared GaSb

sed -i s/^SYMGRP/#SYMGRP/ ctrl.gasb
lmscell gasb -vz=11.5/11.43 --stack~scale=1/z~stretch=z^3~wsitex@short
lmf ctrl.gasb --wsig:fbz
cp sigm2.gasb sigm.gasb
cp sites.gasb site.gasb
lmf ctrl.gasb --rsig:fbz:rlxkp --iactiv --wsig:newkp
cp sigm2.gasb sigm.gasb
lmgwsc --wt --insul=14 --mpi=12,12 --tol=2e-5 --sym --getsigp --save= gasb-shear gasb > out.job
mpix -n 16 lmf-MPIK ctrl.gasb > out.lmf

Short-period superlattice

Preliminaries

This tutorial assumes ~/lm is the top-level directory for the Questaal repository, and that Questaal executables are in your path.

This tutorial uses mpix to execute MPI jobs. Typically mpirun is used for MPI jobs. If that is the case, just substitute mpirun for mpix below. If you have not compiled lmf and lmfgwd with MPI, you must run those jobs in serial mode.


Basic strategy

QSGW can make very high quality band structures. In principle it can be done for many atoms, but in practice QSGW is limited to relative small sizes (up to about 50 atoms, depending on the context).

By using the “near sightedness” principle and cutting and pasting self-energies in various regions, we can using small calculations to construct a high-quality potential for much larger systems.

Here we use QSGW to perform calculations on :

  1. Bulk InAs in the zincblende structure
  2. Bulk GaSb in the a sheared zincblende structure, tailored to match InAs
  3. A short-period superlattice of (InAs)2(GaSb)2 along [110]

Finally the three calculations are merged to construct an approximate self-energy for a longer period superlattice.

There are many steps required to accomplish this, but the result is a very high quality band structure for the superlattice.

Bulk QSGW calculations for InAs and GaSb

Copy the box below into file init.dat

HEADER InAs and GaSb
LATTICE
% ifdef inas
% const a=11.43   # For InAs
% endif
% const a=11.50  # For GaSb
     ALAT={a} PLAT=    0.0 0.5 0.5 0.5 0.0 0.5 0.5 0.5 0.0

% ifdef inas
SITE
     ATOM=In    X= 0   0   0
     ATOM=As    X= 1/4 1/4 1/4
% else
SITE
     ATOM=Ga    X= 0   0   0
     ATOM=Sb    X= 1/4 1/4 1/4
% endif

Notes:

  • init.dat is designed to work with blm for both InAs and GaSb in the zincblende structure. For InAs, use -vinas=t.
  • Both form in the zincblende structure, but with slightly different lattice constants. This will be important when the two lattices are joined.
  • Reliable treatment of the In and As d states will require local orbitals. blm will automatically include them; however it will be necessary to set the tolerances for finding them a bit tighter than the default, as sown below.

Setting up input files for InAs

The following steps set up an input file ctrl.inas, a site file site.inas, and a file with basis set information, basp.inas.

$ cp init.dat init.inas
$ blm -vinas=t  --wsitex,quad1 --findes,rmin=1.3,float,1spec --ehmx=-.3 --nit=20 --gw --nk=6 --nkgw=4 --gmax=9.2 --eloc=-3.5 --ctrl=ctrl inas
$ lmfa -vles=1 --basfile=basp ctrl.inas
$ lmfa -vles=1 --basfile=basp ctrl.inas

blm creates ctrl.inas and site.inas. Its switches do the following:

-vinas=t sets preprocessor variable inas (allowing init.inas to be used for both InAs and GaSb)
–wsite,quad1 Translates all sites to be in the first quadrant
–findes,rmin=1.3,float,1spec Identifies open interstitial regions in which to place floating orbitals1
–ehmx=-.3 Specifies the upper bound to the smooth Hankel energy
–nit=20 maximum number of iterations (not required)
–gw Tailor input file for a GW calculation
–nk=6 Number of k divisions for lmf
–nkgw=4 Number of k divisions for GW2
–gmax=9.2 G cutoff for lmf3
–eloc=-3.5 Set default energy cutoff when searching for local orbitals4
–ctrl=ctrl Write output directly to ctrl.inas

1 The lmf basis is slightly too small for converged GW calculations. This will be remedied when Jigsaw Puzzle orbitals become available.
  Meanwhile we augment the basis by adding smooth Hankels without augmentation spheres (“floating orbitals”).
  All floating orbitals are constrained to be the same species (the modifiers to --findes are described in the command-line switches page).
2 The GW mesh of 4×4×4 divisions slightly overestimates the gap (by 0.05 eV). We keep this mesh for economy.
  In any case the QSGW gap is generally too large, and we will scale the QSGW Σ0\Sigma^0 to reduce the gap.
3 gmax is not known in advance; however lmfa will print out a recommended value.
4 With the default cutoff, lmfa does not pick up the deep As 3d state, which reduces the gap by 0.05 eV.

lmfa creates the basis file basp.inas and the atomic density file atm.ext. It must be run twice, initially to determine what local orbitals are to be included. A second pass is necessary to properly partition the valence-core density. Arguments do the following:

-vles=1 variable causes E “sites” to have an augmentation radius1
–basfile=basp write the auto-generated basis to basp.inas (default = basp0.inas)

Inspect basp.inas. Note that In 4d is the normally augmented valence state; the 5d is treated as a local orbital. The corresponding As 3d state is deeper than the In 4d, so for As, the 3d is treated as a local orbital, and the 4d is the normally augmented valence state.

LDA self-consistency:

Carry out an LDA calculation to self-consistency, assuming you have compiled lmf with MPI. (if not, use lmf in serial mode):

$ mpix -n 16 lmf-MPIK ctrl.inas

Note that at the LDA level, there is no bandgap. You can see this in these lines from the standard output:

 BZWTS : --- Tetrahedron Integration ---
 ... only filled or empty bands encountered:  ev=0.044087  ec=0.044087
 VBmax = 0.044087  CBmin = 0.044087  gap = 0.000000 Ry = 0.00000 eV
 BZINTS: Fermi energy:      0.044087;  28.000000 electrons;  D(Ef):    0.000
         Sum occ. bands:  -37.8877930  incl. Bloechl correction:    0.000000

QSGW self-consistency, InAs

The following makes InAs self-consistent at the QSGW level (the second and third steps are not required)

lmfgwd --job=-1 ctrl.inas
lmgwsc --wt --insul=14 --mpi=12,12 --tol=2e-5 --sym --getsigp --save= inas-bulk inas > out.job
mpix -n 16 lmf-MPIK ctrl.inas
cp ctrl.inas basp.inas rst.inas site.inas inas-bulk/

You should find lmgwsc converges to a high degree of self-consistency in 4 iterations. Important files should be retained in directory inas-bulk.

At this point it is instructive to make energy bands. Spin-orbit coupling plays a non-negligible role here, and we would like to take it into account.  ctrl.inas is already set up for a calculation with SO coupling; however if you run lmf straight off it will fail with the message

 Exit -1 rdsigm unexpected value 10 for file sigm nqp ... expected 64

This is because the QSGW self-energy was constructed on the irreducible wedge of the zincblende lattice; however spin-orbit coupling reduces the symmetry. The simplest solution is to impose the full nonmagnetic symmetry of the zincblende lattice: even though the symmetry is not correct with SO coupling turn on, it matters little to our purpose.

A symmetry specification is included in the input file but commented out

# SYMGRP i*r4x r3(1,1,-1)

Use your text editor to uncomment the line or simply do:

sed -i s/#SYMGRP/SYMGRP/ ctrl.inas

The following steps will:

  • find the Fermi level with SO coupling included (so the band plotter knows where to set the energy zero)
  • generate the energy bands
  • make a postscript file

We use a symmetry lines file from the Questaal distribution:

cp ~/lm/startup/syml.fcc syml.inas
lmf ctrl.inas -vso=1 --quit=rho
lmf ctrl.inas -vso=1 --quit=rho --band~fn=syml
echo -7,6 / | plbnds -nocol -fplot~sh~scl=.7 -ef=0 -scl=13.6 -lbl=L,G,X,W,G bnds.inas

These commands will create a postscript file, fplot.ps

Click here to view QSGW energy bands of InAs

Inspect the first row of bnd2.dat (the second panel of the energy bands). You should find the following:

k-point split off band light hole band heavy hole band conduction band  
0.00000 -0.3483   -0.3483 -0.0015   -0.0015 -0.0001   -0.0001 0.7220   0.7220 default cutoffs

The bandgap is 0.74 eV, significantly larger than the experimental value of 0.42 eV. We will deal with this later.

Before ending this section, let’s relax some of the tolerances in the GWinput file. It matters little in this case, but superlattices are expensive to calculate. We can confirm that relaxing the cutoffs some has little effect on the band structure.

Repeat some of the preceding steps, changing only the --gw tag.

blm -vinas=t --sort=no --shorten=no --wsitex,quad1 --findes,rmin=1.3,float,1spec --ehmx=-.3 --nit=20 --gw~gcutb=2.7~gcutx=2.3~pbtol=3e-4,3e-4,1e-3,1e-3,1e-2 --nk=6 --nkgw=4 --gmax=9.2 --eloc=-3.5 --ctrl=ctrl inas
sed -i s/#SYMGRP/SYMGRP/ ctrl.inas
lmfgwd --job=-1 ctrl.inas

The steps differ from the initial run only in the modifiers to --gw. These modifiers eventually modify GWinput, through changing the contents of token GW_PBTOL, and variables gcutb and gcutx which in turn control GW_GCUTB and GW_GCUTX.

These values get passed to GWinput when it is created with lmfgwd --job=-1. To see the changes do either of the following:

diff ctrl.inas inas-bulk
diff GWinput inas-bulk/

Remake the QSGW self-energy Σ0(k)\Sigma^0(\mathbf{k})

mv inas-bulk inas-bulk~                   (not needed unless you want to preserve the original run)
rm -f mixsigma
lmgwsc --wt --insul=14 --mpi=12,12 --tol=2e-5 --sym --getsigp --save= inas-bulk inas > out.job
mpix -n 16 lmf-MPIK ctrl.inas
cp ctrl.inas basp.inas rst.inas site.inas inas-bulk/

and the energy bnds with SO coupling

cp ~/lm/startup/syml.fcc syml.inas
lmf ctrl.inas -vso=1 --quit=rho
lmf ctrl.inas -vso=1 --quit=rho --band~fn=syml
echo -7,6 / | plbnds -nocol -fplot~sh~scl=.7 -ef=0 -scl=13.6 -lbl=L,G,X,W,G bnds.inas

The changes are so small as to be invisible to the eye. In the figure below the solid red line are the first bands, the black dashed lines are those recalculated with looser tolerances. Circles are estimates of the conduction band minima at L, Γ\Gamma, and X deduced from ellipsometry measurements.

Click here to compare the two QSGW energy bands of InAs

Band gaps are overestimated, and indeed they should be because the RPA screeened coulomb interaction W is not sufficiently screened. And also zero-point motion has been left out. Improvement of W by the addition of ladder diagrams indeed does improve the gaps, as Kutepov has shown. However, these higher order diagrams are expensive, and we adopt a simpler approach here. The dielectric constant is about 80% of experiment (it seems always to be the case for semiconductors and insulators), because ladder diagrams are missing in the RPA. We have found that scaling ε by 0.8 (assuming the full ϵ(r,r,ω)\epsilon(\mathbf{r},\mathbf{r'},\omega) gets scaled by a fixed number), or alternatively using a hybrid of 80% QSGW and 20% LDA we can mimic the effect of the ladders. This eliminates most of the error.

lmf ctrl.inas -vso=1 --quit=rho --mixsig=0.8
lmf ctrl.inas -vso=1 --quit=rho --band~fn=syml --mixsig=0.8
cp ~/lm/startup/syml.fcc syml.gasb
lmf ctrl.inas -vso=1 --quit=rho
lmf ctrl.inas -vso=1 --quit=rho --band~fn=syml
echo -7,6 / | plbnds -nocol -fplot~sh~scl=.7 -ef=0 -scl=13.6 -lbl=L,G,X,W,G bnds.inas

If the objective is to get the best agreement with experiment, the QSGW-LDA mixing can be varied, e.g. use 75%.

Inspecting the Γ\Gamma-point we find the following

k-point split off band light hole band heavy hole band conduction band  
0.00000 -0.3483   -0.3483 -0.0015   -0.0015 -0.0001   -0.0001 0.7220   0.7220 default cutoffs
0.00000 -0.3482   -0.3482 -0.0014   -0.0014 -0.0000   -0.0000 0.7222   0.7222 reduced cutoffs
0.00000 -0.3498   -0.3498 -0.0016   -0.0016 -0.0003   -0.0003 0.4730   0.4730 (Σ0VxcLDA)×0.8(\Sigma^0-V_\mathrm{xc}^\mathrm{LDA}){\times}0.8
0.00000 -0.3501   -0.3501 -0.0005   -0.0005 -0.0005   -0.0005 0.4102   0.4102 (Σ0VxcLDA)×0.75(\Sigma^0-V_\mathrm{xc}^\mathrm{LDA}){\times}0.75

With the scaling, agreement with ellipsometry measurements is excellent.

Click here to view the band structure of InAs using (Σ0VxcLDA)×0.75(\Sigma^0{-}V_\mathrm{xc}^\mathrm{LDA}){\times}0.75

QSGW self-consistency, GaSb

GaSb proceeds in much the same way as InAs. Set up the initial files :

$ cp init.dat init.gasb
$ blm --sort=no --shorten=no --wsitex,quad1 --findes,rmin=1.3,float,1spec --ehmx=-.3 --nit=20 --gw~gcutb=2.7~gcutx=2.3~pbtol=3e-4,3e-4,1e-3,1e-3,1e-2 --nk=6 --nkgw=4 --gmax=9.2 --eloc=-3.5 --ctrl=ctrl gasb
$ sed -i s/#SYMGRP/SYMGRP/ ctrl.gasb

There is a slight complication with the empty sites that did not appear for InAs. blm adds a pair of empty sites in the same way as it does for InAs, but their order is reversed. It doesn’t matter in this context but, it will complicate matters when the supercell is assembled from smaller units. To order the points by increasing height from the basal plane (normal vector = p1 × p2, p1 and p2 being the first two lattice vectors), use the superlattice editor lmscell

$ cp sites.gasb sites.gasb~
$ lmscell ctrl.gasb --stack~sort@h3~wsitex@short@fn=site

Compare sites.gasb and sites.gasb~ and confirm that the sites are now ordered by increasing z.

Next, make the density self-consistent in the LDA

$ lmfa -vles=1 --basfile=basp ctrl.gasb
$ lmfa -vles=1 --basfile=basp ctrl.gasb
$ rm mixsigma sigm
$ mpix -n 16 lmf-MPIK ctrl.gasb

Set up the QSGW input file and make a self-consistent QSGW Σ0\Sigma^0:

$ lmfgwd --job=-1 ctrl.gasb
$ lmgwsc --wt --insul=14 --mpi=12,12 --tol=2e-5 --sym --getsigp --save= gasb-bulk gasb > out.job
$ mpix -n 16 lmf-MPIK ctrl.gasb
$ cp ctrl.gasb basp.gasb rst.gasb site.gasb gasb-bulk/

Make the energy bands

cp ~/lm/startup/syml.fcc syml.gasb
lmf ctrl.gasb -vso=1 --quit=rho
lmf ctrl.gasb -vso=1 --quit=rho --band~fn=syml
echo -7,6 / | plbnds -nocol -fplot~sh~scl=.7 -ef=0 -scl=13.6 -lbl=L,G,X,W,G bnds.gasb

We find a similar overestimate of the conduction band in GaSb. Moreover, there is an error in the dispersion of the conduction band from Γ\Gamma to L. In the Figure below, critical points from ellipsometry measurements were used to infer the conduction band edges near L and X, shown as circles. QSGW predicts the L point to be 0.1 eV lower than the Γ\Gamma point, in contradiction to experiment.

Click here to view the QSGW band structure of GaSb

This turns out to be connected with the missing ladders in W : they affect the Γ\Gamma point more than the L point. Repeat the calculation with a 0.75 mixing:

lmf ctrl.gasb -vso=1 --quit=rho --mixsig=0.75
lmf ctrl.gasb -vso=1 --quit=rho --band~fn=syml --mixsig=0.75

Click here to view the band structure of GaSb using (Σ0VxcLDA)×0.75(\Sigma^0{-}V_\mathrm{xc}^\mathrm{LDA}){\times}0.75

Sheared GaSb

As noted earlier, the lattice constants of GaSb and InAs are slightly different. In the supercell constructed in the next section, we will scale the GaSb lattice constant to that of InAs while shearing it to conserve volume. Anticipating this, we should repeat the QSGW calculation for the strained ZB structure for GaSb that will enter into the supercell.

How to accomplish this is described in the sigma editor tutorial. Follow the instructions there (after the initial step that make Σ0\Sigma^0 for the zincblende lattice, which you have already done). If you want to skip the details, just carry out the instructions in the Command Summary.

Before proceeding with that tutorial, be sure to re-comment the SYMGRP category, since symmetry operations will change when the lattice is sheared.

sed -i s/^SYMGRP/#SYMGRP/ ctrl.gasb

AFter completing the steps of that tutorial, copy the key files into gasb-shear for future use:

cp ctrl.gasb basp.gasb rst.gasb site.gasb out.lmf gasb-shear/

The InAs/GaSb interface

For the InAs/GaSb superlattice we must define the superlattice structure, and create corresonding input and site files. The input files for InAs and GaSb are quite similar but not identical; a file for the merged structure will be slightly different from either of them. The main complication has to do with lattice mismatch.

To build the interface, we use lmscell in the superlattice editor mode.


Edit This Page