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

 Download | SearchCopyright | News | Publications
 * password protected

 

nextnano software

 

  Domain coordinates

 

 

 
Up
 

Domain coordinates

Orientation of crystal relative to simulation coordinate system

The overall simulation domain, that is the real space region in which the device is defined, is restricted to a cuboid, a rectangle, or a line - dependent on the dimension for the simulation. The extension of this domain must be specified by its minimum and maximum value along the corresponding coordinate axes. The complete simulation domain will be "filled" with material information later.

Additionally, the orientation of the global three-dimensional coordinate system must be oriented with respect to the crystal and some information about a substrate for pseudomorphic growth must be given.

Keyword - Specifier syntax

!----------------------------------------------------!
$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-grid, 1 0 1 for xz-grid, 1 1 0 for xy-grid ..., 1 0 0 for x-grid
                                                     ! redundant information: $simulation-dimension, orientation = ... is now used. However, this specifier must be still there (CHECK: WHY???).
 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 axis, e.g. [1 0 0]; required for two axes
 hkl-y-direction-zb           integer_array optional !
Miller indices of y-coordinate axis, e.g. [0 1 0]
 hkl-z-direction-zb           integer_array optional ! Miller indices of z-coordinate axis, e.g. [0 0 1]
                                                     !
 hkil-x-direction             integer_array optional !
four-digit Miller-Bravais indices of x-coordinate axis direction [ 1  0 -1 0]
 hkil-y-direction             integer_array optional ! four-digit Miller-Bravais indices of y-coordinate axis direction [-1  2 -1 0]
 hkil-z-direction             integer_array optional ! four-digit Miller-Bravais indices of z-coordinate axis direction [ 0  0  0 1]

 growth-coordinate-axis       integer_array optional !
relevant 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
 pressure                     double        optional !
 lattice-constants            double_array  optional !

 lattice-constants-temp-coeff double_array  optional !
 crystal-type                 character     optional ! required for nondefault substrate material: e.g. zincblende, wurtzite
$end_domain-coordinates                     required !
!----------------------------------------------------!

 

Description

domain-type = l m n
  l={0,1} , m={0,1} , n={0,1} , l+m+n=dimension (see
$simulation-dimension)
This specifier contains redundant information, i.e. the same information as $simulation-dimension, orientation = ... which is now used.
However, the specifier domain-type must be still there (CHECK: WHY???).although the values specified here can be arbitrary.

 

Domain extension - Minimum and maximum coordinates:

 x-coordinates = xmin  xmax
 y-coordinates = ymin  ymax
 z-coordinates = zmin  zmax

Only entries for the coordinate axes specified by orientation. min, max are double precision reals.
 x-coordinates = 0.0d0  350.0d0

 

Orientation of the crystal with respect to the general three-dimensional simulation coordinate system is fixed by specification of the Miller direction indices of two simulation coordinate axes.
The Miller indices define a plane. There exists a vector that is perpendicular to this plane, e.g. in zinc blende blende materials, the [hkl] vector is always perpendicular to the (hkl) plane.
However, for wurtzite, this is not necessarily true. For instance, although the [0001] vector is perpendicular to the (0001) plane, in general is does not hold that the vector that is perpendicular to the (hkil) plane is defined by [hkil].

 hkl-x-direction-zb  =  0  1  0  ! Specify (hkl) plane perpendicular to x axis.
 hkl-y-direction-zb  =  0  0  1  ! Specify (hkl) plane perpendicular to y axis.

In this example, the x-axis of the simulation coordinate system is directed along [0 1 0] of the zinc blende crystal (crystal coordinate system). The y-axis of the simulation coordinate system is directed along [0 0 1] of the zinc blende crystal. The direction of the third axis is calculated internally.
The default directions can be specified in the database ($zb-restrictions). This default coincides with the crystal fixed cartesian coordinate system.

Default is:
 hkl-x-direction-zb  =  1  0  0
 hkl-y-direction-zb  =  0  1  0
(hkl-z-direction-zb  =  0  0  1)

