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.
|