nextnano.com
 GUI: nextnanomat
 Tool: nextnano++
 Tool: nextnano
 Tool: nextnano.QCL

 Download | SearchCopyright | News | Publications
 * password protected

 

nextnano software

 

  IP: Keywords

 

 

 
Up
 

Input parser: Keywords - General introduction to some of the keywords and specifiers including some examples

Specification of input file name

The specification of the input filename is done as a first entry in file keywords.val as follows:

!---------------------------------------------------!
$input_filename                        optional     !
 input-filename         character      optional     !
$end_input_filename                    optional     !
!---------------------------------------------------!

Example

!---------------------------------------------------!
$input_filename                        optional     !
 input_file1.in         character      optional     !
Reads in "input_file1.in".
$end_input_filename                    optional     !
!---------------------------------------------------!

More information on this keyword ...

 

 

Specification of the simulation domain dimension and its orientation

!---------------------------------------------------!
$simulation-dimension                               !
   dimension   = 2                                  !
   orientation = 1 0 1                              !
$end_simulation-dimension                           !
!---------------------------------------------------!
 

Possible values for dimension are 1, 2, 3; specifying a one-dimensional, a two-dimensional or a three-dimensional simulation domain, respectively.
The specifier orientation defines the orientation of the simulation domain relative to the (x,y,z) coordinate system. A three dimensional array, containing 0 and/or 1, is expected.
The 1's in this array select the relevant axis.

3-dimensional simulation
   dimension   = 3
   orientation = 1 1 1

2-dimensional simulations
   dimension   = 2
   orientation = 1 1 0   or   1 0 1   or   0 1 1
This means, the simulation is performed in the (x,y)-plane, the (x,z)-plane or in the (y,z)-plane

1-dimensional simulation
   dimension   = 1
   orientation = 1 0 0   or   0 1 0   or   0 0 1
This means, the simulation is performed along the x direction, the y-direction or the z-direction.

More information on this keyword ...

 

 

Domain coordinates: Orientation of crystal relative to simulation coordinate system

!------------------------------------------------------!
$domain-coordinates                           required ! The global simulation domain is restricted to be a cuboid, a plane or a line.
 domain-type                   integer_array  required ! 1 1 1 for xyz-domain, 1 0 1 for xz-domain,
                                                       ! 1 1 0 for xy-domain, ...,  1 0 0 for x-domain
 x-coordinates                 double_array   optional ! xmin,xmax of simulation domain
 y-coordinates                 double_array   optional ! ymin,ymax of simulation domain
 z-coordinates                 double_array   optional ! zmin,zmax of simulation domain
 hkl-x-direction-zb            integer_array  optional ! Miller indices of x-coordinate axes [0 1 0]; required for two axes
 hkl-y-direction-zb            integer_array  optional ! Miller indices of y-coordinate axes [0 0 1]
 hkl-z-direction-zb            integer_array  optional ! Miller indices of z-coordinate axes [1 0 0]
 hkil-x-direction              integer_array  optional ! four-digit Miller-Bravais indices of x-coordinate axes direction [ 1  0 -1 0]
 hkil-y-direction              integer_array  optional ! four-digit Miller-Bravais indices of y-coordinate axes direction [-1  2 -1 0]
 hkil-z-direction              integer_array  optional ! four-digit Miller-Bravais indices of z-coordinate axes direction [ 0  0  0 1]
 growth-coordinate-axis        integer_array  optional ! Must be specified if strain related quantities have to be considered.
 pseudomorphic-on              character      optional ! A default material or user defined name.
 alloy-concentration           double         optional ! In case, that default material is a ternary.
 lattice-constants             double_array   optional !
 lattice-constants-temp-coeff  double_array   optional !
 crystal-type                  character      optional ! Required for non default substrate material: e.g. wurtzite, zinc blende.
$end_domain-coordinates                       required !
!------------------------------------------------------!

More information on this keyword ...

 

 

Basic geometry objects - regions

