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

 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 plane perpendicular to x-coordinate axis of simulation coordinate system, e.g. (1 0 0) which corresponds to [100] direction
 hkl-y-direction-zb           integer_array optional !
Miller indices of plane perpendicular to y-coordinate axis of simulation coordinate system, e.g. (0 1 0) which corresponds to [010] direction
 hkl-z-direction-zb           integer_array optional ! Miller indices of plane perpendicular to z-coordinate axis of simulation coordinate system, e.g. (0 0 1) which corresponds to [001] direction
                                                     !
 hkil-x-direction             integer_array optional !
four-digit Miller-Bravais indices of (hkil) plane that is perpendicular to x-coordinate axis direction
 hkil-y-direction             integer_array optional ! four-digit Miller-Bravais indices of (hkil) plane that is perpendicular to y-coordinate axis direction
 hkil-z-direction             integer_array optional ! four-digit Miller-Bravais indices of (hkil) plane that is perpendicular to z-coordinate axis direction

 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

 wurtzite-rotation-matrix     character     optional !
$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

 

Crystal rotations with respect to simulation coordinate system

If hkl-x-direction-zb, ..., hkil-x-direction-wz, ... are not specified in the input file, the default directions miller-default-direction-of-x, miller-default-direction-of-y as specified in the database in $zb-restrictions or $wz-restrictions are used. This default coincides with the crystal fixed cartesian coordinate system.

Zincblende

The orientation of the crystal with respect to the general three-dimensional simulation coordinate system is fixed by the specification of the Miller indices of two perpendicular planes.
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 given by [hkil].

 hkl-x-direction-zb  =  0  1  0  ! Specify (hkl) plane perpendicular to x axis. In zinc blende the x axis is then along this [hkl] direction. Here, (hkl) = (010).
 hkl-y-direction-zb  =  0  0  1  ! Specify (hkl) plane perpendicular to y axis. In zinc blende the y axis is then along this [hkl] direction. Here, (hkl) = (001).

In this example, the x-axis of the simulation coordinate system is directed perpendicular to the (0 1 0) plane, i.e. along [010] of the zinc blende crystal (crystal coordinate system).
The y-axis of the simulation coordinate system is directed perpendicular to the (0 0 1) plane, i.e. along along [001] of the zinc blende crystal. The direction of the third axis is calculated internally.

Default is:
 hkl-x-direction-zb  =  1  0  0  ! x axis perpendicular to (1 0 0) plane, i.e. parallel to [100] direction
 hkl-y-direction-zb  =  0  1  0  ! y axis perpendicular to (0 1 0) plane, i.e. parallel to [010] direction
(hkl-z-direction-zb  =  0  0  1) !
z axis perpendicular to (0 0 1) plane, i.e. parallel to [001] direction

Example:
 hkl-z-direction-zb  =  3  1  1  ! x axis perpendicular to (3 1 1) plane, i.e. parallel to [311] direction
 hkl-y-direction-zb  =  0  1 -1  !
y axis perpendicular to (0 -1 -1) plane, i.e. parallel to [0-1-1] direction
(hkl-x-direction-zb
calculated internally.)

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

Wurtzite

Similar as above for wurtzite. However, wurtzite is hexagonal and the cartesian axes system is cubic. For that reason, some crystallographic equivalent planes will have different indices.
This can be solved using 4-digit Miller-Bravais indices (hkil) (i.e. four-axis a1, a2, a3, c with a1, a2, a3 lying in the same plane (=basal plane)).
Rule: The first three indices must some to zero, i.e. h + k + i = 0

 hkil-x-direction  =  1  0 -1  0 ! The x-axis of the simulation coordinate system is parallel to the vector that is perpendicular to the (h k i l) = ( 1  0 -1  0 ) plane.
 hkil-y-direction  = -1  2 -1  0 ! The y-axis of the simulation coordinate system is parallel to the vector that is perpendicular to the (h k i l) = (-1  2 -1  0 ) plane.
 hkil-z-direction  =  0  0  0  1 !
The z-axis of the simulation coordinate system is parallel to the vector that is perpendicular to the (h k i l) = ( 0  0  0  1 ) plane. (calculated internally)

