nextnano.com  nextnano³  Download | Search | Copyright | Publications  * password protected nextnano³ software 1D QW optical absorption

# nextnano3 - Tutorial

## Optical absorption of an InGaAs quantum well

Author: Stefan Birner

If you want to obtain the input files that are used within this tutorial, please check if you can find them in the installation directory.
If you cannot find them, please submit a Support Ticket.
`-> InGaAs_7nm_optics_step1.in`
```   InGaAs_7nm_optics_step2.in    InGaAs_7nm_optics_step3_x_polarized.in    InGaAs_7nm_optics_step3_z_polarized.in```

## InGaAs quantum well

• We want to calculate the optical absorption as a function of photon energy for interband (i.e. electron-hole) transitions in a quantum well by means of 8-band k.p theory.
• This input file simulates a 7 nm In0.3Ga0.7As quantum well embedded in GaAs which acts as the barrier material. The InGaAs quantum well is strained pseudomorphically with respect to the substrate material GaAs (001). The temperature is assumed to be 150 K. The effect of strain is included into the 8-band k.p Hamiltonian.
• Detailed description about the physical background that is used to calculate the optical absorption:
Absorption, Matrix elements, Inter-band transitions, Intra-band transitions (pdf file).
Restrictions: The physical model is only correct for  growth direction. We also neglect the k vector dependence of the matrix elements.
• The``` \$numeric-control ```features that have to be used are:
```\$numeric-control  simulation-dimension = 1  ... \$end_numeric-control```

To calculate the optical absorption, we have to perform a 3-step approach:

• Step 1: Here: Calculate k.p eigenstates for k||=0``` 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.
Note: Usually one could do the following:
- Solve for self-consistent potential with effective-mass approximation instead of 8-band k.p. This is much faster.
- Write out raw data for potential and Fermi levels (and strain if necessary).
- Use this potential and these Fermi levels to solve 8-band k.p eigenstates in step 2.
• Step 2: Calculate eigenstates for k||/=0``` 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, 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 1: Calculate k.p eigenstates for k||=0

• For step 1, the relevant specifier for the keyword``` \$optical-absorption ```is only the following:
``` calculate-optics      = no ```This is equivalent to not including this keyword at all. For step 1 we do not need optics, we just calculate the k.p eigenstates.``` \$optical-absorption  destination-directory = optics1/       ! ```directory for output and data files```  calculate-optics      = no             ! ```flag: "`yes`"/"`no`"```  kind-of-absorption    = interband-only ! 'interband-only'```, `'intra-vb-only'`, ```'intra-cb-only'  read-in-k-points      = no             ! ```flag: "`yes`"/"`no`"```  ... \$end_optical-absorption  ```
• This pictures shows the calculated electron and hole states that are bound inside the well. The conduction (cb) and valence band edges (hh: heavy hole, lh: light hole) are also indicated. The electron and hole states that are not bound inside the well are not shown although they are needed to calculate the optical absorption.
The transition energies that are relevant for the interband (i.e. electron-hole) transitions were calculated. Note that 'lh1' corresponds to the first light hole state, and hh1, hh2 and hh3 to the heavy holes. These transition energies between bound states were calculated without taking into account the exciton corrections. The three lines indicate the strongest transitions: The "Delta n = 0" selection rule, i.e. transitions between levels with the same index.

Figure 1: ## Step 2: Calculate eigenstates for k||/=0

• For step 2, the relevant specifiers for the keyword``` \$optical-absorption ```are the following:
In step 1 we used:
``` calculate-optics      = no ```This time we need:
``` calculate-optics      = yes```
``` \$optical-absorption  destination-directory = optics1/       ! ```directory for output and data files```  calculate-optics      = yes            ! ```flag: "`yes`"/"`no`"```  kind-of-absorption    = interband-only ! 'interband-only' (8x8kp)```, ```'intra-cb-only' (8x8kp)```, ```'intra-vb-only' (6x6kp)  read-in-k-points      = no             ! ```flag: "`yes`"/"`no`"```                                         !                                         ! ```2nd step: k point calculations``` e-min-state           = -0.80d0        ! ```energy of lowest  eigenvalue considered for calculation```  e-max-state           =  1.60d0        ! ```energy of highest eigenvalue considered for calculation```  ... \$end_optical-absorption ```If` read-in-k-points = no`, we therefore have to specify the relevant parameters that are needed for the k point calculations.

