7.2.1. Maximizing Envelope Overlaps for a Given Transition Energy

Input file



This tutorial aims to optimize the device studied in the 1D - InAs/In0.4Ga0.6Sb superlattice dispersion with 8-band k.p (type-II band alignment) tutorial.


The goal is to obtain a fundamental transition energy of 0.15 eV as well as to maximize the overlap between the wavefunction envelopes of the first conduction band c1 and the first valence band v1 using the nextnanoevo module. nextnanoevo is a tool that combines the nextnano++ software with genetic algorithms to optimize the design of semiconductor technologies.

To run an evolution with nextnanoevo, a default design is provided by the user as well as parameters to optimize along with a search space, that is to say both lower and upper limits for each of these parameters.

Default design

For this device, the parameters to optimize were the thicknesses of the two layers of InGaSb and InAs as well as the indium content of the InGaSb layer. Our default design had the following parameters and properties:

  • In(x)Ga(1-x)Sb: 1.5 nm

  • InAs: 3.98 nm

  • x: 0.4

  • fundamental transition energy: 0.10 eV

  • 1c1v wavefunction overlap: 0.497


And the defined search space was:

  • In(x)Ga(1-x)Sb: [0.1, 10] nm

  • InAs: [0.1, 10] nm

  • x: [0.01, 1]

Evolution process

To assess the performance of our candidate designs, we calculated the fundamental transition energy:

\[E_0 = |E_{c1} - E_{v1}|\]

and the overlap between the c1 and v1 wavefunction envelopes:

\[S\propto\sum_{\beta \in \{X,Y,Z\}} \int_LF^*_{v1,\beta}F_{v1,S} + \sum_{\alpha \in \{X,Y,Z\}} \int_LF_{v1,\alpha}F^*_{c1,S}\]

Then, the fitness of a candidate is calculated by its distance to the ideal solution, that is the solution with the desired energy and overlap (in our case 0.15 eV and 1, respectively):

\[d = \sqrt{(E_{obj.}-E_0)^2+(S_{obj.}-S)^2}\]

During the optimization process, this distance should decrease as we reach our optimized design which is the closest to the ideal solution.

Parameters of the optimization algorithm

There are different parameters for the evolution process which can be tuned by the user, the most important one being the number of generations. The bigger it is, the longer the simulation will take but the better the results will be. However, it is possible to reach the best result possible long before the last generation. For example, in this tutorial, the number of generations was 100 but the best design was obtained at generation 50.

Other parameters are specific the optimization algorithm - in this case NSGA-II (non-dominated sorting genetic algorithm) as developed by PyGMO - such as the crossover and mutation probabilities (for more information, visit the PyGMO documentation page).


  • alg = ‘nsga2’ (name of the algorithm)

  • gen = [100] (number of generations)

  • cr = 0.95 (crossover probability)

  • eta_c = 10. (distribution index for crossover)

  • m = 0.01 (mutation probability)

  • eta_m = 50 (distribution index for mutation)

  • seed = 876624 (seed for randomness)


Note: the evolution process is random so each run might give a different result. Our suggestion is to change the seed (input a random number) for every run to promote randomness.

Optimized design

At the end of our optimization run, the best design we obtained had the following parameters and properties:

  • In(x)Ga(1-x)Sb: 1.47 nm

  • InAs: 1.98 nm

  • x: 0.75

  • fundamental transition energy: 0.152 eV

  • 1c1v wavefunction overlap: 0.723



In conclusion, we successfully obtained a design with the desired fundamental transition energy of 0.15 eV showing promise for applications in long-wave infrared detectors. The overlap of the wavefunction envelopes was also increased thus improving the overall performance of the device. The overall fitness of the design went from 0.677 to 0.277 by changing the lengths of the two layers by a few nanometers as well as the indium content in the InGaSb layer.