output{}¶
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
orno
- default:
no
If
mandatory_path
is set toyes
, the (relative or absolute) output directory specified inoutput{ 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:
VTKAscii
AvsBinary_one_file
AvsAscii_one_file
AvsBinary
AvsAscii
VTKAscii_AvsBinary_one_file
VTKAscii_AvsAscii_one_file
VTKAscii_AvsBinary
VTKAscii_AvsAscii
Origin
- default:
AvsBinary_one_file
Output file format for 2D simulations
VTKAscii
VTK XML ASCII format (
.vtr
,r
= rectilinear grid)AvsBinary_one_file
AVS/Express file format - header (ASCII), coordinates and variables (both binary) are written into a single
.fld
fileAvsAscii_one_file
AVS/Express file format - header (ASCII), coordinates and variables (both ASCII) are written into a single
.fld
fileAvsBinary
AVS/Express file format (AVS steering files
*.v
, and*.fld
,*.coord
,*.dat
data files) - data files in binary formatAvsAscii
AVS/Express file format (AVS steering files
*.v
, and*.fld
,*.coord
,*.dat
data files) - data files in ASCII formatVTKAscii_AvsBinary_one_file
VTKAscii
+AvsBinary_one_file
VTKAscii_AvsAscii_one_file
VTKAscii
+AvsAscii_one_file
VTKAscii_AvsBinary
VTKAscii
+AvsBinary
VTKAscii_AvsAscii
VTKAscii
+AvsAscii
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
orno
- default:
no
Output of AVS steering file
.v
.- write_origin_plt
- options:
yes
orno
- default:
no
Output of Origin steering file
.plt
.- write_gnuplot_plt
- options:
yes
orno
- 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
orno
- default:
no
If
yes
, all information (metadata and data) necessary for the gnuplot figure is contained in one file.- silent
- value:
yes
orno
- 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 atx
= … nm within the range fromy
= … nm toy
= … nm ory
,range_x
1D slice aty
= … nm within the range fromx
= … nm tox
= … nm
- 3D usage:
x
,y
,range_z
or1D slice atx
= … nm andy
= … nm within the range fromz
= … nm toz
= … 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 atx
= … nm within the range fromy
= … nm toy
= … nm and fromz
= … nm toz
= … nm ory
,range_x
,range_z
2D slice aty
= … nm within the range fromx
= … nm tox
= … nm and fromz
= … nm toz
= … nm orz
,range_x
,range_y
2D slice atz
= … nm within the range fromx
= … nm tox
= … nm and fromy
= … nm toy
= … nm
- only_sections
- value:
yes
orno
- 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 toyes
, 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:
VisIt visualization tool (free)
ParaView (open source)
ImageVis3D (open source)
AVS format for rectilinear grid¶
The .fld
format can be read by the following software:
AVS/Express visualization tool (commercial)
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 theS
,E_P
,P
andB
parameters are printed out. For further information, consult Chapter 3 of the PhD thesis of S. Birner.
- boxes
- value:
yes
orno
(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