The direction of the third axis is calculated internally.

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.

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. A good reference is F. C. Frank, Acta Cryst. 18, 862 (1965).

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 ! x coordinate axis is perpendicular to (0 0 0 -1) plane
     hkil-z-direction = 1 0 -1  0 ! z coordinate axis is perpendicular to (1 0 -1 0) plane
    If one grows the quantum well perpendicular to the (10-10) plane, then the pyroelectric and piezoelectric fields along the growth direction z 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 ! x coordinate axis is perpendicular to (-1 -1 2 3) plane
      hkil-y-direction =  1 -1  0  0 ! y coordinate axis is perpendicular to (1 -1 0 0) plane
    ! 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 vector perpendicular to the (0001) plane.
     

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

 

Let's look at a further example. (This should be checked again.)

  • semi-polar: (-1-12-2) plane
     hkil-x-direction  =  1  -1   0  0  !
    x coordinate axis is perpendicular to ( 1 -1  0  0) plane
     hkil-y-direction  = -1  -1   2  3  ! y coordinate axis is perpendicular to (-1 -1  2  3) plane
     hkil-z-direction  =  8   8 -16  9  !
    z coordinate axis is perpendicular to ( 8  8 -16 9) plane
    In this example, the (1  -1   0  0) plane is orthogonal to both (-1  -1   2  3) and (8   8 -16  9) planes
    but the direction [-1  -1   2  3] is not orthogonal to the direction [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 for the real c/a ratio would have been:
    hkil-z-direction  =  100000000000   100000000000   -200000000000   113483513101 !
    where 113483513101 = 3 * a^2 / c^2.

  • A user reported: "For example for (10-1-1) I use these 2 planes: (1 -2 1 0) and (-178 0 178 101)."

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   !
x axis perpendicular to (1-100) plane
    hkil-y-direction = 1  1 -2 -3   !
y axis perpendicular to (11-23) plane
   !hkil-z-direction = 1  1 -2  1   !
z axis perpendicular to (11-21) plane

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 x axis of simulation coordinate system
                        = 0 1 0 !
along y axis of simulation coordinate system
                        = 0 0 1 !
along z axis of simulation coordinate system
                        = 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 the vector perpendicular to the (311) plane:
 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.

 

Rotation of wurtzite crystals

The ideal axial ratio of the hexagonal lattice (hexagonal close-packed structure) of c/a in wurtzite crystals is SQRT(8/3)=1.63299....
However, in real wurtzite crystals such as GaN, AlN and InN, the c/a ratio is slightly different.
c is the lattice constant perpendicular the (0001) plane, a is the lattice constant that lies in the (0001) plane.

In order to specify the rotation matrix that rotates the crystal coordinate system to the simulation coordinate system, the Miller-Bravais indices of the planes have to be specified (hkil-x-direction, ...), see the detailed description above.

 wurtzite-rotation-matrix = c-a-ratio-substrate       ! Each material is using the rotation matrix of the common (or local) substrate, i.e. substrate's c/a ratio. (default) ([Romanov2006] seems to use the common substrate model.)
                                                      ! (Note that nextnano allows to enter (optionally) for each material its own substrate, therefore the term '(or local)' in the previous sentence.)
                          = c-a-ratio-ideal           ! Each material is using the rotation matrix of the ideal wurtzite crystal. (This is the implementation of nextnano++.) The rotation matrix for all materials is the same.
                          = c-a-ratio-local           !
Each material is using the rotation matrix of its local c/a ratio (not implemented yet, not sure if this can be useful, e.g. for linearly graded alloys)                         

For example, the angle between the plane (10-1-3) and the c plane (0001) is different for (see e.g. [Romanov2006] A. E. Romanov et al., JAP 100, 023522 (2006))

  • AlN (31.64)
  • GaN (32.04)
  • InN (31.81) and
  • the ideal wurtzite crystal (32.15).

So if we specify hkil-x-direction = 1 0 -1 -3, we have to define which c/a ratio we want to use.

c-a-ratio-substrate: By default, for each material the c/a ratio of its global substrate is used, i.e. the substrate's c/a ratio is used.
The crystal coordinate system has been rotated to the simulation coordinate system assuming the substrate's c/a ratio.
Therefore, for all materials, the same rotation matrix is used (unless one specifies for a material its own substrate).

c-a-ratio-ideal: Optionally, the user can specify to use the ideal c/a ratio in order to be consistent with the nextnano++ implementation.
The crystal coordinate system has been rotated to the simulation coordinate system assuming the ideal c/a ratio.
For all materials, the same rotation matrix is used.

 

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