To build up a geometry, there are - dependent on the dimension of the simulation to be performed - various basic geometry elements available.
These geometry elements are specified within the keyword $regions and can be clustered to a bigger object later on.

General specifiers

region-number

An integer number >= 1.
Numbering must be unique. All region numbers together must form a dense set 1,2,3,....,maxnumber.

 

region-priority

An integer number >= 1.
In case of overlapping regions, the region with higher priority (= higher numerical value) overwrites the region with lower priority.

 

!--------------------------------------------------!
$regions                                optional   !
 region-number       integer            required   ! an integer number to refer to geometry element
 region-priority     integer            required   ! a positive integer to set overwriting priority, a smaller number
                                                   ! can be overwitten by any higher
 base-geometry       character          required   ! type of geometry object:
                                                   ! 3D: cuboid, obelisk, cone, truncated-cone, semiellipsoid, hexagonal-obelisk, triangular-prism
                                                  
!
2D: rectangle, triangle, semiellipse
                                                  
!
1D: line
 x-coordinates       double_array       optional   ! for cuboid, rectangle, line: xmin, xmax
 y-coordinates       double_array       optional   ! for cuboid, rectangle, line: ymin, ymax
 z-coordinates       double_array       optional   ! for cuboid, rectangle, line: zmin, zmax
 base-coordinates    double_array       optional   ! for obelisk, cone, truncated-cone:
                                                  
! xmin xmax ymin ymax zmin zmax
of obelisk (cone) base plane
                                                   ! (one pair must be equal)
 top-coordinates     double_array       optional   ! for obelisk, cone, truncated-cone, semi-ellipse:
                                                   ! xmin xmax ymin ymax zmin zmax of obelisk (cone) base plane
                                                   ! (one pair must be equal)
                                                   ! x y z
for semi-ellipse
 corner-coordinates  double_array       optional   ! for triangle:  x1 y1  x2 y2  x3y3
                                                   ! triangle corner coordinates, interpreted via orientation
 semi-ellipse-base   double_array       optional   !
for semiellipse: base line ellipse:
                                                   ! two pairs of xmin,xmax ymin,ymax zmin,zmax - one pair equal numbers
 semi-ellipse-top    double_array       optional   ! for semiellipse: top coordinate pair: e.g. for coordinate orientation  (101) -> (x,z)

$end_regions                            optional   !
!--------------------------------------------------!

3-dimensional objects: cuboid, obelisk, cone, truncated-cone, semiellipsoid, hexagonal-obelisk, triangular-prism

2-dimensional objects: rectangle, triangle, semiellipse

1-dimensional objects: line

 

Details of specification

3D Example: Cuboid

$regions
 region-number     = 1
 base-geometry     = cuboid
 region-priority   = 1
 x-coordinates     = xmin  xmax
 y-coordinates     = ymin  ymax
 z-coordinates     = zmin  zmax
$end_regions

The surfaces of the cuboid are assumed to be in coordinate planes of the simulation coordinate system. The coordinates above specifiy the six coordinate planes which limit the cuboid.

For other 3D objects like obelisk, cone, truncated-cone, semiellipsoid, hexagonal-obelisk or triangular-prism, you can find detailed descriptions here: $regions.

 

2D Example: Rectangle

$regions
 region-number     = 1
 base-geometry     = rectangle
 region-priority   = 1
 x-coordinates     = xmin xmax
 y-coordinates     = ymin ymax
$end_regions

Two pairs of delimiting coordinates are required. Whether these have to be x-coordinates and y-coordinates as in the example above, or another combination (e.g. x, z) depends on the simulation orientation which is specified already.

For other 2D objects like triangle or semiellipse, you can find detailed descriptions here: $regions.

 

1D Example: Line

$regions
 region-number      = 1
 base-geometry      = line
 region-priority    = 1
 x-coordinates      = xmin  xmax
$end_regions

Chosen coordinates must be consistent with simulation orientation.

