| www.nextnano.com/documentation/tools/nextnano3/input_syntax/keywords/optical-absorption.html
 
 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-statein the second step.Step 2:Read in raw data (potential, quasi-Fermi levels, strain (if 
  applicable)) and output k points:calculate-optics = yes
 read-in-k-points = no
 
 raw-potential-in = yes, raw-fermi-levels-in 
	= yes, strain-calculation = 
  raw-strain-inStep 3: Calculate optical absorptionRead in k points, calculate and output optical absorption.calculate-optics = yes
 read-in-k-points = yes
 
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).
   !---------------------------------------------------------!flag:$optical-absorption                             
optional  !
 destination-directory            
character    
required  !
 calculate-optics                 
character    
optional  !
 "yes"/"no"flag:kind-of-absorption               
character    
optional  !
 read-in-k-points                 
character    
optional  !
 "yes"/"no"if!
 !
 'read-in-k-points = no' then specify 
k point calculation       ! 2nd step(optional)num-quantum-cluster              
integer      
optional  !
lowest  
eigenvaluee-min-state                      
double       
optional  ! [eV]
highest 
eigenvaluee-max-state                      
double       
optional  ! [eV]
3rd step!
 !
lower  
boundarye-min-photon                     
double       
optional  ! [eV]
uppper 
boundarye-max-photon                     
double       
optional  ! [eV]
flag:num-energy-steps                 
integer      
optional  !
 smoothing-of-curve               
character    
optional  !
 "yes"/"no"artificial damping parameter 
for smoothing of absorption curvesmoothing-damping-parameter      
double       
optional  ! [eV]
coordinatesE-P                              
double       
optional  ! [eV]  |<S|p|X>|^2
 polarization-vector-1            
double_array  optional  ! x y z
coordinatespolarization-vector-2            
double_array  optional  ! x y z
optional input for 
Fermi level of electrons (default: calculated Fermi level)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 holes      (default: calculated Fermi 
level)fermi_in_hl                     
double       
optional  ! [eV]
optional input of 
device thickness for normalization of absorptiondevice_thickness_in             
double       
optional  ! [m]
flag:!
 k-space-symmetry                
character    
optional  !
 !
 !
 incident-light-along-direction   
character    
optional  ! x,y,z
 !
 import-absorption-spectrum       
character    
optional  !
 "yes"/"no"flag:file-absorption-spectrum         
character    
optional  !
 !
 import-reflectivity-spectrum     character    
optional  !
 "yes"/"no"flag:file-reflectivity-spectrum       
character    
optional  !
 !
 import-transmission-spectrum     character    
optional  !
 "yes"/"no"flag:file-transmission-spectrum       
character    
optional  !
 !
 import-solar-spectrum           
character    
optional  !
 "yes"/"no"flag:file-solar-spectrum              
character    
optional  !
 !
 number-of-suns                  
double    
   optional  !
 !
 calculate-black-body-spectrum    
character    
optional  !
 "yes"/"no"$end_optical-absorption                        
optional  !
 !---------------------------------------------------------!
   Syntaxdestination-directory  = optics1/Directory for output and data files.
 calculate-optics       = 
yesFlag to distinguish between= no
 
- Step 1: For calculation of k.p wavefunctions for all k|| 
vectors), and
 - Step 2 and Step 3: Reading in previously calculated k.p 
wavefunctions for all k|| vectors (in order to save CPU time), and 
then calculating the optical absorption.
 
 e-min-photon           
= 1.500      ! [eV] lower boundary 
for photon energyupper boundary 
for photon energye-max-photon           = 
1.700      ! [eV]
Specifications for absorption energy range: lower/upper boundary for photon energy interval
 num-energy-steps       = 
1000Number 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.
     First step kind-of-absorption     = interband-onlyconsiders only interband transitions between holes and 
electrons= intra-vb-only
 = intra-cb-only
 = intra-sg-only
 'interband-only':