Example:
 hkl-z-direction-zb  =  3  1  1
 hkl-y-direction-zb  =  0  1 -1
(hkl-x-direction-zb
calculated internally.) Here, the z-axis of the simulation system is directed along [3 1 1] and the y-axis along [0 1 -1].

In zinc blende crystals, the cation (metallic elements) polarity is labeled {111}A, and the anion polarity is {111}B, which is {11-1}:

Similar as above for wurtzite:

 hkil-x-direction  =  1  0 -1  0 ! This corresponds to [100] direction, i.e. here the vector that is perpendicular to the (1 0 -1 0) plane is specified.
 hkil-y-direction  = -1  2 -1  0 ! This corresponds to [-120] direction. y and x axis build an angle of 120, i.e. here the vector that is perpendicular to the (-1 2 -1 0) plane is specified.
 hkil-z-direction  =  0  0  0  1 ! (calculated internally)

In this example, the x-axis of the simulation coordinate system is directed along [1 0 0] of the crystal.
The y-axis of the simulation coordinate system is directed along [0 1 0] of the crystal.
The direction of the third axis is calculated internally (oriented along [0 0 1] of the crystal).

Usually for wurtzite, the four-digit Miller-Bravais (or Bravais-Miller) indices (h k i l) are used where i = - (h + k), i.e. i is not independent.
The four integer values (Miller indices) that are given for hkil-x-direction refer to a plane. The x direction is then the one that is perpendicular to this plane. This vector along the x axis has indices that are in general not identical to the Miller indices hkl in wurtzite.

The default directions can be specified in the database ($wz-restrictions). This default coincides with the crystal fixed cartesian coordinate system.

Why are four-digit Miller-Bravais indices used in wurtzite? This scheme for labeling planes in a hexagonal lattice makes permutation symmetries apparent, e.g. the similarity between (110) = (11-20) and (1-20) = (1-210) is more obvious when the redundant index i is shown.

Popular growth planes for wurtzite

  • polar: c-plane: {0001}, Ga-terminated face (Ga-face or Ga polarity)
  • polar: {000-1}, N-terminated face (N-face or N polarity)
  • nonpolar: m-plane: {10-10}, theta = 90 (angle between growth direction and [0001] direction, i.e. c-direction)
     hkil-x-direction = 0 0  0 -1 ! Miller Indices of x coordinate axis direction
     hkil-z-direction = 1 0 -1  0 ! Miller Indices of z coordinate axis direction, growth direction
    If one grows the quantum well along the [10-10] growth direction, then the pyroelectric and piezoelectric fields along this [10-10] growth direction are zero.
  • nonpolar: a-plane: {11-20}
  • semi-polar: (1-101) plane
  • semi-polar: (10-11) plane, Ga-face
  • semi-polar: (10-13) plane, Ga-face
  • semi-polar: (10-1-1) plane, N-face
  • semi-polar: (10-1-3) plane, N-face
  • semi-polar: (11-22) plane, Ga-face
      hkil-x-direction = -1 -1  2  3 ! Miller Indices of x coordinate axis direction
      hkil-y-direction =  1 -1  0  0 ! Miller Indices of y coordinate axis direction
    ! hkil-z-direction =  ?  ?  ?  ? ! is normal to (11-20) plane (This direction is not needed in the input file. It is sufficient to specify only two axes: hkil-x-direction and hkil-x-direction.)
    The hkil-x-direction = -1 -1 2 3 forms an angle of about 32 with the [0001] direction.
     

a-plane and m-plane are orthogonal to each other.

 

