nextnano.com
==> nextnano Documentation (New)

nextnano++ software

     

Up

This is the old documentation. Here's the link to the new documentation.

output{}

Specification of options for the visualization of the data with certain programs like

 

output{

   directory = "../output/quantum_well_1D"  #
path for output files

   mandatory_path = no            #
(default = no)
                  = yes           #
If mandatory_path is set to yes, the (relative or absolute) output directory specified in output{ directory = ... } is used,
                                  # and any directory specified in the command line (as e.g. done by nextnanomat) is ignored.
                                  # If is set to no, the directory specified in the command line (as e.g. done by nextnanomat) is used as base path,
                                  # to which a relative path specified in directory then is appended. On the other hand, an absolute path specified in directory is ignored.
                                  # In all cases, a subdirectory named as the input file is further appended to the output path,
                                  # unless -n or --noautooutdir is set as command line option (nextnanomat sets this option automatically).
                                  # Also note that the location of the log (*.log) file is not affected by these settings.
                                  # Warning: Please make sure that a mandatory output directory is set such that no important files (or the input directory) are overwritten.
                                  # Be especially careful when accepting input files from others, and do not run simulations using administrative privileges.


  
Output file format for 2D and 3D simulations

   format2D  = Origin             #
Origin file format (Origin steering files *.plt, data files *.dat)
             = VTKAscii           #
VTK XML ASCII format (.vtr, r = rectilinear grid)
             = VTKAscii_AVSBinary #
VTK XML ASCII format (.vtr, r = rectilinear grid) + AvsBinary
             = VTKAscii_AVSAscii  #
VTK XML ASCII format (.vtr, r = rectilinear grid) + AvsAscii
             = AvsBinary          #
AVS/Express file format (AVS steering files *.v, *.fld, *.coord, data files *.dat) - data files in binary format
             = AvsAscii           #
AVS/Express file format (AVS steering files *.v, *.fld, *.coord, data files *.dat) - data files in ASCII format
             = AvsBinary_one_file #
AVS/Express file format - header (ASCII), coordinates and variables (both binary) are written into a single file (default)
             = AvsAscii_one_file  #
AVS/Express file format - header, coordinates and variables are written into a single file

   format3D  = VTKAscii           #
see above (same as format2D)
             = VTKAscii_AVSBinary #
see above (same as format2D)
             = VTKAscii_AVSAscii  #
see above (same as format2D)
             = AvsBinary          #
see above (same as format2D)
             = AvsAscii           #
see above (same as format2D)
             = AvsBinary_one_file # see above (same as format2D)
             = AvsAscii_one_file  #
see above (same as format2D)

   ==> More details on VTK format
   ==> More details on AVS format

 

   Output options for 2D and 3D simulations
   Ranges in sections may contain only one grid point. If no point is found inside the range interval, as e.g. for zero-length intervals such as [50.1, 50.1], the closest grid point is used.

   section{                   #
output a smaller section of the simulation area (zoom)
      name = "part"           #
name of section enters file name

      range_x = [0, 20]       #
range in x direction [nm]
      range_y = [-5, 5]       #
range in y direction [nm] (2D or 3D only)
      range_z = [2, 10]       #
range in z direction [nm] (3D only)
   }

   section1D{                 #
output a 1D section of the simulation area (1D slice) (2D or 3D only)
      name = "x"              #
name of section enters file name

      x = 10.0                #
1D slice at x = 10 nm
      y = 10.0                #
1D slice at y = 10 nm
      z = 10.0                #
1D slice at z = 10 nm (3D only)

      range_x = [0, 20]       #
(optional) range in x direction [nm]
      range_y = [-5, 5]       #
(optional) range in y direction [nm]
      range_z = [2, 10]       #
(optional) range in z direction [nm] (3D only)
   }

  
2D usage:
   - x
, range_y or             # 1D slice at x = ... nm within the range from y = ... nm to y = ... nm.
   - y
, range_x                # 1D slice at y = ... nm within the range from x = ... nm to x = ... nm.

  
3D usage:
   - x
, y, range_z or           # 1D slice at x = ... nm and y = ... nm within the range from z = ... nm to z = ... nm.
   - x
, z, range_y or           # 1D slice at x = ... nm and z = ... nm within the range from y = ... nm to y = ... nm.
   - y
, z, range_x              # 1D slice at y = ... nm and z = ... nm within the range from x = ... nm to x = ... nm.

  
# Note: If range is left out, the section extends over the whole simulation area


   section2D{                 #
output a 2D section of the simulation area (2D slice) (3D only)
      name = "center"         #
name of section enters file name

      x = 10.0                #
2D slice at x = 10 nm
      y = 20.0                #
2D slice at y = 20 nm
      z = 10.0                #
2D slice at z = 10 nm

      range_x = [0, 20]       #
(optional) range in x direction [nm]
      range_y = [-5, 5]       #
(optional) range in y direction [nm]
      range_z = [2, 10]       #
(optional) range in z direction [nm]
   }
 
  
3D usage:
   - x
, range_y, range_z or     # 2D slice at x = ... nm within the range from y = ... nm to y = ... nm and from z = ... nm to z = ... nm.
   - y
, range_x, range_z or     # 2D slice at y = ... nm within the range from x = ... nm to x = ... nm and from z = ... nm to z = ... nm.
   - z
, range_x, range_y or     # 2D slice at z = ... nm within the range from x = ... nm to x = ... nm and from y = ... nm to y = ... nm.


   only_sections = yes/no     #
if set to no, print additional warnings concerning output  (default is: no)
                              # Currently, for fields living on the position grid, the entire field is always output in addition to its sections defined by output{}.
                              #
However, if only_sections is set to yes, the entire field will not be output anymore but only its sections defined by output{}. Thus, if no sections are defined, also no fields will be output.
                              #
These files can be used to restrict field output to the actual regions of interest, or also to suppress most file I/O (if no sections are defined).
                              #
This setting has no effect on RAM usage or on the fields used in the calculation, it just affects what is written into files.
                              #
Also note that quantities living on e.g. an energy grid, integrative quantities like I-V curves, or files needed for resuming operation are not influenced by this setting.


   silent = yes/no            #
if set to no, print additional warnings concerning output  (default is: yes)


   material_parameters{

      kp_parameters{          # output k.p parameters of materials in quantum regions where 6-band or 8-band k.p  Hamiltonian was solved.
                              #
The Dresselhaus-Kip-Kittel (DKK) parameters (L, M, N), which are used internally in the code, are printed out.
                              #
Also the Luttinger (gamma1, gamma2, gamma3, kappa) (for zinc blende) or Rashba-Sheka-Pikus (A1,A2,...,A6) parameters (for wurtzite) are printed out, respectively.
                              #
Additionally for 8-band k.p calculations the S, EP, P and B parameters are printed out.
                              #
For further information consult chapter 3 of the PhD thesis of S. Birner.

          boxes = yes/no      #
(optional) For each grid point, in 1D two points are printed out to mimic
                              # abrupt discontinuities at material interfaces (in 2D four points, in 3D eight points)
      }

      charge_carrier_masses{  #
output effective masses of all energy bands used in the simulatios in units of [m0]

          boxes = yes/no      #
(optional) For each grid point, in 1D two points are printed out to mimic
                              # abrupt discontinuities at material interfaces (in 2D four points, in 3D eight points)
      }

      spin_orbit_coupling_energies{  #
output spin-orbit coupling energy for zinc blende (1 parameter) or crystal field splitting and spin-orbit coupling energies for wurtzite (3 parameters) in units of [eV]

          boxes = yes/no             #
(optional) For each grid point, in 1D two points are printed out to mimic
                                     # abrupt discontinuities at material interfaces (in 2D four points, in 3D eight points)
      }

      static_dielectric_constants{   #
output static relative dielectric constants for zinc blende (1 parameter) and wurtzite (3 parameters) (unitless)

          boxes = yes/no             #
(optional) For each grid point, in 1D two points are printed out to mimic
                                     # abrupt discontinuities at material interfaces (in 2D four points, in 3D eight points)
      }

      deformation_potentials{        # output the deformation potentials for zinc blende and wurtzite

          boxes = yes/no             #
(optional) For each grid point, in 1D two points are printed out to mimic
                                     # abrupt discontinuities at material interfaces (in 2D four points, in 3D eight points)
      }


   }

}


 