considers only intraband transitions within the valence 
bandsheavy hole     <-->   Gamma band
 light hole     <-->   Gamma band
 split-off hole <-->   Gamma band
 'intra-vb-only' :
considers only intraband transitions within the 
conduction band (Gamma band)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 same band (single-band for Gamma, L, X, heavy hole, light hole, split-off 
hole band)Gamma band     <-->   Gamma band
 'intra-sg-only' :
This is a simple algorithm taking only account the energy levels and wave 
functions at k||=0.Gamma band     <-->   Gamma band
 L band         <-->   L band
 X band         <-->   X band
 heavy hole     <-->   heavy hole
 light hole     <-->   light hole
 split-off hole <-->   split-off hole
 
 read-in-k-points       = 
yesFlag to distinguish between step 2 and 3.= no
 
   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.
 e-min-state            
= -1.7      ! [eV] lowest  eigenvaluehighest eigenvaluee-max-state            =  
0.3      ! [eV]
energy of lowest/highest eigenvalue considered for calculation
 $quantum-model-electrons
  ...total number of k|| points for Brillouin zone 
discretizationnum-kp-parallel  =
  1700   ! STEP 2/3   
  !
 $quantum-model-holes
  ...total number of k|| points for Brillouin zone 
discretizationnum-kp-parallel  =
  1700   ! STEP 2/3   
  !
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 (without Gamma point): 
N_kx
 - number of k points in positive y direction (without Gamma point): 
N_ky 
= N_kx
 ==> Thus the actual, total number of k|| points 
is:total_number_of_k|| 
= (2 * N_kx + 1) * (2 * N_ky + 1)
 In this example (
 num-kp-parallel = 1700):
 - N_kx = N_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)(only relevant for the calculation of the absorption curve in the 3rd 
step)= no      !
 smoothing-damping-parameter = 0.5e-3  ! [eV]
Smoothing of absorption curve: We introduce an artificial smoothing of 
the curve by calling the function
 Lorentzian.The artificial parameter for smoothing of absorption curve is
  
smoothing-damping-parameter. It is usually denoted as Gamma and is the 
Full Width at Half Maximum (FWHM).
 
   absorption_NoSmoothingV = absorptionVabsorptionV = 0.0
 DO  i=1,num-energy-steps+1 ! Loop over all energy grid points E(i) and determine 
absorption alpha(i)=alpha(E).
 DO j=1,num-energy-steps+1 ! This loop is essentially an integration over energy dE.
 
 E_weight = (Lorentzian( E_gridV(j), 
  E_gridV(i), smoothing-damping-parameter ) 
- &
 Lorentzian( E_gridV(j), 
 - E_gridV(i), smoothing-damping-parameter ) 
) * DeltaEnergy
 
 absorptionV(i) = absorptionV(i) + absorption_NoSmoothingV(j) * E_weight
 
 END DO
 END DO
 
Lorentzian lineshape
 
 
    FUNCTION Lorentzian (E,E0,Gamma)is the scale parameter 'Lorentzian half-width': Half Width at Half Maximum (HWHM)
 Lorentzian = 1 / pi * alpha / ( (E - E0)2 
+ alpha2 
)
 
 alpha
energy of light for 
which absorption should be calculatedalpha = Gamma 
/ 2 = smoothing-damping-parameter / 2
 
 
 DeltaEnergy = (e-max-photon 
- e-min-photon ) / (num-energy-steps)
 
 E_gridV =
 [eV]DO i=1,num-energy-steps+1
 E_gridV(i) =
e-min-photon + (i-1) * DeltaEnergy
 END DO
 
   The following specifiers are only used for the k.p optical 