Let's look at a further example.

  • semi-polar: (-1-12-2) plane
     hkil-x-direction  =  1  -1   0  0  ! [hkil]

     hkil-y-direction  = -1  -1   2  3  ! [hkil]
     hkil-z-direction  =  8   8 -16  9  ! [hkil]
    In this example, [1  -1   0  0] is orthogonal to both [-1  -1   2  3] and [8   8 -16  9],
    but [-1  -1   2  3] is not orthogonal to [8   8 -16  9].
    The reason for the latter is that the hexagonal unit cell in real crystals does not fulfill the ideal c/a ratio, where it holds c/a = SQRT(3/8) = 1.63299....
    a and c are the lattice constants.

    Assuming that the lattice constants fulfill the ratio c/a, i.e.
       %ideal_c = SQRT(8/3) * 0.3189
       lattice-constants =    0.3189d0   0.3189d0     %ideal_c                            ! [nm] a,a,c
     ! lattice-constants =    0.3189d0   0.3189d0   0.52076151931570366367674259428247d0  ! [nm] a,a,c

    then the orthogonality relation for hkil-z-direction  =  8   8 -16  9 would be fulfilled.

    An alternative solution would have been for the real c/a ratio would have been:
    hkil-z-direction  =  100000000000   100000000000   -200000000000   113483513101 !

    where 113483513101 = 3 * a^2 / c^2.

     

When a simulation is performed, the screen output is redirected to a .log file which has the same name as the input file.
This file contains some information about rotation of coordinate axes, e.g. for the following settings

    domain-type      = 0 0 1
    hkil-x-direction = 1 -1  0  0
    hkil-y-direction = 1  1 -2 -3
   !hkil-z-direction = 1  1 -2  1

the following is written out:

    ....
    wurtzite crystal orientation (Bravais-Miller indices as specified in input file or database)
    hkil-x-direction = 1.000000 -1.000000  0.000000  0.000000
    hkil-y-direction = 1.000000  1.000000 -2.000000 -3.000000

    wurtzite crystal orientation (Bravais-Miller indices [hkil] are cooked down to 3 lattice axes used [hkl].)
    hkl-x-direction = 1.000000 -1.000000  0.000000
    hkl-y-direction = 3.000000  3.000000 -3.000000
    3rd direction   = 0.408248  0.408248  0.816497
    3rd direction corresponds to (hkil) plane     = ( 0.408248 0.408248 -0.816497 0.816497)
    $domain-coordinates: Getting lattice constants for substrate material = GaN
    substrate lattice constants for material 1 = 0.31890000 0.31890000 0.51850000 [nm]
    c/a ratio in wurtzite = 1.625901537 (ideal ratio = 1.632993162).
    3rd direction corresponds to [hkil] direction = [ 0.408248 0.408248 -0.816497 0.463295]
    angle between hkil directions   =  90.000000000000 (substrate)
    angle between hkil_1 and [0001] =  90.000000000000 (substrate)
    angle between hkil_2 and [0001] = 148.406680335000 (substrate)
   
    ----------------------------------------------------------------------
    Rotation matrix for material number = 1:
    ( 0.500000000 -0.866025404  0.000000000 ) (hkl-x-direction)
    ( 0.453699101  0.261943298 -0.851788022 ) (hkl-y-direction)
    ( 0.737670066  0.425894011  0.523886596 ) (hkl-z-direction)
    (transformation matrix for a vector from crystal coordinate system to simulation coordinate system: material_info(1)%transform_cxyz_to_xyz)
   
    Eigenvalues:
    ( 0.142914947,  0.989734974) ==> e^(+i theta) = cos(theta) + i sin(theta)
    ( 0.142914947, -0.989734974) ==> e^(-i theta) = cos(theta) - i sin(theta)
    ( 1.000000000,  0.000000000) ==> eigenvalue = 1: axis of rotation
   
    Eigenvector: axis of rotation
    (  0.645466750  0.000000000 )
    ( -0.372660402  0.000000000 )
    (  0.666706007  0.000000000 )
   
    Eigenvector: 2nd and 3rd
    ( -0.183290190 -0.508026617 )
    ( -0.656172319  0.000000000 )
    ( -0.189321403  0.491842410 )
   
    ( -0.183290190  0.508026617 )
    ( -0.656172319 -0.000000000 )
    ( -0.189321403 -0.491842410 )
   
    sin(theta) = (0.9897349735464228,0.0000000000000000)
    cos(theta) = (0.1429149472205782,0.0000000000000000)
    theta = arcsin( sin(theta) ) = 81.783443016 = 0.454352461 [pi] = 1.427390354
    theta = arccos( cos(theta) ) = 81.783443016 = 0.454352461 [pi] = 1.427390354
    ==> rotation angle = 81.783443016 = 0.454352461 [pi] = 1.427390354
    ==> rotation axis  = [ 0.645466750 -0.372660402 0.666706007 ]
    ----------------------------------------------------------------------
   
    material_orientation: l = 1
    material_info(l)%interface_vector_in_cxyz = [ 0.737670066 0.425894011 0.523886596 ]
    ...

 

 

