# Software for semiconductor nanodevices

### nextnanomat

Software documentation

Operating System

nextnano.cloud

nnm:faq

### nextnanomat supports two different software packages, namely nextnano3 and nextnano++. What is the difference between them?

nextnano³ is written in Fortran. It has been developed at the Walter Schottky Institute from 1999 to 2010. nextnano++ is written in C++. It has been developed at the Walter Schottky Institute from 2004 to 2008. The software packages have been written by different people that were working at the Walter Schottky Institute of the Technische Universität München in the Theoretical Semiconductor Physics group of Prof. Peter Vogl. Essentially, both software packages cover the same physics and methods, namely

• the strain equation
• the Poisson equation
• the Schrödinger equation
• the drift-diffusion current equation.

• solar cells
• electrolytes
• graphene
• tight-binding (for bulk and one-dimensional superlattices)
• the self-consistent CBR method (1D, 2D and 3D)
• the NEGF method (1D only) which is particularly suited for quantum cascade lasers.

In contrast to nextnano++, nextnano³ is not able to

• treat the magnetic field within the $\mathbf{k}\cdot \mathbf{p}$ approach
• calculate the g tensor
• include quaternary materials.

There are some applications where it is irrelevant which software to use. In this case we recommend to use both. This has the advantage that the results of one software can be compared to the results of the other software in order to gain more confidence in them. For some applications, one software package should be preferred. Please contact support@nextnano.com in order to find out which software to choose for your particular application.

nextnano³ syntax

• $ character for the keywords: $regions ... $end_regions • % character for the variables: %QuantumWellWidth = 5.0 • ! character for comments: ! This is a comment. nextnano++ syntax • {} brackets for the keywords: structure{ ... } • $ character for the variables: $QuantumWellWidth = 5.0 • # character for comments: # This is a comment. ### Are there any video tutorials available? Yes, there are! Check out our Sway presentation. ### Can I convert nextnano³ input files into nextnano++ input files? Within nextnanomat, there is an experimental feature to convert a nextnano³ input file to a nextnano++ input file. How to use this automatic conversion: nextnanomat ==> Tools ==> Options ==> Expert settings ==> Show non-working and experimental features Then a new menu item will show up. Tools ==> Convert nextnano³ input file to nextnano++  When you use the automatic conversion of nextnano³ input file into nextnano++, you will find that it probably does not work. Note: You cannot convert nextnano³ input files that contain variables (This has been fixed in versions from 2017 on). This is not a problem, however. In the output folder there will be a file called *.in.macro. Here, variables have been replaced. This is a file that you can convert to nextnano++. If you save and run the nextnano++ input file that has been converted and that has the suffix _nnp.in, very likely an error appears indicating which line to change. Then some manual adjustments are needed. The online documentation should be of help in these cases. Please contact support@nextnano.com if you cannot figure out what to change. ### How do I produce 1D slices through the 2D plots in the GUI? 1. Visualize horizontal and vertical slices: Menu ViewShow Horizontal and Vertical Slices (or click on appropriate button) 2. Right-click on 2D graph, Export horizontal slice (or Export vertical slice) as data (.dat) (or as image (*.png). ### Is there a way to produce a 1D (or 2D) plot of some result, for example the probability density$\psi^2(x)$with the conduction band edge superimposed? In other words, can the GUI show multiple plots at once? Yes, this is possible. Two output files can be shown at once. 1. Visualize first data set. Menu ViewKeep current graph as overlay (or click on appropriate button) 2. Visualize second data set. You can unselect show overlay if you only want to visualize the second data set. If you need more graphs to be shown simultaneously, you could add additional columns (with data you want to visualize) into an ASCII file. This feature works differently in versions 2016 or later. ### How can I track how much memory is used during the simulations? Tools ==> Options ==> Expert settings ==> Include memory usage in log file (units: MB) ### What is the difference between "List view" and "Tree view"? You can switch between these options using: Tools ==> Options ==> View ==> Output folder browser List view is the default. Tree view is convenient if you do a voltage sweep with nextnano++ as for each voltage, one has a different output folder labeled sweep_001/, or if your simulation output folders are randomly distributed over your hard disk. The following screenshots highlight the differences. List view (default) Tree view ### Can I pass additional command line arguments to the executable? Yes, this is possible. Tools ==> Options ==> Expert settings ==> Command line For nextnano³, one could use for instance: -database "D:\My folder\nextnano3\Syntax\my_database_nn3.in" -threads 4 ### Can I add new materials to the database? Sure! #### Option 1 The material parameters are contained in ASCII text files. You can find them in the installation folder: nextnano³ software: C:\Program Files (x86)\nextnano\2015_08_19\nextnano++\Syntax\database_nnp.in nextnano++ software: C:\Program Files (x86)\nextnano\2015_08_19\nextnano3\Syntax\database_nn3.in These files can be edited with any text editor such as notepad++ (available free of charge). More information on how to add materials to the • nextnano++ software can be found here, • nextnano³ software can be found here. It is best if you search for a material such as GaSb and then simply use Copy & Paste to reproduce all relevant entries and then you rename GaSb to something like GaSb_test. Finally, you adjust the necessary material parameters that you need. In most cases, you don't have to replace all material parameters. It is only necessary to replace the ones that you need in the simulation. It is a good idea to save the new database to a new location such as C:\Users\<user name>\Documents\nextnano\My Database\database_nnp_GaSb_modified.in You can then read in the new nextnano++ (or nextnano³) database specifying the location within nextnanomat. ToolsOptions…Material databasenextnano++ database file: ToolsOptions…Material databasenextnano³ database file: #### Option 2 A quicker way is the following. You can overwrite certain material parameters in the input file rather than entirely defining new materials. For instance if you need HfO2, you could use the material SiO2 and just change the static dielectric constant and conduction and valence band edges or any other relevant parameters that you need. So basically, you are using the material SiO2 a modified static dielectric constant and band edges. More information on how to add materials to the • nextnano++ software can be found here, • nextnano³ software can be found here. Please note that we treat all materials to be either of the crystal structure • zinc blende (including diamond type) or • wurtzite. ### 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{}.

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