absorption algorithm but not for the simple intersubband transition algorithm.   E_P                    
= 22.0        
! [eV]is Kane's matrix element EP = | < S | p | X > |2. 
It
should be around 20 eV and depends on the material.E_P
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 * P2In 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  = 1.0  0.0  0.0coordinates (in simulation system) for first/second in-plane vectorpolarization-vector-2  = 0.0  1.0  0.0
 x y z
 Example:
 
   1D well, inter-band
 polarization-vector-1  = 1.0  0.0  0.0polarization-vector-2  = 0.0  1.0  0.0
 magnitude-relation-1-2 = 1.0
 1D well, intra-band
 polarization-vector-1  = 0.0  0.0  
  1.0Note: Intraband absorption only for z-polarized light.polarization-vector-2  = 0.0  0.0  1.0
 magnitude-relation-1-2 = 0.0
 
  How to specify x-polarized light: 
  polarization-vector-1  = 0.0 1.0 0.0    
  ! x y z coordinates (in simulation system) for first in-plane vectorx y z coordinates (in simulation system) for second in-plane vectorpolarization-vector-2  = 1.0 0.0 0.0    
  !
relation of magnitudesmagnitude-relation-1-2 = 0.0            
  !
 |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  = 1.0 0.0 0.0    
  ! x y z coordinates (in simulation system) for first in-plane vectorx y z coordinates (in simulation system) for second in-plane vectorpolarization-vector-2  = 0.0 0.0 1.0    
  !
relation of magnitudesmagnitude-relation-1-2 = 0.0            
  !
 |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  = 1.0 0.0 0.0    
  ! x y z coordinates (in simulation system) for first in-plane vectorx y z coordinates (in simulation system) for second in-plane vectorpolarization-vector-2  = 0.0 0.0 1.0    
  !
relation of magnitudesmagnitude-relation-1-2 = 1.0            
  !
 |E1|/|E2|(In this case,
 polarization-vector-1 is not ignored as 
  |E1|=|E2|.)  magnitude-relation-1-2 = 1.0relation of magnitudes
 |E1|/|E2|
   phase                  
= 0.5phase:
  E2-> exp(i*phase*Pi)*E2
   fermi_in_el            
= 0.0     ! [eV]optional input for Fermi level of electrons (default: calculated Fermi 
level)
 fermi_in_hl            
= 0.0     ! [eV]optional input for Fermi level of holes      
(default: calculated Fermi level)
   device_thickness_in    = 1e-6     ! [m]optional input of device thickness for normalization of absorption
   k-space-symmetry       = 
default    ! (default)Symmetry of k|| = (kx,ky) space to be 
discretized. If any symmetry is present, less k|| points have to be 
calculated.=
none       !
 =
four-fold  !
 
By default, the appropriate symmetry is chosen taking into account any crystal 
rotations with respect to the simulation axes, as well as nonsymmetric strains.
   
 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:
 Note:  As this tensor is complex, for each component, two 
values are written out.chi11re  chi11im  chi22re  chi22im  
chi33re  chi33im  chi12re  chi12im  
chi13re  chi13im  chi23re  chi23im
 
 
      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.   
 Solar cellsThe following flags are useful for solar cell simulations (photovoltaics).    incident-light-along-direction =  x          ! 
incident light along  x directionIn a 1D simulation, this specifier is optional. For 2D, and 3D, a 
direction must be specified.=  y          ! 
incident light along  y direction
 =  z          ! 
incident light along  z direction
 = -x          ! 
incident light along -x direction
 = -y          ! 
incident light along -y direction
 = -z          ! 
incident light along -z direction
 
   Solar spectrumFor a solar cell simulation, one has to read in a solar spectrum, e.g. AM 
1.5, or AM 1.0 (AM = air mass).They can be obtained from NREL website, e.g. ASTM-E490:
https://www.nrel.gov/grid/solar-resource/spectra-astm-e490.html
 (AMST = American Society for Testing and Materials)
     import-solar-spectrum           
= yesAM 1.0 spectrum (extraterrestrial)= no
 !file-solar-spectrum             
