[ Home ] [ News ] [ Contact ] [ Search ] Optical absorption

 About us
 Useful Links
 Publications
 Copyright notice
 nextnano³ documentation

 -> Download Software
 * password protected

 

 
Up
 

Optical absorption

Detailed description about the Physics: Absorption, Matrix elements, Inter-band transitions, Intra-band transitions.

A tutorial is available that describes this keyword: Optical absorption of an InGaAs quantum well

Here you can specify the options for the optical absorption.
This will be a 3-step approach:

  • Step 1:
    calculate-optics = no

    Solve k.p and determine lowest and highest eigenvalue to specify e-min-state and e-max-state in the second step.
  • Step 2:
    calculate-optics = yes
    read-in-k-points = no
    Read in raw data (potential, quasi-Fermi levels, strain (if applicable)) and output k points:
    raw-potential-in = yes, raw-fermi-levels-in = yes (previously called: raw-fermi-in = yes), strain-calculation = raw-strain-in
  • Step 3: Calculate optical absorption
    calculate-optics = yes
    read-in-k-points = yes
    Read in k points, calculate and output optical absorption.
    If one wants to repeat the calculation for another polarization, one only needs to change the polarization vector and repeat step 3.
    It is not necessary in this case to recalculate step 1 or step 2.
    Step 3 also outputs the energy dispersion E(k||) = E(kx,ky).

 

!---------------------------------------------------------!
$optical-absorption                             optional  !
 destination-directory            character     required  !
 calculate-optics                 character     optional  !
flag: "yes"/"no"
 kind-of-absorption               character     optional  !
 read-in-k-points                 character     optional  !
flag: "yes"/"no"
                                                          !
 !
if 'read-in-k-points = no' then specify k point calculation       ! 2nd step
 num-quantum-cluster              integer       optional  !
(optional)
 kind-of-kp                       character     optional  ! '8x8', '6x6'
 k-max                            double        optional  ! [
in units pi/a]
 e-min-state                      double        optional  ! [eV]
lowest  eigenvalue
 e-max-state                      double        optional  ! [eV]
highest eigenvalue
                                                          !
                                                          !
3rd step
 e-min-photon                     double        optional  ! [eV]
lower  boundary
 e-max-photon                     double        optional  ! [eV]
uppper boundary
 num-energy-steps                 integer       optional  !
 smoothing-of-curve               character     optional  !
flag: "yes"/"no"
 smoothing-damping-parameter      double        optional  ! [eV]
artificial damping parameter for smoothing of absorption curve
 E-P                              double        optional  ! [eV]  |<S|p|X>|^2
 polarization-vector-1            double_array  optional  ! x y z
coordinates
 polarization-vector-2            double_array  optional  ! x y z
coordinates
 magnitude-relation-1-2           double        optional  ! |E1|/|E2|
 phase                            double        optional  ! E2 -> exp(i*phase*Pi)*E2
                                                          !
 fermi_in_el                      double        optional  ! [eV]
optional input for Fermi level of electrons (default: calculated Fermi level)
 fermi_in_hl                      double        optional  ! [eV]
optional input for Fermi level of holes      (default: calculated Fermi level)
 device_thickness_in              double        optional  ! [m] 
optional input of device thickness for normalization of absorption
                                                          !
$end_optical-absorption                         optional  !
!---------------------------------------------------------!

 

Syntax

First step

destination-directory  = optics1/
Directory for output and data files.
 

calculate-optics       = yes
                       = no
Flag to distinguish between step 1 and 2/3.
 

kind-of-absorption     = interband-only
                       = intra-vb-only
                       = intra-cb-only
'interband-only':
considers only interband transitions between holes and electrons
                       heavy hole     <-->   Gamma band
                       light hole     <-->   Gamma band
                       split-off hole <-->   Gamma band
'intra-vb-only' :
considers only intraband transitions within the valence bands
                       heavy hole     <-->   light hole
                       heavy hole     <-->   split-off hole
                       light hole     <-->   split-off hole
                       heavy hole     <-->   heavy hole
                       light hole     <-->   light hole
                       split-off hole <-->   split-off hole
'intra-cb-only' :
considers only intraband transitions within the conduction band (Gamma band)
                       Gamma band     <-->   Gamma band
 

read-in-k-points       = yes
                       = no
Flag to distiguish between step 2 and 3.
 

 

Second step

If 'read-in-k-points = no' then specify k point calculation. (These parameters will be ignored in Step 3.)

