1.1. Basic Tutorial 1 for nextnano++¶
This tutorial is the first in an introductory series where we will guide you into creating your first nextnano++ input file for performing simulations. The goal of this tutorial is to create a basic 1D structure with one material grown on top of another.
The keyword list that you may find helpful can be downloaded here
.
Specifying global{}
parameters¶
global{ # required
simulate1D{}
substrate{ name = "GaAs" } # required
temperature = 300 # required
crystal_zb{
x_hkl = [1, 0, 0]
y_hkl = [0, 1, 0]
}
}
The above code block specifies the global parameters used in the simulation. simulate1D{}
is used because this is a 1D structure. We then specify the substrate with substrate{ name = "GaAs"}
.
\(\text{GaAs}\) exists in nextnano++’s database, so the default values are used. To change parameters of the compound, refer to the guide here.
We then set the temperature to \(300\text{K}\) with temperature{}
. By default, this is a temperature dependent bandgap, with the correction calculated with the Varshni formula. To use a temperature independent bandgap, one can specify temperature_dependent_bandgap = no
.
Using crystal_zb{}
, we specify the orientation of the crystal coordinate system with respect to the simulation coordinate system. For zinc blende materials, we specify the \((hkl)\) plane perpendicular to the \(x\) and \(y\) directions. The \(z\) direction is determined automatically here, so only x_hkl
and y_hkl
are needed.
Specifying the compuational grid{}
¶
grid{ # required
xgrid{ line{ pos = 0.0 spacing = 0.1}
line{ pos = 50.0 spacing = 0.5} }
}
The block for grid{}
has two functions. It specifies the device size so at least two paremeters are required, and it also specifies the grid over which the computation is run over.
The block above tells us that the device length ranges from \(x=0\space\text{nm}\) to \(x=50\space\text{nm}\). The \(x=\space\text{nm}\) point has a spacing of \(0.1\space\text{nm}\) between grid lines, and the \(x=50\space\text{nm}\) has a spacing of \(0.5\space\text{nm}\) between points. An exponential grid is interpolated between the two lines as the grid specified is not equidistant. One can view the grid spacing in the visualisation of output, which we will return to later.
Specifying the structure{}
of the device¶
structure{ # required
region{
binary{ name = GaAs }
contact{ name = whatever }
everywhere{}
}
region{
binary{ name = InAs }
line{ x = [ 20.0, 30.0 ] }
}
}
This section specifies the structure of the device. As a rule, it is important to remember that newly-defined regions overwrite any older region that is overlapped.
The first region is specified to be \(\text{GaAs}\) within binary{}
and it is given the dummy contact name whatever
. Note that this does not specify the type of contact (e.g Schottky, Fermi, Ohmic etc.) but the name we assign the contact. This is useful when we want to specify parameters of the contact under the grouping contacts{}
.
The second region is specified to be \(\text{InAs}\) and is only from \(20\space\text{nm}\) to \(30\space\text{nm}\).
Specifying contact{}
parameters¶
contacts{
fermi{ name = whatever bias = 0.0 }
}
As mentioned earlier, we can specify the parameters of the contact using the name we have given it. In this tutorial, we give the whatever
contact a bias
of \(0\text{V}\).
Solving parameters¶
classical{ # required
Gamma{} HH{} LH{}
output_bandedges{ averaged = no} # necessary to see anything related to the design
}
We indicate that we want the Gamma, heavy hole and light hole bands solved with Gamma{}
, HH{}
, and LH{}
respectively. We also output the bandedges with the command output_bandedges
.
Running the simulation¶
To run the simulation file, we can press F8 on the keyboard, or click the icon .
Viewing output¶
We can view the output of the simulation under the “Output” tab at the top of nextnanomat. Navigate to the folder bias_00000
. Click on bandedges.dat
. A figure of the Gamma, LH and HH band edges should be visible.
As seen on the x-axis, the bandedge is different from \(20\space\text{nm}\) to \(30\space\text{nm}\), which is where we specified \(InAs\) to be.
We can view the grid points used in the simulation by checking the box “Show grid” in the menu on the left of nextnanomat.
To export the figure as a .plt
file, click on the icon at the top right corner.
Then click on bandedges.dat
. Hold down shift
on the keyboard and click the bandedges of interest. In this tutorial, Gamma [eV], HH [eV] and LH [eV] are chosen from the bottom right panel. Press a
on the keyboard or the icon at the top right corner of nextnanomat.
Following which, select icon at the top and choose the option “Create and Open Gnuplot File (*.plt) from Items of Overlay”. A Gnuplot window should pop up. Click the
icon and name the file, and save it.

The above figure shows what one should see as output.
Please help us to improve our tutorial. Should you have any questions or comments, create a ticket here.