I-V Curves


This tutorial is under construction

Input Files:
  • pn_junction_GaAs_ForwardBias_1D_nnp.in

  • pn_junction_GaAs_ForwardBias_2D_nnp.in

  • pn_junction_GaAs_ForwardBias_3D_nnp.in


This tutorial shows how to perform bias sweeps for creating I-V curves.

Most relevant keywords:
  • contacts{ ohmic{ bias steps } }

Output Files:



In the present tutorial we are concerned with the question of how to determine the I-V characteristics of a device. For this purpose, one side of the device is biased, and the simulation is repeatedly executed for a range of different voltages. nextnano++ offers a convenient way to perform this bias sweep. The computed current and voltage values are automatically collected in one file. In what follows, we simulate a simple pn-junction (see also pn-junction tutorial), to demonstrate the usage of the keywords which are relevant to trigger the bias sweep.

Input File

First, two contact regions at both ends of the structure are needed: one as source and the other as drain channel. The contact regions will allow us to bias the structure by applying an explicit voltage to either side of the device.



        line{ x = [ -$BOUNDARY, -$SIZE] }   # contact on left device boundary
        contact{ name = leftgate }          # contact name
        line{ x =[ $SIZE, $BOUNDARY] }      # contact on right device boundary
        contact{ name = rightgate }         # contact name


The actual properties of the contacts are specified inside the group contacts{}. There are several contact types available (e.g. ohmic{}, schottky{}, fermi{}, …), each imply different boundary conditions which are applied to the electrostatic potential \(\phi(x)\). In our case we choose ohmic{} contacts.

The voltage on the right side is set to zero (bias = 0 V) and the left contact is biased. In order to sweep over different voltages automatically, the bias for the left contact is to be specified as a vector with start and end value (bias = [\(\mathrm{V_{start}}\), \(\mathrm{V_{end}}\)]). The attribute steps specifies the total number of voltage values.

    ohmic{ # left contact
        name = leftgate                 # refer to region labeled 'leftgate'
        bias = [ 0 , 1.0]               # [V] start and end value of bias sweep
        steps = 20                      # number of sweep values
    ohmic{ # right contact
        name = rightgate                # refer to region labeled 'rightgate'
        bias = 0.0                      # [V] unbiased

For simulating charge carrier transport the Poisson and Current equation are solved self consistently. It is important to use proper convergence parameter inside the group run{}.


It is important to be aware that applying different voltages change the physical properties of the system, e.g. the electric field, and therefore it is not guaranteed that one set of convergence parameters are applicable to all voltages of the sweep.

    charge_neutral{}                          # initialize fermi levels in the contacts that charge neutrality is obtained

    # output settings

    mobility_model = minimos                  # mobility model
    recombination_model{                      # recombination model
        SRH       = yes
        Auger     = yes
        radiative = yes
    minimum_density = $MINIMUMDENSITY         # convergence parameter
    maximum_density = 1e14                    # convergence parameter

    # output settings

        iterations           = 1000      # max iteration
        current_repetitions  = 10        # current repetition
        alpha_fermi          = 0.7       # underrelaxation parameter
        residual_fermi       = 1e-12     # desired residual of fermi levels
        output_log           = yes       # information about convergence behavior


When the input file is executed, simulation results for each bias value are written in separate folders. These are located in the output folder of the simulation under \bias_xxxxx and contain e.g. band edges, electric fields, convergence behaviors, etc.

The output folder also contains a file with the combined current-voltage values. The corresponding file is labeled IV_characteristics.dat. The I-V curve, as presented in Figure, can be directly visualized in nextnanomat.


Figure Current density as function of applied bias (1d simulation)