[ Home ] [ News ] [ Contact ] [ Search ] simulation-flow-control

 ==> Download Software
 nextnano³ documentation

 Copyright notice
 About us
 Useful Links
 Publications
 * password protected

 

 
Up
 

Simulation flow control

Controls the simulation flow and tells the program how to calculate things. More details can be found in the glossary. Also controls the read in of raw-data. This is data from former calculations which is stored unformatted with the keyword :$output-raw-data. Since the names of the files are fixed, you have to provide the directory name only.

 

!---------------------------------------------------------!
$simulation-flow-control                         required !
 flow-scheme                   integer           required !
 strain-calculation            character         required !
 
raw-directory-in              character         optional !
 raw-potential-in              character         optional !
 raw-fermi-levels-in           character         optional !
(previously called: raw-fermi-in = yes)
 raw-kp-eigenstates-in         character         optional !
 raw-sweep-index-in            integer           optional !
$end_simulation-flow-control                     required !

!---------------------------------------------------------!

 

Syntax

flow-scheme = 0
          
 = 1
          
 = 2    !
recommended
          
 = 3
          
 = 4
          
 = 13  
(for temperature sweep T)
          
 = 130 
(for temperature sweep T)         - self-consistent Poisson-Schrödinger
          
 = 14  
(for temperature sweep 1000/T)
          
 = 140 
(for temperature sweep 1000/T) - self-consistent Poisson-Schrödinger
          
 = 20  
(for electric field)
          
 = 21  
(for electric field)
          
 = 30  
(for electrolyte only)
          
 = 32  
(for electrolyte only)
            = 33   (for electrolyte only, i.e. for buffer only)
            = 40   (for NEGF only)
            = 50   (for gas sensors only)
            = 100  (to output all material parameters)

 

flow-scheme = 0

This flow-scheme does nothing special, i.e. inside the main program, the flow-scheme part is skipped
This flow-scheme is useful if you want to e.g. calculate strain only.
The classical (i.e. no quantum mechanics is taken into account) nonlinear Poisson equation is solved within this flow-scheme unless you use:
 $numeric-control
  ...
  zero-potential = yes

flow-scheme = 1

1) Self-consistent solution of Poisson and drift-diffusion current equations.
    The Poisson and current equations are solved self-consistently. (Note: No quantum mechanics!)
2) Calculate nonlinear Poisson equation quantum mechanically,
    i.e. self-consistent Poisson-Schrödinger equations.

If no current cluster is specified, only the nonlinear Poisson and the Schrödinger equations are solved self-consistently.
If no quantum cluster is specified, only the nonlinear Poisson and the current equations are solved self-consistently.
 

flow-scheme = ! recommended (because this flow-scheme is very general)

Self-consistent solution of Poisson, Schrödinger and drift-diffusion current equations.
First, the nonlinear Poisson-Schrödinger equation is solved self-consistently to get a start value for the electrostatic potential,
then the Poisson, Schrödinger and current equations are solved self-consistently.
If no current    cluster is specified (or current   cluster is deactivated), only the nonlinear Poisson and the Schrödinger equations are solved self-consistently.
If no quantum cluster is specified (or quantum cluster is deactivated), only the nonlinear Poisson and the current         equations are solved self-consistently.
If neither a current cluster or quantum cluster is specified (and both of them are deactivated), only the nonlinear Poisson equation is solved.

flow-scheme = ! recommended (because this flow-scheme is very useful if one want to calculate the eigenstates of an arbitrary potential profile)

First:
The classical (i.e. no quantum mechanics is taken into account) nonlinear Poisson equation is solved within this flow-scheme unless you use:
 $numeric-control
  ...
  zero-potential = yes

Then:
Solve Schrödinger equations, i.e. calculate eigenstates and wave functions (if a quantum cluster is specified and not deactivated) for an arbitrary potential profile.
Note: This is without self-consistency of Poisson and Schrödinger equations. This is justifiable if there is no charge redistribution, e.g. in the absence of doping.
 

flow-scheme = !

Self-consistent solution of Poisson and drift-diffusion current equations.
First, the nonlinear Poisson equation is solved to get a start value for the electrostatic potential,
then the Poisson and current equations are solved self-consistently.
If no current cluster is specified (or current cluster is deactivated), only the nonlinear Poisson equation is solved.
Note: No quantum mechanics! Only classical density! Equivalent to flow-scheme = 2 if no quantum cluster is defined or if quantum cluster is deactivated.
 

flow-scheme = 13   (for temperature sweep T)
          
 = 130 
(for temperature sweep T)         - self-consistent Poisson-Schrödinger
          
 = 14  
(for temperature sweep 1000/T)
          
 = 140 
(for temperature sweep 1000/T) - self-consistent Poisson-Schrödinger

 

Electric field

flow-scheme = 20

1. Calculate electrostatic potential, i.e. solve Poisson equation.
2. Apply electric field as specified in input file ($electric-field).
3. Calculate eigenstates and wave functions by solving Schrödinger's equation.

(The electrostatic potential is calculated as specified in input file. Then an electric field is added to it. Finally the eigenstates are calculated.)


Same as flow-scheme = 21 but with solving Poisson equation
 

flow-scheme = 21

1. Do not calculate electrostatic potential, i.e. do not solve Poisson equation.
2. Apply electric field as specified in input file ($electric-field).
3. Calculate eigenstates and wave functions by solving Schrödinger's equation (either single-band or k.p).

(The electrostatic potential is assumed to be constant. Then an electric field is added to it. If an electric field is applied, the potential has linear slope. Finally the eigenstates are calculated.)

Same as flow-scheme = 20 but without solving Poisson equation
 

 