= H:\solar_cells\ASTMG173_AM10.dat  !
AM 1.5 spectrum!file-solar-spectrum             
= H:\solar_cells\ASTMG173_AM15.dat  !
AM 1.5G spectrumfile-solar-spectrum             
= H:\solar_cells\ASTMG173_AM15G.dat !
The file must consist of two columns (wavelength and spectrum), the 
units are
 
 [nm] and [W/m^2*nm^-1].wavelength[nm]    AM1.5[W/m^2*nm^-1]
 ...               
...
   number-of-suns                  
=    1.0    
            
!    1   sunTo increase the power of the solar spectrum in order to model 
concentrator solar cells.=    2.5    
            
!    2.5 suns
 =   10.0    
            
!   10   suns
 = 1000.0    
            
! 1000   suns
 
   Absorption coefficient import-absorption-spectrum      =
yesThe file must consist of two columns (wavelength and absorption 
coefficient), the units are= no
 file-absorption-spectrum        =
AbsorptionCoefficient_GaAs_300K.dat
 
 [nm] and [1/cm].wavelength[nm]    absorption[1/cm]
 ...               
...
  Reflection coefficientFraction of incident photons that are reflected from surface for a particular 
wavelength.  import-reflectivity-spectrum    =
yesThe file must consist of two columns (wavelength and reflection 
coefficient), the units are= no
 file-reflectivity-spectrum      =
ReflectionCoefficient_GaAs_300K.dat
 
 [nm] and [].wavelength[nm]    reflectivity[]
 ...               
...
  Transmission coefficientFraction of incident photons that are transmitted through the device for a 
particular wavelength (relevant for very thin devices).   import-transmission-spectrum    =
yesThe file must consist of two columns (wavelength and transmission 
coefficient), the units are= no
 file-transmission-spectrum      =
ReflectionCoefficient_GaAs_300K.dat
 
 [nm] and [].wavelength[nm]    transmission[]
 ...               
...
   Black body spectrum  calculate-black-body-spectrum =
yes    Calculates black body spectrum according to 
Planck's 
law, e.g. to 
compare the solar spectrum to the spectrum of a black body at T = 5778 K.= no
 
 - The spectral energy density- the spectral radiance (which is emitted per m2 and 
per unit solid angle sr (sr = steradian)) and
 - the spectral irradiance (which is received per m2)
 is calculated.
 Note: spectral irradiance = spectral radiance * pispectral energy density = 
spectral radiance * 4pi/c
 There are several output files, i.e. output with respect to 
	wavelength lambda in units of [m].
 
 	BlackBody_SpectralEnergyDensity_wavelength.datWavelength[nm]                      
	SpectralEnergyDensity[kJ/m^3/m]
 	BlackBody_SpectralRadiance_wavelength.datWavelength[nm]                      
	SpectralRadiance[kW/m^2/nm/sr]
		BlackBody_SpectralIrradiance_wavelength.dat
 Wavelength[nm]                      
	SpectralIrradiance[kW/m^2/nm]
angular frequency w = 2pi v in units of [1/s].
 
 	BlackBody_SpectralEnergyDensity_angular_frequency.datAngularFrequency_omega[10^15/s]     
	SpectralEnergyDensity[10^-15J/m^3/s^-1]
 
	BlackBody_SpectralRadiance_angular_frequency.datAngularFrequency_omega[10^15/s]     
	SpectralRadiance[10^-12W/m^2/s^-1/sr]
BlackBody_SpectralIrradiance_angular_frequency.dat
 
   AngularFrequency_omega[10^15/s]     
	SpectralIrradiance[10^-12W/m^2/s^-1]
frequency v in units of [Hz].
 
 
		BlackBody_SpectralEnergyDensity_frequency.datFrequency[THz]                      
	SpectralEnergyDensity[10^-15J/m^3/Hz]
 
	BlackBody_SpectralRadiance_frequency.datFrequency[THz]                      
	SpectralRadiance[10^-12W/m^2/sr]
 
		BlackBody_SpectralIrradiance_frequency.datFrequency[THz]                      
	SpectralIrradiance[10^-12W/m^2/Hz]