Examples

  • output{
       directory = "../output/mosfet_3D"

       section1D{ name = "x"
                
     y    = 10
                
     z    = 10 }

       section2D
    { name    = "y"
                
     y       = 10              #
    2D slice at y = 10 nm
                  range_x = [-20, 220.5]    #
    range in x direction from -20 nm to 220.5 nm
                  range_z = [-20, 220.5] }  #
    range in z direction from -20 nm to 220.5 nm
    }
     
  • output{
       directory = "../output/mosfet_2D"

       section
    {   name    = "zoom"
                
     range_x = [0,20]          #
    range in x direction from 0 nm to 20 nm
                  range_y = [-5,5] }        #
    range in y direction from -5 nm to 5 nm

       section1D
    { name    = "y"
                
     y       = 10              #
    1D slice at y = 10 nm
                  range_x = [-20, 220.5] }  #
    range in x direction from -20 nm to 220.5 nm
    }
     

 

 

 

VTK format for rectilinear grid

==> VTK - The Visualization Toolkit

The .vtr format can be read by the following software:

 

AVS format for rectilinear grid

The .fld format can be read by the following software:

The main file of AVS format has .fld extention. Here's an example:

   # AVS/Express field file             # necessary header
   #
   ndim   = 3                           #
number of dimensions

   dim1   = 6                           #