flow-scheme = 30 (for electrolyte only including buffers, ...)

 1. Electrolyte: Solve Poisson-Boltzmann equation for the specified pH value (optional: sweep over pH value).
 2. If a site binding model is specified we output the interface density and
     the interface potential for the pH value into files
 
 band_struc1/potential_for_all_pH1D.dat
 
 InterfacePotentialDensity_vs_pH1D.dat.
 

flow-scheme = 32 (for electrolyte only including buffers, ...)

 1. If a site binding model is specified we calculate the interface charge for different interface potentials.
     Here we loop over the potentials from PotentialMin to PotentialMax in steps of PotentialStep.
   InterfaceDensity_vs_Potential1D.dat.

 

flow-scheme = 33 (for electrolyte only, special feature for buffers.)

should be used together with zero-potential = yes
!-------------------------------------------------------!
! This flow-scheme is for the buffer only.
!-------------------------------------------------------!
! Loop over pH values.
! ====================
! 1. Electrolyte
! 2. Output concentration of buffer ions
!-------------------------------------------------------!

 

flow-scheme = 40  (for NEGF (nonequilibrium Green's function) only)

flow-scheme = 50  (for gas sensors only)

flow-scheme = 100 (to output all material parameters)

Note: A special input file is needed for this purpose: 1Dmaterial_parameters.in

 

 


raw-directory-in      = raw_data1/
                
     = your_directory/
                
     = "H:\My Documents\My nextnano inputfiles\input file name\raw_data1\"

Directory containing the raw data files from former calculations. Do not forget the slash (\ for DOS, / for UNIX).
(See also $output-raw-data).

 

raw-potential-in      = yes / no

Flag whether to read in unformatted electrostatic potential data.
(See also $output-raw-data).

 

raw-fermi-levels-in   = yes / no       !

Flag whether to read in unformatted electron and hole Fermi level data.
(See also $output-raw-data).

 

raw-kp-eigenstates-in = yes / no

Flag whether to read in unformatted electron and/or hole k.p eigenstates and wave functions.
(See also $output-raw-data).

 

strain-calculation    = homogeneous-strain     ! 1D: Not recommended for 2D/3D but still useful for certain applications (e.g. a 1D well (along the x direction) that is homogeneous in the (y,z) plane).
                      = strain-minimization    !
2D/3D only so far
                      = raw-strain-in          !
very useful for 2D and 3D to save CPU time
                      = zero-strain-amorphous  !
No strain at all.
                      = hydrostatic-strain     !
Corresponds to a hydrostatic pressure from all three directions (see Tutorial "Strain:
                                               ! Band shifts and splittings due to conduction and valence band deformation potentials")

Specify whether to calculate the strain
- pseudomorphically (appropriate in 1D and for homogeneous layers only -> homogeneous-strain),
- use the
strain-minimization option (2D/3D) to minimize the elastic energy,
- read it in from the raw data of previous calculations (
raw-strain-in)
- don't use strain at all (
zero-strain-amorphous). Here, the strain tensor is set to zero.

If using homogeneous-strain, you will have to supply a substrate material that must be specified under the keyword $domain-coordinates. You should be careful when using homogeneous-strain in 2D or 3D simulations (only appropriate for certain types of layers).

If using
strain-minimization you must include the keyword $strain-minimization-model to specify substrate (i.e. the unstrained region) and boundary conditions.
The minimization of the elastic energy is needed to find the equilibrium positions of the 'atoms'. With 'atoms' we mean 'material grid points' of our discretized grid. It does not make sense to talk about 'atoms' as our strain model is a continuum elasticity model and not an atomistic approach like the valence force field (VFF) model for instance.

If using
raw-strain-in you should have a brief look at the Tip "How to read in strain data from previous simulations" described below.
(See also $output-raw-data).

homogeneous-strain (pseudomorphic strain): The deformation of the unit cell of the strained layer is fixed along two spatial directions with respect to the substrate material (pseudomorphic growth condition). Example: In a 1D simulation along the x direction the deformations of the units cell of the strained layer are fixed in the (y,z) plane. The unit cell is allowed to deform along the x direction only.
strain-minimization (3D simulation): The unit cell of the strained materials are allowed to deform along all three spatial directions in order to minimize the elastic energy (e.g. quantum dots) with respect to a special region in the device called the "substrate" which is unstrained.
strain-minimization (2D simulation in the (x,y) plane): The unit cell of the strained materials are allowed to deform along all two spatial directions (x and y) in order to minimize the elastic energy (e.g. quantum wires)  with respect to a special region in the device called the "substrate" which is unstrained. The strain (or unit cell deformation) along the z direction is fixed due to the "pseudomorphic growth condition" similar to the homogeneous-strain case.

raw-sweep-index-in = 0
                   = 1
                   = 2
With this specifier it is possible to read in raw data from a specific voltage sweep index (voltage step).
(See also $output-raw-data).

 

Tip: How to read in strain data from previous simulations.

  1. In Input file, specify to write out strain data in raw data format.
    !-----------------------------------------!
    $output-raw-data                          !
    More Information: $output-raw-data
     destination-directory    = raw_data1/    !
     strain                   = yes           !
    $end_output-raw-data                      !
    !-----------------------------------------!
    After the strain has been calculated, the data is immediately written to the file strain_store_eps3D.raw (or *2D.raw or *1D.raw for a 2D or 1D simulation).
  2. In the next simulation run you can specify to read in this strain data. Note that the simulated devices must have an identical grid, of couse.
    !-----------------------------------------!
    $simulation-flow-control                  !
     flow-scheme              = 2             !
    (any integer number is possible)
     raw-directory-in         = raw_data1/    !
     strain-calculation       = raw-strain-in !
    $end_simulation-flow-control              !

    !-----------------------------------------!

(See also $output-raw-data).

   
Last modified: 27-Jan-2012