Other 1D objects do not exist. You can find detailed descriptions here: $regions.

 

 

Region clusters

Regions can be clustered to bigger objects by  the keyword $region-cluster. Any region must be assigned to a cluster which is labeled by its cluster-number.
cluster-number = integer  (>=1)
Also the so called default region must be assigned to a cluster. The default region is the rest of the simulation domain which is not filled out by defined regions. It might happen, that the default region is an empty region. Nevertheless it must be assigned to cluster.
In any case:
       default region number = maximum region number defined + 1.

The regions which have to be clustered to one cluster are specified by their numbers with
region-number = regnum1 regnum2 regnum3 ...

!-----------------------------------------------------!
$region-cluster                          required     !
 cluster-number      integer             required     ! An integer number to refer to clustered geometry element.
 region-numbers      integer_array       required     ! Region numbers, belonging to this cluster.
$end_region-cluster                      required     !
!-----------------------------------------------------!

Note: Be careful in 3D when you specify for strain calculation "strain-minimization" (see $strain-minimization-model) to define your substrate as a separate cluster.

More information on this keyword ...

 

Similar to the 1D, 2D and 3D objects in regions, the same applies to quantum regions and current regions.

Type Region cluster Quantum cluster Current cluster
Keyword $regions $quantum-regions $current-regions
Keyword $region-cluster $quantum-cluster $current-cluster
       
Directory input_parser/region_cluster/ input_parser/quantum_cluster/ input_parser/current_cluster/
       
Module
Source code
MODULE mod_cluster_regions
cluster_regions.f90
MODULE mod_cluster_quantum_regions
cluster_quantum_regions.f90
MODULE mod_cluster_current_regions
cluster_current_regions.f90
Module
Source code
MODULE mod_check_regions
check_regions.f90
MODULE mod_check_quantum_regions
check_quantum_regions.f90
MODULE mod_check_current_regions
check_current_regions.f90
Module
Source code
MODULE mod_cluster_grid_points
region_cluster_grid_points.f90
MODULE mod_qm_cluster_grid_points
quantum_cluster_grid_points.f90
MODULE mod_current_cluster_grid_points
current_cluster_grid_points.f90
       
Module
Source code
  MODULE mod_get_quantum_clusters
get_quantum_clusters.f90
MODULE mod_get_current_clusters
get_current_clusters.f90
       
Module
Source code
  MODULE mod_check_quantum_clusters
check_quantum_clusters.f90
MODULE mod_check_current_clusters
check_current_clusters.f90
       
Module
Source code
  MODULE mod_get_quantum_models
get_quantum_models.f90
MODULE mod_get_current_models
get_current_models.f90
       

 

Implementing new geometries

In order to implement new geometries (e.g. the 3D geometry "hexagonal-obelisk") for the region, quantum and current clusters, the following files and subroutines have to be modified:

Input files

  • database_nn3_keywords.val
     $region_restrictions
      ...
      3D-base-geometry-5       character  required !
    name of new three-dimensional geometry element
      ...
      size-3D-base-geometry-5  integer    required !
    number of expected input for the new geometry element
  • database_nn3.in
     $region_restrictions
      ...
      3D-base-geometry-5      = hexagonal-obelisk  !
    name of new three-dimensional geometry element
      ...
      size-3D-base-geometry-5 = 12                 !
    number of expected input for the new geometry element

Source code

 

 

Grid specification

!----------------------------------------------!
$grid-specification                  required  !
 grid-type           integer_array   required  ! 1 1 1 for xyz-grid, 1 0 1 for xz-grid, 1 1 0 for xy-grid ..., 1 0 0 for x-grid
 x-grid-lines        double_array    optional  ! specification of gridlines required
 x-nodes             integer_array   optional  ! subregions, specified by gridlines above must be on a grid line of the final grid
 x-grid-factors      double_array    optional  ! grid coarsening factors in subregions
 y-grid-lines        double_array    optional  ! specification of gridlines required
 y-nodes             integer_array   optional  ! subregions, specified by gridlines above must be on a grid line of the final grid
 y-grid-factors      double_array    optional  ! grid coarsening factors in subregions
 z-grid-lines        double_array    optional  ! specification of gridlines required
 z-nodes             integer_array   optional  ! subregions, specified by gridlines above must be on a grid line of the final grid
 z-grid-factors      double_array    optional  ! grid coarsening factors in subregions