``` \$quantum-model-electrons```
``` ...  num-kp-parallel  = 1000   ! STEP 2/3   ! ```total number of k|| points for Brillouin zone discretization``` \$quantum-model-holes```
``` ...  num-kp-parallel  = 1000   ! STEP 2/3   ! ```total number of k|| points for Brillouin zone discretization```  ```
• Explanations:
- In order to study interband (electron-hole) transitions, we need 8-band k.p.
- From Figure 1 we obtain the minimum and maxium energy of the eigenstates that will be considered for transitions. We consider all electron states up to 1.6 eV and all hole states up to -0.8 eV (CHECK: It seems that -0.8 is not low enough). This corresponds to 50 eigenvalues for the electrons and 40 for the holes.

• Output
Once the calculation of step 2 is done, the folder``` optics1/ ```contains the following files:
`  optics_out_eigenvalues_el1D.txt - `contains electron eigenvalues in ASCII format```   optics_out_eigenvalues_hl1D.txt - ```contains hole      eigenvalues in ASCII format ```   optics_out_spinor_el1D.raw      - ``` contains electron k.p wave function components (spinors) in raw data (binary) format```   optics_out_spinor_hl1D.raw      - ``` contains hole       k.p wave function components (spinors) in raw data (binary) format``` ```In this tutorial example, the latter files are very large.
They contain for each k|| = (kx,ky) value, the k.p wave function components (spinors) for all eigenvalues.

In detail:
`- `We have 95 grid points in the quantum region (from 30 nm to 77 nm), i.e. a grid point resolution of 0.5 nm which is rather coarse.
`  `This means that each spinor has a size of 96.
`    grid = 95`
`- `We have 8-band k.p, i.e. 8 spinors.
```    spinor = 8 - ```The dimension of the matrix that we have to diagonalize for each k|| point is 760, i.e. a 760 x 760 matrix.
`grid * spinor = 95 * 8 = 760`
`- `We have 961 k|| points, i.e. 961 matrices have to be diagonalized.
```    k_parallel = 961 - ```The wave functions are complex, thus we have to store two numbers, a real part and an imaginary part.
```    complex = 2 ==> ```For each eigenvalue of a k|| point we have to store the following amount of data for its wave function:```     complex * k_parallel * spinor * grid =        2    *     961    *   8    * 95   = 1,460,720 ```double precision numbers```     ```A double precision number needs 8 byte.``` ==> 11,685,760 byte = 11.14 MB - ```However, there are several eigenvalues (and thus wave function components (spinors) for each of them) for each k|| point which have to be stored.
`    `number of electron eigenvalues:``` MAX_NUM_EL1D = 50     ```number of hole eigenvalues:```    MAX_NUM_HL1D = 38     ==> ```for electrons:``` 50 * 11.14 MB = 557.22 MB   (```corresponding to the size of the file` optics_out_spinor_el1D`)```     ==> ```for holes:```    38 * 11.14 MB = 423.49 MB   (```corresponding to the size of the file``` optics_out_spinor_hl1D```)```     ```(Note that 1 kB is 1024 byte, and that 1 MB is 1024 kB.)

These data files will be read in in the next step (Step 3).

## Step 3: Calculate optical absorption

