1.20. Multiple quantum wells and finite superlattices

Author: Brandon Loke

This tutorial simulates a real layered structure with a finite number of quantum wells. The transition between a finite superlattice and a multiple quantum well system is also observed. This tutorial aims to reproduce the figures in Paul Harrison’s book “Quantum Wells, Wires and Dots” (Section 3.10, “Multiple Quantum Wells and Finite Superlattices”)

The inputfile used for this tutorial is

  • Superlattice_N_wells_nnp.in

The corresponding Jupyter Notebook for this tutorial can be found over here: MQW_Superlattices.ipynb.


The structure consists of N repeats of 4nm GaAs wells and 4nm Ga0.8Al0.2As quantum wells. This superlattice structure is sandwiched between 20nm Ga0.8Al0.2As barriers.

We first define key variables, such as the well width, the right and left wall width, and the number of wells.

# Global constants
$TEMPERATURE                          = 300           # Temperature (DisplayUnit:K)(ListOfValues:270, 280, 290, 300, 310, 320, 330)

# Structure

$WELL_WIDTH                           = 10.0           # Width of the quantum well (DisplayUnit:nm)(HighlightInUserInterface)(ListOfValues:5.0, 6.0, 7.0, 8.0, 9.0)  (RangeOfValues:From=5.0,To=9.0,Step=1.0)
$BARRIER_WIDTH                        = 10.0           # Width of the barrier      (DisplayUnit:nm)(HighlightInUserInterface)(ListOfValues:7.0, 8.0, 9.0, 10.0, 11.0)(RangeOfValues:From=57.0,To=11.0,Step=1.0)
$NUMBER_OF_WELLS                      = 4              # number of quantum wells   (DisplayUnit:)(HighlightInUserInterface)(ListOfValues:4, 5, 6, 7, 8)(RangeOfValues:From=3,To=10,Step=1)

$SUPERLATTICE_WIDTH                   = $NUMBER_OF_WELLS * ( $BARRIER_WIDTH + $WELL_WIDTH ) - $BARRIER_WIDTH    # (DisplayUnit:nm)(DoNotShowInUserInterface)

$LEFT_BARRIER_WIDTH                       = 10            # Width of the Separate Confinement Heterostructure (SCH) (on the left) (DisplayUnit:nm)
$RIGHT_BARRIER_WIDTH                      = 10            # Width of the Separate Confinement Heterostructure (SCH) (on the right)(DisplayUnit:nm)

$FINE_GRID_SPACING                    = 0.1               # (DisplayUnit:nm)(ListOfValues:0.1, 0.5, 1.0)(DoNotShowInUserInterface)
$COARSE_GRID_SPACING                  = 1.0               # (DisplayUnit:nm)(ListOfValues:0.5, 1.0, 5.0)(DoNotShowInUserInterface)

# Materials and doping
$ALLOY_X = 0.8

Following this, we are able to generate the structure of the GaAs/Ga0.8Al0.2As superlattice under structure{}. The keywords array_x{} duplicate the structure in the x-direction to give us the number of wells required.

region{                                            # LEFT WALL
      x = [-$LEFT_BARRIER_WIDTH,   0]
      name     = "Ga(x)Al(1-x)As"                  # Ga0.8Al0.2As
      alloy_x  = $ALLOY_X


region{                                            # Barrier
      shift          = $BARRIER_WIDTH + $WELL_WIDTH
      max            = $NUMBER_OF_WELLS - 1
      x = [0,   $BARRIER_WIDTH]
      name     = "GaAs"
region{                                            # Quantum well
      shift          = $BARRIER_WIDTH + $WELL_WIDTH
      max            = $NUMBER_OF_WELLS - 2
      name     = "Ga(x)Al(1-x)As"
      alloy_x  = $ALLOY_X
region{                                            # RIGHT WALL
      name    = "Ga(x)Al(1-x)As"
      alloy_x = $ALLOY_X

Simulation Settings

Under quantum{}, we specify

quantum {
       name = "quantum_region"
       x = [                         - $LEFT_BARRIER_WIDTH, $SUPERLATTICE_WIDTH + $RIGHT_BARRIER_WIDTH ]                         # Schroedinger equation is solved only in region of LEFT WALL + SUPERLATTICE + RIGHT WALL

   #       x  = dirichlet                                  # Dirichlet boundary condition for the Schroedinger equation,     psi = 0
           x  = neumann                                    #   Neumann boundary condition for the Schroedinger equation, dpsi/dx = 0

           num_ev = 70
                                   # 70 eigenvalues have to be calculated

           num_ev = 250                                    # 150 eigenvalues have to be calculated

           num_ev = 70                                    # 70 eigenvalues have to be calculated

           num_ev = 100                                    # 100 eigenvalues have to be calculated

           max_num = 20                                    # only 20 eigenfunctions from 100 calculated are shown in output
           amplitudes = yes
           probabilities = yes

We want to obtain the energies and the amplitudes of the wavefunctions outputted.

Ground state energies

After generating the input file, we are able to run the simulation for a variable number of quantum wells using the variable sweep functionality in nextnanomat. One can go to “Template” on the tabs at the top, under “Sweep”, select the variable of interest and the range or list of values to iterate over. Click on “Create input file” at the bottom and run the simulations in the “Simulation” tab.

The following graphs were generated with nextnanopy. The reference potential energy used in Harrison’s book and nextnano++ is different. Thus, postprocessing was done in Python to match the reference energy levels.


Figure 1.20.1 Ground state energies plotted as a function of N. Convergence at higher number of wells is observed.

Wavefunction in a superlattice

The wavefunctions can also be plotted. The first example in Harrison’s book has the following parameters:

  • 10 wells

  • 4nm Ga0.8Al0.2As barrier

  • 4nm Ga0.8Al0.2As quantum well width

  • 20nm left and right Ga0.8Al0.2As walls


Figure 1.20.2 The wavefunction for a superlattice system

This figure is in agreement with Harrison’s result. It is observed that the system functions as a superlattice as the wavefunction in each well overlaps with the wavefunction of the adjacment wells.

Wavefunction in a multiple quantum well system

Harrison’s final figure uses the following parameters:

  • 4 wells

  • 10nm Ga0.6Al0.4As barriers

  • 10nm Ga0.6Al0.4As quantum wells

  • 10nm Ga0.6Al0.4As left and right walls


Figure 1.20.3 The wavefunction for a multiple quantum well system

This figure is also in good agreement with Harrison’s results. It is observed from the figure that this system functions as a multiple quantum well because the wavefunction reaches zero between the wells.

Please help us to improve our tutorial. Should you have any questions or comments, create a ticket here.