$end_grid-specification              required  !
!----------------------------------------------!

Grid type

Grid type selects by an integer array the coordinate axis relevant for the present simulation. It must be identical to the array orientation specified under the keyword $simulation-dimension. The input for the grid type is required and mainly used for consistency checks.
 

Grid lines

x-grid-lines = double1  double2  double3 ...
y-grid-lines = double1  double2  double3 ...
z-grid-lines = double1  double2  double3 ...

Explicit specification of grid lines for the coordinate directions of the simulation domain.
 

Grid lines (nodes) between explicitly defined grid lines

x-nodes = int1  int2  ...
y-nodes = int1  int2  ...
z-nodes = int1  int2  ...

Add int1, int2, ... grid lines between two explicitly specified grid lines above. Between any explicitly defined pair of gridlines, the number of additional nodes must be specified, even if zero grid lines (nodes) have to be added.

For a distance of 1 nm, 2 nodes should be a maximum (upper limit).

 

Grid factors (inhomogeneous grid)

x-grid-factors = double1  double2  ...
y-grid-factors = double1  double2  ...
z-grid-factors = double1  double2  ...

The nodes specified above are distributed according to a geometric series between the explicitly defined grid lines. The spacing between successive additional grid lines increases (factor > 1.0) or decreases (factor <1.0) in the corresponding coordinate axis direction.
(Comment: The term "inhomogeneous" refers to grid lines (=nodes) between two adjacent grid lines (=x/y/z-grid-lines). However, the total grid of the whole device is likely to be inhomogeneous in general even if the grid factor is always 1.0d0.)

More information on this keyword ...

 

 

Material

!---------------------------------------------------------!
$material                                      required   ! specifications, to assign material to regions
 material-number               integer         required   ! an integer number to refer to a specific material
 cluster-numbers               integer_array   required   ! assign material to these region numbers
 material-name                 character       required   ! e.g. GaAs, AlAs, Al(x)Ga(1-x)As, Si(x)Ge(1-x), InP, GaP
 alloy-function                character       optional   ! constant, function
 material-model                character       optional   !
 material-type                 character       optional   ! e.g. GaAs, AlAs, Al(x)Ga(1-x)As, Si(x)Ge(1-x), InP, GaP
!hkl-x-direction               integer_array   optional   ! Miller indices of x-coordinate axes [0 1 0]; required for two axes
!hkl-y-direction               integer_array   optional   ! Miller indices of y-coordinate axes [0 0 1]
!hkl-z-direction               integer_array   optional   ! Miller indices of z-coordinate axes [1 0 0]
!hkil-x-direction              integer_array   optional   ! four-digit Miller-Bravais indices of x-coordinate axes direction [0  0  0 1]
!hkil-y-direction              integer_array   optional   ! four-digit Miller-Bravais indices of y-coordinate axes direction [2 -1 -1 0]
!hkil-z-direction              integer_array   optional   ! four-digit Miller-Bravais indices of z-coordinate axes direction [1 0 0]
 growth-coordinate-axis        integer_array   optional   ! must be specified if strain related quantities have to be considered
 pseudomorphic-on              character       optional   ! a default material or user defined name
 alloy-concentration           double          optional   ! in case, that default material is a ternary
 lattice-constants             double_array    optional   !
 lattice-constants-temp-coeff  double_array    optional   !
 crystal-type                  character       optional   ! required for nondefault substrate material: either wurtzite or zinc blende
$end_material                                  required   !
!---------------------------------------------------------!

More information on this keyword ...