### Licensing

There are three types of licenses:

• University license
• Government institution license
• Company license

The license can be used on several computers simultaneously. If a user has a valid license, this license can also be installed on private computers.

The license is an annual license. After the license has expired, no further simulations can be done. Visualization of previous results of calculations is still possible.

#### How many people can use the software simultaneously?

• A University license and a Government institution license are issued to a particular research group (e.g. a professor or group leader) and can be used by all group members simultaneously.
• A Company license applies to a single and named user.

### Hardware requirements for nextnano? I want to buy a new computer. What shall I buy?

The nextnano software even runs on Laptops. Therefore, for most typical simulations, you don't have to buy a special computer. Still, you might have CPU-intensive calculations which require more horsepower. In this case, the following configurations or their equivalent will give excellent performance for about 1.000 € or less:

CPU+RAM: Intel i7-8700, 6 cores, 3.2 GHz (Coffee Lake) with 32 GB DDR4-2666 RAM, or Intel i7-7700, 4 cores, 3.6 GHz (Kaby Lake) with 32 GB DDR4-2400 RAM.

Note: These CPUs can be bought as boxed (including a default cooler) or tray (without default cooler). However, both CPUs are too noisy with the default cooler in the boxed variant when running simulations. We recommend buying a large additional CPU cooler.

Main board: Any compatible motherboard will work, please select according to your extensibility needs, required peripheral ports, etc. The integrated graphics on the mainboard usually suffices for office use and development. But be prepared to add a dedicated graphics card for CAD, multi-monitor setups and the likes.

Storage: E.g. a 500 GB SSD for the OS and programs, together with a 2 TB HD for simulation data.

Power supply: E.g. 500 W to allow future upgrades such as a dedicated graphics card.

Computer case: Select according to available space, future extensibility, and aesthetic desire. Silent cases are recommended for reducing noise. Please make sure that there is enough clearance to fit your CPU cooler and large additional components such as graphics cards inside.

Recommended BIOS settings (if available)

  CPU: Hyperthreading ⇒ Enabled (accelerates compilation)
CPU: VT-d ⇒ Enabled (accelerates virtualization)
CPU: Hardware prefetch ⇒ Enabled (accelerates linear memory accesses)
RAM: XMP ⇒ enabled (if disabled, RAM much slower than maximum supported speed,
e.g. 2166 instead of maximum supported 2666 (DDR4-2666))

(For the experts: If you are planning to have your PC assembled from components, please use tools such as prime95, Intel Extreme Tuning Utility, and/or Intel Linpack to test system stability and adequate cooling under extended heavy load.)

Our latest computers have the following configurations:

i7-8700 (purchased 2018-Oct: ~1.000 EUR, purchased 2018-Dec: ~900 EUR)

• CPU: Intel i7-8700, 6 cores, 3.2 GHz (Coffee Lake) (a large additional CPU cooler is recommended, see comments above)
• CPU cooler, e.g. be quiet! Pure Rock
• RAM: 32 GB (DDR4-2666), e.g. Corsair Vengeance
• Storage: 500 GB SDD + 3 TB HDD
• Motherboard with integrated graphics processing unit, e.g. ASRock Z370M-ITX/ac (CPU socket 1151)
• Power supply: e.g. be quiet! Pure Power 10-CM or 11, 500 W
• Computer case: Midi Tower, e.g. Zalman R1 or be quiet! Pure Base 600

i7-7700 (purchased 2018-Jan, ~900 EUR)

• CPU: Intel i7-7700, 4 cores, 3.6 GHz (Kaby Lake) (a large additional CPU cooler is recommended, see comments above)
• CPU cooler, e.g. be quiet! Pure Rock Slim
• RAM: 32 GB (DDR-2400), e.g. Corsair Vengeance
• Storage: 256 GB SDD + 2 TB HDD
• Motherboard with integrated graphics processing unit, e.g. ASRock Z270M-ITX/ac
• Power supply: e.g. Pure Power 10, 500 W ATX 2
• Computer case: Midi Tower, e.g. Zalman R1