Introduction

ErwinJr2 is cross-platform software with a combination of:

  1. a C library for solving 1D quantum problems and the related thermal and electrical problems;

  2. a Python interface for the C library;

  3. a set of Python modules for loading, saving, organizing, solving quantum eigenstates in semiconductor quantum wells or superlattices, and calculating relevant physics parameters for these states, especially for quantum cascade laser (QCL) design purposes;

  4. 1D waveguide simulation optimized for QCL design purposes;

  5. a GUI front-end for the above Python modules.

The C library is based on ANSI-C and is tested using GCC (on Linux and macOS), clang (on macOS), and Visual Studio (on Windows). It also has optional OpenMP support for parallel computing if the environment supports it.

About QCLs

Quantum cascade lasers (QCLs) are semiconductor r lasers that emit light through inter-subband transitions. These lasers consist of periodic series of thin layers of various semiconductor materials which create one-dimensional multiple-quantum-well confinement. Compared to conventional semiconductor lasers which use a single material, QCLs have the advantage of both a higher output efficiency due to possible quantum cascades across different quantum wells and improved flexibility in tuning the frequencies.

Package Dependence

The C library-Python interface is based on ctypes in the standard Python library and numpy. The Python module for simulation adds scipy.constants requirement for scientific constants, scipy.sparse and scipy.linalg for matrix solvers, and uses json for saving and loading super-lattices (or quantum wells) information.

The GUI interface is based on PyQt5 and matplotlib.

Models and Formulas

The physics model and formulas used in the software are discussed in Physics Model and Formulas