User Tools

Site Tools


nnm:faq

This is an old revision of the document!


Frequently asked questions

Can I take advantage of parallelization of the nextnano software on multi-core CPUs?

The short answer is:
Some numerical routines are parallelized which is done automatically. These are the numerical routines, e.g. for calculating the eigenvalues with a LAPACK solver (which itself uses BLAS).

The long answer is:
The nextnano software includes the Intel® Math Kernel Library (MKL). MKL includes the BLAS and LAPACK library routines for numerical operations. The MKL dynamically changes the number of threads.

  • nextnano++ - uses MKL (parallel version)
    The executables that are compiled with the Intel and Microsoft compilers use MKL (parallel version). The executable that is compiled with the GNU compiler (gcc/gfortran) uses the nonparallelized version of the BLAS and LAPACK source codes available from netlib.
  • nextnano³ - uses MKL (parallel version)
    The executables that are compiled with the Intel and NAG (64-bit) compilers use MKL (parallel version). The executables that are compiled with the GNU compiler (gfortran) and NAG (32-bit) use the nonparallelized version of the BLAS and LAPACK source codes available from netlib.
    There is a nextnano³ executable available that uses OpenMP parallelization for
    • CBR (parallelization with respect to energy grid)
    • NEGF (parallelization with respect to energy grid and further loops)
      number-of-MKL-threads = 8
    • Calculation of eigenstates for each $k_\parallel$ (1D and 2D simulations)
    • Matrix-vector products of numerical routines
      Note: Not all operations are thread-safe, e.g. one cannot combine $k_\parallel$ parallelization with the ARPACK eigenvalue solver.
      Only for this executable, the flag number-of-parallel-threads = 4 has an effect. The NEGF keyword also supports number-of-MKL-threads = 4 (0 means dynamic with is recommended) and MKL-set-dynamic = yes / no.
  • nextnano.QCL - uses MKL (parallel version)
  • nextnano.MSB - uses MKL (parallel version)

The NEGF algorithms (nextnano.QCL, nextnano.MSB, CBR) include matrix-matrix operations which are well parallelized within the BLAS routines.

If e.g. 4 nextnano simulations are running in parallel on a quad-core CPU, i.e. 4 nextnano executables are running simultaneously and each of them is using calls to the parallelized MKL library simultaneously, the total performance might be slower compared to running these simulations one after the other. In this case using a nextnano executable compiled with the serial version of the Intel MKL could be faster.

In fact, it strongly depends on your nextnano application (e.g. 1D vs. 3D simulation, LAPACK vs. ARPACK eigenvalue solver, …) if you benefit from parallelization or not. In general, the best parallelization can be obtained if you run several nextnano simulations in parallel. For instance, you could do parameter sweeps (e.g. sweep over quantum well width) using nextnanomat's Template feature, i.e. if you run 4 simulations simultaneously on a quad-core CPU, e.g. for 4 different quantum well widths.


I don't understand the $\bf{k} \cdot \bf{p}$ parameters

In the literature, there are two different notations used:

  • Dresselhaus–Kip–Kittel (DKK): $L$, $M$, $N^+$, $N^-$ (zinc blende); $L_1$, $L_2$, $M_1$, $M_2$, $M_3$, $N_1^+$, $N_1^-$, $N_2^+$, $N_2^-$ (wurtzite)
  • Luttinger parameters: $\gamma_1$, $\gamma_2$, $\gamma_3$, $\kappa$ (zinc blende); Rashba–Sheka–Pikus (RSP) parameters $A_1$, $A_2$, $A_3$, $A_4$, $A_5$, $A_6$, $A_7$ (wurtzite)

They are equivalent and can be converted into each other.

Some authors only use 3 parameters $L$, $M$, $N$ (or $\gamma_1$, $\gamma_2$, $\gamma_3$) which is fine for bulk semiconductors without magnetic field but not for heterostructures because the latter require 4 parameters, i.e. $N^+$, $N^-$ (instead of $N$ only) or $\kappa$. If these parameters are not known, they can be approximated.

There are different $\bf{k} \cdot \bf{p}$ parameters for

  • 6-band $\bf{k} \cdot \bf{p}$ and
  • 8-band $\bf{k} \cdot \bf{p}$.

The 8-band $\bf{k} \cdot \bf{p}$ parameters can be calculated from the 6-band parameters taking into account the temperature dependent band gap $E_{\rm gap}$ and the Kane parameter $E_{\rm P}$ (zinc blende). For wurtzite the parameters are $E_{\rm gap}$ and the Kane parameters $E_{{\rm P}1}$, $E_{{\rm P}2}$.

The 8-band Hamiltonian also needs the conduction band mass parameter $S$ (zinc blende) or $S_1$, $S_2$ (wurtzite). They can be calculated from the conduction band effective mass $m_{\rm c}$, the band gap $E_{\rm gap}$, the spin-orbit split-off energy $\Delta_{\rm so}$ and the Kane parameter $E_{\rm P}$ (zinc blende). For wurtzite the parameters are $m_{{\rm c},\parallel}$, $m_{{\rm c},\perp}$, $E_{\rm gap}$, $\Delta_{\rm so}$, the crystal-field split-off energy $\Delta_{\rm cr}$ and the Kane parameters $E_{{\rm P}1}$, $E_{{\rm P}2}$.

Finally there is the inversion asymmetry parameter $B$ for zinc blende. For wurtzite there are $B_1$, $B_2$, $B_3$.

For more details on these equations, please refer to Section 3.1 The multi-band $\bf{k} \cdot \bf{p}$ Schrödinger equation in the PhD thesis of S. Birner.

Spurious solutions

Some people rescale the 8-band $\bf{k} \cdot \bf{p}$ in order to avoid spurious solutions. The 8-band $\bf{k} \cdot \bf{p}$ parameters can be calculated from the 6-band parameters taking into account the band gap $E_{\rm gap}$, the spin-orbit split-off energy $\Delta_{\rm so}$ and the Kane parameter $E_{\rm P}$ (zinc blende). For wurtzite the parameters are $E_{\rm gap}$, the spin-orbit split-off energy $\Delta_{\rm so}$, the crystal-field split-off energy $\Delta_{\rm cr}$ and the Kane parameters $E_{{\rm P}1}$, $E_{{\rm P}2}$.

For more details, please refer to Section 3.2 Spurious solutions in the PhD thesis of S. Birner.

Specific implementation nextnano++

See section kp_8band{} in quantum{}.

Specific implementation nextnano³


How shall I cite the nextnano software in publications?

You can cite any of the following papers:

For simulations including electrolytes, you should cite:

For simulations that use the Contact Block Reduction method (CBR) (ballistic transport), you should cite any of the following papers:

nextnano.MSB software: For simulations that use the multi-scattering Büttiker (MSB) probe model (NEGF), you should cite:

nextnano.QCLsoftware: For simulations that use the NEGF method, you should cite:

For simulations that use the NEGF algorithm included in the nextnano³ software, you should cite any of these publications:

There might be further papers in the literature that are more suited to be cited in certain cases.


nnm/faq.1642085498.txt.gz · Last modified: 2022/01/13 15:51 by carola.burkl