number of nodes along 1st dimension
   dim2   = 6                           #
number of nodes along 2nd dimension
   dim3   = 6                           #
number of nodes along 3rd dimension
                                        #
number of dim* entry must be consistent to number of dimensions ndim
   nspace = 3                           #
must be equal to ndim
   veclen =                          #
number of components of vector field, 1 = scalar field
   data   = double                      #
data type. Currently only double and integer are supported.
   field  = rectilinear                 #
type of mapping. Only rectilinear field is supported.
   label  = bandedge_Gamma_1            #
label for each vector field component
   unit   = eV                          #
unit of each vector field component (internally in tool not used at the moment)

   variable 1  file=3D_import.dat    filetype=ascii  skip=0   offset=0  stride=1       #
defines where 1st component of vector field is saved. Numbering must be ascending, starting with 1
                                                                                       #
and number of variable i lines must be equal to veclen. Supported file types are ascii and binary.
                                                                                       # skip  
defines how many lines in file have to be skipped before data item appears.
                                                                                       # offset
defines how many columns in line have to be skipped before searched data items appear.
                                                                                       # stride
defines how many steps have to be made before next data item appears.
   coord 1     file=3D_import.coord  filetype=ascii  skip=0        offset=0  stride=1  #
contains information about where and how nodes of 1st coordinate are stored
   coord 2     file=3D_import.coord  filetype=ascii  skip=6  (=7)  offset=0  stride=1  #
contains information about where and how nodes of 2nd coordinate are stored
   coord 3     file=3D_import.coord  filetype=ascii  skip=12 (=14) offset=0  stride=1  #
contains information about where and how nodes of 3rd coordinate are stored
                                                                                       #
numbering must be ascending, starting with 1 and number of coord i lines must be equal to ndim
  
(The red lines (=7) and (=14) take into account one empty line each that we use to separate the coordinates.)
 

The following shows an example of a file that can be imported using import{}.
This example shows how to import i,j,k, fn(i,j,k),fm(i,j,k) ordered data via AVS format into nextnano++:

 *.fld
file:
 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   # AVS/Express field file
   #
   ndim   = 3
   dim1   = 3
   dim2   = 3
   dim3   = 3
   nspace = 3
   veclen = 2
   data   = double
   field  = rectilinear
   label  = data_1
   label  = data_2

   variable 1  file=3D_origin-format.dat  filetype=ascii  skip=0   offset=3  stride=5
   variable 2  file=3D_origin-format.dat  filetype=ascii  skip=0   offset=stride=5

   coord 1     file=3D_origin-format.dat  filetype=ascii  skip=24  offset=stride=5
   coord 2     file=3D_origin-format.dat  filetype=ascii  skip=18  offset=1  stride=15
   coord 3     file=3D_origin-format.dat  filetype=ascii  skip=8   offset=2  stride=45

 *.dat file:
 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    0  0  0    1 -1       #
The columns correspond to coordinates x,y,z and data values f1(x,y,z) and f2(x,y,z)
    5  0  0    2 -2
   10  0  0    3 -3
    0  5  0    4 -4
    5  5  0    5 -5
   10  5  0    6 -6
    0 10  0    7 -7
    5 10  0    8 -8
   10 10  0    9 -9
    0  0  5   10 -10
    5  0  5   11 -11
   10  0  5   12 -12
    0  5  5   13 -13
    5  5  5   14 -14
   10  5  5   15 -15
    0 10  5   16 -16
    5 10  5   17 -17
   10 10  5   18 -18
    0  0 10   19 -19
    5  0 10   20 -20
   10  0 10   21 -21
    0  5 10   22 -22
    5  5 10   23 -23
   10  5 10   24 -24
    0 10 10   25 -25
    5 10 10   26 -26
   10 10 10   27 -27
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Note that the order of the values matters.