photon energy E = h v in units of [eV].
 
 
		BlackBody_SpectralEnergyDensity_energy.datAngularFrequency_omega[10^15/s]     
	SpectralEnergyDensity[kJ/m^3/eV]
 
	BlackBody_SpectralRadiance_energy.datAngularFrequency_omega[10^15/s]     
		SpectralRadiance[kW/m^2/eV/sr]
 
	
		BlackBody_SpectralIrradiance_energy.datAngularFrequency_omega[10^15/s]     
	SpectralIrradiance[kW/m^2/eV]
 
 The file BlackBody_Info.txt contains some additional information 
about the calculated black body spectrum.   Solar cell outputAll output is twofold:- one is with respect to wavelength in units of [nm]
 - one is with respect to photon energy in units of [eV]  (indicated by
 
_eV*.dat) 
	optics/Absorption_coefficient.dat              
	(as read in from file but now in units of [1/m])(interpolated on 
	wavelength grid of solar spectrum but now in units of [1/m])optics/Absorption_coefficient_interpolated.dat
(as read in from file)optics/Reflectivity.dat
(interpolated on wavelength grid of solar spectrum)optics/Reflectivity_interpolated.dat
(as read in from file)optics/Transmission.dat
(interpolated on wavelength grid of solar spectrum)optics/Transmission_interpolated.dat
 (as read in from file)optics/SolarSpectralIrradiance_sun0001.dat
(photon flux density calculated from solar spectrum)optics/PhotonFlux_sun0001.dat
Total number of photons in the solar spectrum above an energy 
	value contributing to the maximum photo current for a solar cell made with a 
	specific band gap:
 
(calculated from solar spectrum)optics/PhotonFlux_BandGap_eV_sun0001.dat
(calculated from solar spectrum)optics/PhotoCurrent_BandGap_eV_sun0001.dat
 optics/SpectralResponse_sun0001.dat             
	external and internal spectral response
 optics/QuantumEfficiency_sun0001.dat            
	external and internal quantum efficiency
 optics/GenerationRateLight_AVS_sun0001.fld      2D 
	plots GenerationRate(x,lambda) and  GenerationRate(x,E)
 optics/GenerationRateLight_sun0001.dat          
	1D plot  GenerationRate(x)
 optics/GenerationRate_eV_sun0001.dat            
	1D plot  GenerationRate(E)  (E=energy)
 optics/GenerationRate_Wavelength_sun0001.dat    1D plot  
	GenerationRate(lambda)
 
current/IV_characteristics_new.dat
 voltage[V]  current[A/m^2] ... power[W/m^2] powersolar[W/m^2] 
	efficiency[%]
 
	 ****************************************************************************************Solar cell results
 ****************************************************************************************
 short-circuit current:       I_sc     =       281.473346 [A/m^2]                  (photo current: It increases with smaller band gap.)
 open-circuit voltage:        U_oc     =  -1.012500 [V]                           (U_oc <= built-in potential ~ band gap)
 current at maximum power:    I_max   =       273.089897 [A/m^2]
 voltage at maximum power:    U_max   =  -0.925000 [V]
 maximum power output:        P_max   = U_max * I_max =      -252.608155 [W/m^2] (condition for maximum power output: dP/dV = 0)
 maximum extracted power:     P_solar = - P_max           =  252.608155 [W/m^2]
 incident power:              P_in     =   0.000000 [W/m^2]
 ideal conversion efficiency: eta     = P_max / P_in  =         Infinity %
 fill factor:                               FF      =   0.886370
 In practice, a good fill factor is around 0.8.
 All these results are approximations.
 They are only correct if a lot of voltage steps have been used (i.e. a high resolution).
 ****************************************************************************************
 
 |