num-quantum-cluster = 1 ! (optional)
Number of quantum cluster for which absorption is calculated.
If this specifier is not present, the default value (num-quantum-cluster = 1) is taken.
 

kind-of-kp             = 8x8 ! 8-band k.p
                       = 6x6
! 6-band k.p
                       = 4x4
! 4-band k.p (not implemented yet)
 

k-max                  = 0.1d0
maximum k|| vector considered for calculation [in units pi/a] [default: 0.1d0]
k-max must be within ]0d0,1d0] because it is in units of [pi/a]  (a = lattice constant).
 

e-min-state            = -1.7d0      ! [eV] lowest  eigenvalue
e-max-state            =  0.3d0      ! [eV]
highest eigenvalue
energy of lowest/highest eigenvalue considered for calculation
 

e-min-photon           = 1.50d0      ! [eV] lower boundary
e-max-photon           = 1.70d0      ! [eV]
upper boundary
Specifications for absorption energy range: lower/upper boundary for photon energy interval

num-energy-steps       = 1000
Number of energy steps between e-min-photon and e-max-photon.
This number determines the resolution of the absorption curve alpha(E) where E is the energy in units of [eV].
==> The number of energy grid points = num-energy-steps + 1 because the first grid point (e-min-photon) is also included.

 

 

$quantum-model-electrons
 ...
 num-kp-parallel  = 1700   ! STEP 2/3   !
total number of k|| points for Brillouin zone discretization

$quantum-model-holes

 ...
 num-kp-parallel  = 1700   ! STEP 2/3   !
total number of k|| points for Brillouin zone discretization

The user specifies the total number of k|| points that are present in k|| space.
However, internally the code modifies this number according to the following algorithm:
- number of k points in positive x direction: number_of_kx = [ SQRT(num-kp-parallel) - 1 ] / 2
- number of k points in positive y direction: number_of_ky = number_of_kx
==> Thus the actual, total number of k|| points is:
        total_number_of_k|| = (2 * number_of_kx + 1) * (2 * number_of_ky + 1)
In this example (num-kp-parallel = 1700):
- number_of_kx = number_of_ky = 20
==> total_number_of_k|| = 41 * 41 = 1681

 

 

Third step

'read-in-k-points = yes' to read in k points, calculate and output optical absorption.

 

smoothing-of-curve          = yes     ! (default)
                            = no      !
smoothing-damping-parameter = 0.5d-3  ! [eV]
(only relevant for the calculation of the absorption curve in the 3rd step)
Smoothing of absorption curve: We introduce an artificial smoothing of the curve by calling the functions 'lorenzian' and 'lorenzian2'.
The artificial parameter for smoothing of absorption curve is smoothing-damping-parameter.

  absorption_tempM(:,1) = absorptionV
  absorptionV = 0d0
  DO  i=1,num-energy-steps+1
   DO j=1,num-energy-steps+1

    E_weight = (Lorentzian(   E_gridV(i),E_gridV(j), smoothing-damping-parameter) - &
                Lorentzian( - E_gridV(i),E_gridV(j), smoothing-damping-parameter) ) * E_step

    absorptionV(i) = absorptionV(i) + absorption_tempM(j,1) * E_weight

   END DO
  END DO

Lorentzian lineshape

   FUNCTION Lorentzian (E0,E,Gamma)

            Lorentzian = 1 / pi * alpha / ( (E - E0)2 + alpha2 )

            alpha
is the scale parameter 'Lorentzian half-width': half-width at half-maximum (HWHM)
            alpha = Gamma / 2 = smoothing-damping-parameter / 2


   E_step  = (e-max-photon - e-min-photon ) / (num-energy-steps)

   E_gridV =
energy of light for which absorption should be calculated [eV]
     DO i=1,num-energy-steps+1
      E_gridV(i) = e-min-photon + (i-1) * E_step
     END DO
 

 

E_P                    = 22d0        ! [eV]
E_P
is Kane's matrix element EP = | < S | p | X > |2. It should be around 20 eV and depends on the material.
The E_P [eV] parameter is given in the database by the specifier 8x8kp-parameters.
E_P can be converted into the P paramter by the following equation:
EP = 2m0/hbar2 * P2
In our model the E_P parameter is only relevant for interband transitions. It enters into the matrix element prefector (matrix_element_prefac) which is described in Section "1.1.1 Inter-band transitions" of the documentation:
Absorption, Matrix elements, Inter-band transitions, Intra-band transitions.
E_P has the same value for all materials in this implementation. In principle it could have been read in from the database rather than specifying it within the keyword
$optical-absorption.

 

 