• For step 3, the relevant specifiers for the keyword``` \$optical-absorption ```are the following:
In step 2 we used:
``` calculate-optics            = yes  read-in-k-points            = no ```This time we need:
``` calculate-optics            = yes```
``` read-in-k-points            = yes \$optical-absorption  destination-directory       = optics1/       ! ```directory for output and data files```  calculate-optics            = yes            ! ```flag: "`yes`"/"`no`"```  kind-of-absorption          = interband-only ! 'interband-only'```, `'intra-vb-only'`, ```'intra-cb-only'  read-in-k-points            = yes            ! ```flag: "`yes`"/"`no`"```  e-min-state                 = -0.80d0        ! ```energy of lowest  eigenvalue considered for calculation```  e-max-state                 =  1.60d0        ! ```energy of highest eigenvalue considered for calculation```                                               ! ```3rd step: Calculate optical absorption```  e-min-photon                = 1.10d0         ! [eV] ```lower boundary for photon energy interval```  e-max-photon                = 1.60d0         ! [eV] ```upper boundary for photon energy interval```  smoothing-of-curve          = yes            ! ```(default)```  smoothing-damping-parameter = 5d-4           ! [eV] ```artificial damping parameter for smoothing of absorption curve```  num-energy-steps            = 1000           ! ```number of energy steps ```                                               ! ```y polarized light```  polarization-vector-1       = 1d0 0d0 0d0    ! ```x y z coordinates (in simulation system) for first in-plane vector```  polarization-vector-2       = 0d0 1d0 0d0    ! ```x y z coordinates (in simulation system) for second in-plane vector```  magnitude-relation-1-2      = 0d0            ! ```relation of magnitudes``` |E1|/|E2|  phase                       = 0.0d0          ! ```phase:``` E2 -> exp(i*phase*Pi)*E2 \$end_optical-absorption ```If` read-in-k-points = yes`, we read in the data files that were created in step 2:
```optics1/optics_out_eigenvalues_el1D         optics_out_eigenvalues_hl1D         optics_out_spinor_el1D         optics_out_spinor_hl1D```
• Figure 2 shows the optical absorption spectrum as a function of photon energy for x- and z- polarized light.

x-polarized light (black line): The light propagation is normal to the quantum well along the z direction. Here, it is x-polarized. If it were y-polarized, the same absorption spectrum would have been obtained.

z-polarized light (red line): The light propagation is in the plane of the quantum well with perpendicular E-field polarization (along the z direction). This is the transverse magnetic (TM) mode. No absorption for heavy holes is seen. (This is not exactly true because the TM mode has a component of the electric field along the direction of propagation x. But it is small in a weakly guiding structure.) Consequently in Fig. 2 only the transition involving the light hole is seen (e1-lh1) and the heavy hole transitions are suppressed (e1-hh1, e2-hh2).

Figure 2 The optical absorption spectrum ranges from 1.10 eV to 1.60 eV. The relevant specifiers to determine this range are:
``` e-min-photon           = 1.10d0         ! ```lower boundary for photon energy interval```  e-max-photon           = 1.60d0         ! ```upper boundary for photon energy interval``` ```

The energy interval from 1.10 eV to 1.60 eV (```[e-min-photon,e-max-photon] = [1.10d0,1.60d0]```) is divided into a number of energy steps (energy grid) that must be specified in the input file:` num-energy-steps = 1000`

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

## Exciton binding energy in quantum wells

• In order to correlate the calculated optical transition energies of a 1D quantum well to experimental data, one has to include the exciton (electron-hole pair) corrections.

- GaAs band gap transition at 1.49 eV:
The 3D bulk exciton binding energy can be calculated analytically
Eex,b = - µ e4 / ( 32 pi² hbar² er² e0²) = - µ / (m0 er²) x 13.61 eV
where µ is the reduced mass of the electron-hole pair: 1/µ = 1/me + 1/ mh
hbar is Planck's constant divided by 2pi
e is the electron charge
er is the dielectric constant
e0 is the vacuum permittivity
m0 is the rest mass of the electron and
13.61 eV is the Rydberg energy.
In GaAs it is equal to -4.8 meV.
Thus the energy of the exciton, i.e. band gap transition, reads
Eex = Egap + Eex,b = 1.49 eV - 0.005 eV = 1.485 eV.

A 1D quantum well for a type I structure has two exciton limits for the ground state transition (e1-hh1):
- infinitely thin quantum well (2D limit): Eex,qw = 4Eex
- infinitely thick quantum well (3D bulk exciton limit): Eex,qw = Eex
Between these limits, the exciton correction which depends on the well width has to be calculated numerically, not only for the ground state but also for excited states (e.g. e2-hh2, e1-lh1).

For more details, please have a look at our 1D exciton tutorial: Exciton energy in quantum wells