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 runsimicon.

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 overlay 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 add icon at the top right corner of nextnanomat.

Following which, select export 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 savetodisk icon and name the file, and save it.

../../_images/basics1_bandedges.png

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.