polarization-vector-1  = 1d0  0d0  0d0
polarization-vector-2  = 0d0  1d0  0d0
x y z
coordinates (in simulation system) for first/second in-plane vector

Example:

  •  1D well, inter-band
    polarization-vector-1  = 1d0  0d0  0d0
    polarization-vector-2  = 0d0  1d0  0d0
    magnitude-relation-1-2 = 1d0
  •  1D well, intra-band
    polarization-vector-1  = 0d0  0d0  1d0
    polarization-vector-2  = 0d0  0d0  1d0
    magnitude-relation-1-2 = 0d0
    Note: Intraband absorption only for z-polarized light.

 

How to specify x-polarized light:
 polarization-vector-1  = 0d0 1d0 0d0    ! x y z coordinates (in simulation system) for first in-plane vector
 polarization-vector-2  = 1d0 0d0 0d0    !
x y z coordinates (in simulation system) for second in-plane vector
 magnitude-relation-1-2 = 0d0            !
relation of magnitudes |E1|/|E2|
 
(In this case, polarization-vector-1 is ignored as |E1| is set to be zero.)

How to specify z-polarized light:
 polarization-vector-1  = 1d0 0d0 0d0    ! x y z coordinates (in simulation system) for first in-plane vector
 polarization-vector-2  = 0d0 0d0 1d0    !
x y z coordinates (in simulation system) for second in-plane vector
 magnitude-relation-1-2 = 0d0            !
relation of magnitudes |E1|/|E2|
 
(In this case, polarization-vector-1 is ignored as |E1| is set to be zero.)

How to specify circularly polarized light [(x,z) plane]:
 polarization-vector-1  = 1d0 0d0 0d0    ! x y z coordinates (in simulation system) for first in-plane vector
 polarization-vector-2  = 0d0 0d0 1d0    !
x y z coordinates (in simulation system) for second in-plane vector
 magnitude-relation-1-2 = 1d0            !
relation of magnitudes |E1|/|E2|
 
(In this case, polarization-vector-1 is not ignored as |E1|=|E2|.)

 

magnitude-relation-1-2 = 1d0
relation of magnitudes |E1|/|E2|

 

phase                  = 0.5d0
phase:  E2-> exp(i*phase*Pi)*E2

 

fermi_in_el            = double    ! [eV]
optional input for Fermi level of electrons (default: calculated Fermi level)

fermi_in_hl            = double    ! [eV]
optional input for Fermi level of holes      (default: calculated Fermi level)

 

device_thickness_in    = double    ! [m]
optional input of device thickness for normalization of absorption

 


Results:

The units of the optical absorption are [1/m] and not "arbitrary units" as indicated in the figure.

 

  • The electric susceptibility tensor is contained in the file susceptibility_tensor.dat:

    chi11re  chi11im  chi22re  chi22im  chi33re  chi33im  chi12re  chi12im  chi13re  chi13im  chi23re  chi23im

    Note:  As this tensor is complex, for each component, two values are written out.
         re: real part, im: imaginary part
         The relevant part for the absorption is only the imaginary part.
     
  • In step 3, for each electron (el) and for each hole (hl) eigenvalue (i.e. ev00*), the energy dispersion E(kx,ky) is written out to the following files:
    optics/kp_optics_el_dispersionAVS2D_ev001.fld, *.coord, *.dat
    ...
    optics/kp_optics_hl_dispersionAVS2D_ev001.fld, *.coord, *.dat
    ...

    The format of the files is compatible to the AVS/Express software.

    The following figure shows the energy dispersion E(kx,ky) of the highest hole eigenstate (ground state).



    The units of the k|| space grid coordinates kx and ky are [1/Angstrom] and the energy units are [eV].

    The files
    - el_dispersion_100.dat
    - el_dispersion_110.dat
    - hl_dispersion_100.dat
    - hl_dispersion_110.dat

    show the same data but with slices along the [10] (i.e.  k||=(kx,ky=0)) and [11] (i.e. kx=ky) directions in k|| space.
    Here all electron and all hole eigenvalues are contained in one file, respectively.

 

Restrictions

  • Only Dirichlet boundary conditions are supported so far.
  • Step 2 and step 3 only work if raw-potential-in = yes.
   
Last modified: 09-Nov-2009   -   optimised for Microsoft Internet Explorer 7®