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 input file 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.
Structure¶
The structure consists of N repeats of 4 nm GaAs wells and 4 nm Ga0.8Al0.2As quantum wells. This superlattice structure is sandwiched between 20 nm 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
line{
x = [-$LEFT_BARRIER_WIDTH, 0]
}
ternary_constant{
name = "Ga(x)Al(1-x)As" # Ga0.8Al0.2As
alloy_x = $ALLOY_X
}
}
# SUPERLATTICE
region{ # Barrier
array_x{
shift = $BARRIER_WIDTH + $WELL_WIDTH
max = $NUMBER_OF_WELLS - 1
}
line{
x = [0, $BARRIER_WIDTH]
}
binary{
name = "GaAs"
}
}
region{ # Quantum well
array_x{
shift = $BARRIER_WIDTH + $WELL_WIDTH
max = $NUMBER_OF_WELLS - 2
}
line{
x = [$BARRIER_WIDTH, $BARRIER_WIDTH + $WELL_WIDTH]
}
ternary_constant{
name = "Ga(x)Al(1-x)As"
alloy_x = $ALLOY_X
}
}
region{ # RIGHT WALL
line{
x = [$SUPERLATTICE_WIDTH, $SUPERLATTICE_WIDTH + $RIGHT_BARRIER_WIDTH]
}
ternary_constant{
name = "Ga(x)Al(1-x)As"
alloy_x = $ALLOY_X
}
}
Simulation Settings¶
Under quantum{ }
, we specify
quantum {
region{
name = "quantum_region"
x = [ - $LEFT_BARRIER_WIDTH, $SUPERLATTICE_WIDTH + $RIGHT_BARRIER_WIDTH ] # Schrödinger equation is solved only in region of LEFT WALL + SUPERLATTICE + RIGHT WALL
boundary{
# x = dirichlet # Dirichlet boundary condition for the Schrödinger equation, psi = 0
x = neumann # Neumann boundary condition for the Schrödinger equation, dpsi/dx = 0
}
Gamma{
num_ev = 70
# 70 eigenvalues have to be calculated
}
HH{
num_ev = 250 # 150 eigenvalues have to be calculated
}
LH{
num_ev = 70 # 70 eigenvalues have to be calculated
}
SO{
num_ev = 100 # 100 eigenvalues have to be calculated
}
output_wavefunctions{
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 wave functions 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, post-processing was done in Python to match the reference energy levels.
Wave function in a superlattice¶
The wave functions can also be plotted. The first example in Harrison’s book has the following parameters:
10 wells
4 nm Ga0.8Al0.2As barrier
4 nm Ga0.8Al0.2As quantum well width
20 nm left and right Ga0.8Al0.2As walls
This figure is in agreement with Harrison’s result. It is observed that the system functions as a superlattice as the wave function in each well overlaps with the wave function of the adjacent wells.
Wave function in a multiple quantum well system¶
Harrison’s final figure uses the following parameters:
4 wells
10 nm Ga0.6Al0.4As barriers
10 nm Ga0.6Al0.4As quantum wells
10 nm Ga0.6Al0.4As left and right walls
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 wave function reaches zero between the wells.
Last update: nn/nn/nnnn