User Tools

Site Tools


nnm:faq

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
nnm:faq [2022/01/11 19:31]
carola.burkl [How can I track how much memory is used during the simulations?]
— (current)
Line 1: Line 1:
-====== Frequently asked questions ====== 
- 
-New documentation for FAQ https://​www.nextnano.com/​manual/​faq/​index.html 
- 
- 
- 
- 
- 
- 
- 
- 
-==== How can I speed up my calculations with respect to CPU time? ==== 
- 
-The most obvious way is to reduce the **number of grid points** you are using. 
-For instance, for the following pn junction simulation, a grid spacing of **1 nm** was used (gray lines). 
-If one is using a coarse grid of only **10 nm**, the calculated values (squares) agree very well with the calculated values of the thin lines. 
-<figure pn_grid_1>​ 
-{{ :​nnm:​pn_junction_coarse_grid.jpg?​direct&​600 |}} 
-<​caption>​ Conduction and (heavy and light hole) valence band edges and Fermi level for a 300 nm long pn junction. 
-</​caption>​ 
-</​figure>​ 
-<figure pn_grid_2>​ 
-{{ :​nnm:​pn_carrier_concentration.jpg?​direct |}} 
-{{ :​nnm:​pn_junction_coarse_grid_densities.jpg?​direct&​600 |}} 
-<​caption>​ Hole (blue) and electron (red) densities of the pn junction in units of $10^{18} {\rm ~cm^{-3}}$. The gray lines are from simulations using a 1 nm grid spacing. The squares are from a simulation that uses only a 10 nm grid resolution. Note that the center coordinate of this plot is x=160 nm. The depletion width for the holes is around $w_{\rm p}\approx 50 {\rm ~nm}$, for the electrons it is $w_{\rm n}\approx 10 {\rm ~nm}$ which is of the order of the grid spacing. Even in this case, the calculated electron density is reasonably accurate. 
-</​caption>​ 
-</​figure>​ 
- 
-The difference in CPU time comes from the fact that for the 10 nm resolution the dimension of the matrix that is used for discretizing the Poisson equation is 30, while in the case for the 1 nm grid spacing it has the dimension 300. 
-The proper choice of an optimal grid spacing is very relevant for 2D and 3D simulations,​ as can be seen in the following. 
- 
-1D simulation (length of sample: x = 300 nm) 
-  * 1 nm grid spacing: dimension of Poisson matrix: $N=300$ 
-  * 10 nm grid spacing: dimension of Poisson matrix: $N=30$ 
- 
-2D simulation (length of sample: x = 300 nm, y = 300 nm) 
-  * 1 nm grid spacing: dimension of Poisson matrix: $N=300 \cdot 300 = 90,000$ 
-  * 10 nm grid spacing: dimension of Poisson matrix: $N=30 \cdot 30 = 900$ 
- 
-3D simulation (length of sample: x = 300 nm, y = 300 nm, z = 300 nm) 
-  * 1 nm grid spacing: dimension of Poisson matrix: $N=300 \cdot 300 \cdot 300 = 27,000,000$ 
-  * 10 nm grid spacing: dimension of Poisson matrix: $N=30 \cdot 30 \cdot 30 = 27,000$ 
- 
-If a quantum mechanical simulation is performed, the numerical effort of eigenvalue solvers increases with the number of grid points $N$ with order $O\left(N^2\right)$. 
- 
----- 
- 
- 
-==== What is the difference between "List view" and "Tree view"? ==== 
- 
-You can switch between these options using: 
-<​code>​ 
-Tools ==> Options ==> View ==> Output folder browser 
-</​code>​ 
-    
-''​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) 
- 
-{{ :​nnm:​view_listview.jpg?​direct |}} 
- 
-''​Tree view''​ 
- 
-{{ :​nnm:​view_treeview.jpg?​direct |}} 
- 
----- 
- 
-==== Can I pass additional command line arguments to the executable? ==== 
- 
-Yes, this is possible. 
-<​code>​ 
-Tools ==> Options ==> Expert settings ==> Command line 
-</​code>​ 
-For nextnano³, one could use for instance: 
-<​code>​ 
--database "D:\My folder\nextnano3\Syntax\my_database_nn3.in"​ 
-</​code>​ 
-<​code>​ 
--threads 4 
-</​code>​ 
- 
----- 
-==== 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: 
-<​code>​ 
-C:\Program Files (x86)\nextnano\2015_08_19\nextnano++\Syntax\database_nnp.in 
-</​code>​ 
-nextnano++ software: 
-<​code>​ 
-C:\Program Files (x86)\nextnano\2015_08_19\nextnano3\Syntax\database_nn3.in 
-</​code>​ 
-These files can be edited with any text editor such as [[http://​notepad-plus-plus.org|notepad++]] (available free of charge). 
- 
-More information on how to add materials to the 
-  * nextnano++ software can be found [[http://​www.nextnano.com/​nextnanoplus/​software_documentation/​database.htm|here]],​ 
-  * nextnano³ software can be found [[http://​www.nextnano.com/​nextnano3/​input_parser/​database/​docu/​How-to-add-material-parameters.htm|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 
-<​code>​ 
-C:​\Users\<​user name>​\Documents\nextnano\My Database\database_nnp_GaSb_modified.in 
-</​code>​ 
-You can then read in the new nextnano++ (or nextnano³) database specifying the location within nextnanomat. 
- 
-''​Tools''​ => ''​Options...''​ => ''​Material database''​ => ''​nextnano++ database file:''​ 
- 
-''​Tools''​ => ''​Options...''​ => ''​Material database''​ => ''​nextnano³ 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 [[http://​www.nextnano.com/​nextnanoplus/​software_documentation/​input_file/​database.htm|here]],​ 
-  * nextnano³ software can be found [[http://​www.nextnano.com/​nextnano3/​input_parser/​keywords/​binary-zb-default.htm|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<​sup>​(r)</​sup>​ [[http://​software.intel.com/​en-us/​intel-mkl| Math Kernel Library]] (MKL). 
-MKL includes the [[https://​en.wikipedia.org/​wiki/​Basic_Linear_Algebra_Subprograms|BLAS]] and [[https://​en.wikipedia.org/​wiki/​LAPACK|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 [[http://​www.netlib.org|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 [[http://​www.netlib.org|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 [[http://​www.nextnano.com/​downloads/​publications/​PhD_thesis_Stefan_Birner_TUM_2011_WSIBook.pdf|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 [[http://​www.nextnano.com/​downloads/​publications/​PhD_thesis_Stefan_Birner_TUM_2011_WSIBook.pdf|PhD thesis of S. Birner]]. 
- 
-=== Specific implementation nextnano++ === 
-See section ''​kp_8band{}''​ in [[http://​www.nextnano.com/​nextnanoplus/​software_documentation/​input_file/​quantum.htm|quantum{}]]. 
- 
-=== Specific implementation nextnano³ === 
-  * See section //Choice of $\bf{k} \cdot \bf{p}$ parameters//​ in [[http://​www.nextnano.com/​nextnano3/​input_parser/​keywords/​numeric-control.htm|$numeric-control]]. 
-  * See section //$\bf{k} \cdot \bf{p}$ parameters//​ in [[http://​www.nextnano.com/​nextnano3/​input_parser/​database/​docu/​How-to-add-material-parameters.htm|Which material parameters are used?]]. 
-  * See section //​Luttinger-parameters//​ in [[http://​www.nextnano.com/​nextnano3/​input_parser/​keywords/​binary-zb-default.htm|$binary-zb-default]]. 
- 
----- 
- 
-==== How shall I cite the nextnano software in publications?​ ==== 
- 
-You can cite any of the following papers: 
-  * [[http://​dx.doi.org/​10.1109/​TED.2007.902871|nextnano:​ General Purpose 3-D Simulations]]\\ S. Birner, T. Zibold, T. Andlauer, T. Kubis, M. Sabathil, A. Trellakis, P. Vogl \\ IEEE Trans. Electron Dev. **54**, 2137 (2007) 
-  * [[http://​dx.doi.org/​10.1007/​s10825-006-0005-x|The 3D nanometer device project nextnano: Concepts, methods, results]]\\ A. Trellakis, T. Zibold, T. Andlauer, S. Birner, R. K. Smith, R. Morschl, P. Vogl\\ J. Comput. Electron. **5**, 285 (2006) 
- 
-For simulations including electrolytes,​ you should cite: 
-  * [[http://​stacks.iop.org/​1742-6596/​107/​i=1/​a=012002|Theoretical model for the detection of charged proteins with a silicon-on-insulator sensor]]\\ S. Birner, C. Uhl, M. Bayer, P. Vogl\\ J. Phys.: Conf. Ser. **107**, 012002 (2008) ​ 
- 
-For simulations that use the Contact Block Reduction method (CBR) (ballistic transport), you should cite any of the following papers: 
-  * [[http://​dx.doi.org/​10.1063/​1.1560567|Efficient method for the calculation of ballistic quantum transport]]\\ D. Mamaluy, M. Sabathil, P. Vogl\\ J. Appl. Phys. **93**, 4628 (2003) 
-  * [[http://​dx.doi.org/​10.1007/​s10825-009-0293-z|Ballistic quantum transport using the contact block reduction (CBR) method - An introduction]]\\ S. Birner, C. Schindler, P. Greck, M. Sabathil, P. Vogl\\ J. Comput. Electron. **8**, 267 (2009) 
- 
-nextnano.MSB software: For simulations that use the multi-scattering Büttiker (MSB) probe model (NEGF), you should cite: 
-  * [[https://​doi.org/​10.1364/​OE.23.006587|Efficient method for the calculation of dissipative quantum transport in quantum cascade lasers]]\\ P. Greck, S. Birner, B. Huber, P. Vogl\\ Optics Express **23**, 6587 
- 
-nextnano.QCLsoftware:​ For simulations that use the NEGF method, you should cite: 
-  * [[http://​dx.doi.org/​10.1103/​PhysRevB.92.241306|Contrasting influence of charged impurities on transport and gain in terahertz quantum cascade lasers]]\\ T. Grange\\ Phys. Rev. B **92**, 241306(R) (2015) 
- 
-For simulations that use the NEGF algorithm included in the nextnano³ software, you should cite any of these publications:​ 
-  * [[http://​dx.doi.org/​10.1063/​1.4863665|Modeling techniques for quantum cascade lasers 
-]]\\ C. Jirauschek, T. Kubis\\ Appl. Phys. Rev. **1**, 011307 (2014) 
-  * [[https://​doi.org/​10.1103/​PhysRevB.79.195323|Theory of non-equilibrium quantum transport and energy dissipation in terahertz quantum cascade lasers]]\\ T. Kubis, C. Yeh, P. Vogl, A. Benz, G. Fasching, C. Deutsch\\ Phys. Rev. B **79**, 195323 (2009) 
- 
-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''​ 
- 
-=== 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 or a single-PC. 
- 
-The university and government institution licenses can be used on several computers simultaneously. 
-A university license includes 15 computers, a government institution license includes 10 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. 
- 
-If a user has a valid license, this license can also be installed on a private computer. 
- 
-=== Cluster computing === 
- 
-Any computer that has the free [[nnm:​cloud_computing|HTCondor software]] installed can be connected to a licensed computer. 
-There is no need to activate a license for these computers or install nextnano on them. 
-They can be used to execute a batch list of nextnano simulations. 
- 
----- 
- 
- 
  
nnm/faq.1641925869.txt.gz · Last modified: 2022/01/11 19:31 by carola.burkl