2.6.10. output{} (optional)

Options for the visualization of the output data and output of material parameters.

Visualization

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

  • Origin (1D/2D)

  • VTK VTK format (2D/3D)

  • AVS/Express (2D/3D)

    directory
    value:

    “string”

    example:

    "../output/quantum_well_1D"

    path for output files

    mandatory_path
    value:

    yes or no

    default:

    no

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

    format2D
    value:

    string

    options:

    AvsBinary AVSBinary AvsAscii AVSAscii AvsBinary_one_file AVSBinary_one_file AvsAscii_one_file AVSAscii_one_file VtkAscii VTKAscii VtkAscii_AvsAscii VtkAscii_AVSAscii VTKAscii_AvsAscii VTKAscii_AVSAscii VtkAscii_AvsAscii_one_file VtkAscii_AVSAscii_one_file VTKAscii_AvsAscii_one_file VTKAscii_AVSAscii_one_file VtkAscii_AVSBinary VtkAscii_AvsBinary VTKAscii_AVSBinary VTKAscii_AvsBinary VtkAscii_AVSBinary_one_file VtkAscii_AvsBinary_one_file VTKAscii_AVSBinary_one_file VTKAscii_AvsBinary_one_file Origin

    default:

    AvsBinary_one_file

    Output file format for 2D simulations

    AvsBinary

    AVS/Express file format (AVS steering files *.v, and *.fld, *.coord, *.dat data files) - data files in binary format

    AvsAscii

    AVS/Express file format (AVS steering files *.v, and *.fld, *.coord, *.dat data files) - data files in ASCII format

    AvsBinary_one_file

    AVS/Express file format - header (ASCII), coordinates and variables (both binary) are written into a single .fld file

    AvsAscii_one_file

    AVS/Express file format - header (ASCII), coordinates and variables (both ASCII) are written into a single .fld file

    VTKAscii

    VTK XML ASCII format (.vtr, r = rectilinear grid)

    VTKAscii_AvsAscii

    VTKAscii + AvsAscii

    VTKAscii_AvsAscii_one_file

    VTKAscii + AvsAscii_one_file

    VTKAscii_AvsBinary

    VTKAscii + AvsBinary

    VTKAscii_AvsBinary_one_file

    VTKAscii + AvsBinary_one_file

    Origin

    Origin file format (Origin steering files *.plt, data files *.dat)

    format3D
    value:

    string

    options:

    see format2D

    Output file format for 3D simulations. Options are identical to the 2D case.

    write_avs_v
    options:

    yes or no

    default:

    no

    Output of AVS steering file .v.

    write_origin_plt
    options:

    yes or no

    default:

    no

    Output of Origin steering file .plt.

    write_gnuplot_plt
    options:

    yes or no

    default:

    no

    Currently, gnuplot format is only implemented for energy resolved densities in 1D, energy resolved photogeneration in 1D, and light field (and may create huge (!) files).

    use_gnuplot_one_file
    options:

    yes or no

    default:

    no

    If yes, all information (metadata and data) necessary for the gnuplot figure is contained in one file.

    silent
    value:

    yes or no

    default:

    yes

    If set to no, print additional warnings concerning output.

Sections and Ranges

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.

All section commands are ignored for energy resolved densities, energy resolved photogeneration, and light field.

section{}

Output a smaller section of the simulation area (zoom).

Example:

section{
    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).

Example:

section1D{
    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)
}

Note

  • 2D usage:
    • x, range_y
      1D slice at x = … nm within the range from y = … nm to y = … nm or
    • 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

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

Example:

section2D{
    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]
}

Note

  • 3D usage:
    • x, range_y, range_z
      2D slice at x = … nm within the range from y = … nm to y = … nm and from z = … nm to z = … nm or
    • y, range_x, range_z
      2D slice at y = … nm within the range from x = … nm to x = … nm and from z = … nm to z = … nm or
    • z, range_x, range_y
      2D slice at z = … nm within the range from x = … nm to x = … nm and from y = … nm to y = … nm
only_sections
value:

yes or no

default:

no

If set to no, print additional warnings concerning output.

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.

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 is 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 = 1                     # 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   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  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"
# "skip=6" (=7) and "skip=12" (=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 3D_origin-format.fld file into nextnano++:

# 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=4  stride=5

coord 1     file=3D_origin-format.dat  filetype=ascii  skip=24  offset=0  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

The corresponding data is contained in the 3D_origin-format.dat file:

 0  0  0    1 -1    # The columns correspond to coordinates x,y,z and data values f_1(x,y,z) and f_2(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.

Output of material parameters

material_parameters{}
kp_parameters{}

Output \(\mathbf{k} \cdot \mathbf{p}\) parameters of materials in quantum regions where 6-band or 8-band \(\mathbf{k} \cdot \mathbf{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 \(\mathbf{k} \cdot \mathbf{p}\) calculations the S, E_P, P and B parameters are printed out. For further information, consult Chapter 3 of the PhD thesis of S. Birner.

boxes
value:

yes or 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

as above

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

as above

static_dielectric_constants{}

Output static relative dielectric constants for zinc blende (1 parameter) and wurtzite (3 parameters) (unitless).

boxes

as above

deformation_potentials{}

Output the deformation potentials for zinc blende and wurtzite in units of [eV].

boxes

as above