Homogeneous strain

The following specifier is only necessary for strain-calculation = homogeneous-strain or hydrostatic-strain.

 growth-coordinate-axis = 1 0 0 ! along 'hkl-x-direction-zb = ...'
                        = 0 1 0 !
along 'hkl-y-direction-zb = ...'
                        = 0 0 1 !
along 'hkl-z-direction-zb = ...'
                        = l m n ! l={0,1} , m={0,1} , n={0,1} , l+m+n=1

This selects one of the simulation coordinate axes (i.e. either the x-axis, y-axis or z-axis) as the growth direction. For example
 growth-coordinate-axis = 0 0 1
if the z-axis is to be specified as the growth axis (don't confuse this with the Miller indices above). The z-axis itself has default orientation
 hkl-z-direction-zb     = 0  0  1
but it can be chosen to be oriented along any other crystal direction, e.g. along [311]:
 hkl-z-direction-zb     = 3  1  1

The growth direction is only important for the calculation of pseudomorphic strain as it enters the equation to calculate the strain tensor:
  $simulation-flow-control
   ...
   strain-calculation = hydrostatic-strain             ! growth-coordinate-axis
is needed.
   strain-calculation = homogeneous-strain             ! growth-coordinate-axis
is needed.
 ! strain-calculation = homogeneous-strain-sim-system  ! growth-coordinate-axis
is not needed.

If growth-coordinate-axis is not present, the default value for 1D simulations is the simulation axis.
For 2D/3D simulations, the default value of the database_nn3.in file is taken specified in $domain-coordinates-defaults.

 

Substrate for strain

Specification on which material all layers are grown pseudomorphically.
This can be either a material known from the database or a user defined name.
In the latter case, an entry for the lattice constants and the crystal type of this user defined material must be supplied.
In case of pseudomorphic growth on a known ternary, its alloy concentration must be specified.
This specifier is not used for strain-calculation = strain-minimization but it is used for strain-calculation = strain-minimization-new.
In the former case, the lattice constant of the substrate is extracted from substrate-cluster-number ($strain-minimization-model).

 pseudomorphic-on = GaAs   ! If strain calculation is omitted, this specifier is optional. However, for wurtzite, we still require it. (Should be fixed in the code.)

GaAs would be a known binary material, so no further input is required here.

Alloy concentration of ternary substrate (e.g. pseudomorphic-on = Al(x)Ga(1-x)As)

 alloy-concentration = 0.3d0 ! Al0.3Ga0.7As
 alloy-concentration = x     ! x={0.0d0,1.0d0}

If pseudomorphic growth is assumed to take place on an unknown material (e.g. pseudomorphic-on = banana) the lattice constants of this material and its crystal structure must be specified.
For the structure of the crystal, only wurtzite and zinc blende are possible choices at the moment. In wurtzite, the lattice constant orderering is a, a, c.

lattice-constants            = 0.4d0    0.4d0    0.4d0
lattice-constants-temp-coeff = 3.88d-6  3.88d-6  3.88d-6  ! [nm/K]
More information on temperature dependent lattice constants...

crystal-type = zincblende !
also used for diamond-type materials
           
 = wurtzite

pressure     = 9.4        ! [GPa]
The substrate could be strained by an additional external pressure.

More information on how the rotation is carried out in the program ...