nextnano.com
==> nextnano Documentation (New)

nextnano++ software

     

Up

This is the old documentation. Here's the link to the new documentation.

optics{}

Specifications for the Optics module.

optics{

 debuglevel = 2                              #
integer value >= -1 and <= 4. The larger this value, the more verbose the diagnostic output will be. (default: debuglevel = 0)

 region{                                       
   name = "optical_active"                   #
name of the quantum region for which optics is calculated


      Input values
   polarization{ name = "x"        re = [1,0,0]                 } #
linearly polarized light in x direction. name is used for the file names of the output.
   polarization{ name = "y"        re = [0,1,0]                 } #
linearly polarized light in y direction
   polarization{ name = "z"        re = [0,0,1]                 } #
linearly polarized light in z direction

   polarization{ name = "TM"        re = [1,0,0]                } # TM mode. This naming might be useful when analyzing heterostructure grown in x direction.
   polarization{ name = "TEy"       re = [0,1,0]                } #
TE mode
   polarization{ name = "TEz"       re = [0,0,1]                } #
TE mode

   polarization{ name = "y+iz"     re = [0,1,0]   im = [0,0, 1] } #
(sigma+) circularly polarized light around the x axis
   polarization{ name = "y-iz"     re = [0,1,0]   im = [0,0,-1] } #
(sigma-) circularly polarized light around the x axis

   polarization{ name = "x1y1z2"   re = [1,1,2]                 } #
an example for an arbitrary polarization direction

   refractive_index     =                                         # []       (optional) Specify an alternative refractive index for the substrate material.
   normalization_volume =                                         # [nm^dim]
(optional) Specify an alternative normalization volume for the optical spectra. The default is the volume of the simulated device.


      Setting for k|| and eigenstate summation
   spin_degeneracy                 = yes     #
indicates that a state is spin-degenerate and must be counted twice. Only relevant for single-band calculations.
                                   = no      #
default for multi-band k.p calculations.
   spin_align                      = yes     #
aligns spin-degenerate states in a virtual magnetic field prior to the optics calculations.
                                   = no      #
Spin-degenerate states enter the optics calculation in a random superposition.

   interband                       = yes     #
Compute optical valence band to conduction band transitions. (default: yes)
                                   = no      #
   intraband                       = yes     #
Compute optical valence band to valence band and conduction band to conduction band transitions. (default: yes)
                                   = no      #

   energy_threshold                = 1e-8    # [eV]
(default = 1e-6) Only transitions between states with at least this energy difference are regarded when computing optical spectra. 1e-8 [eV] should be reasonable in most cases.
                                   = 1e-2    # [eV]

   transition_threshold            = 1e-3    #
(default = 1e-6) Only transitions between states with at least this optical intensity are regarded when computing optical spectra.
                                   = 1e-4    #
 A value of 0 can be safely used as a default. Higher values can reduce computational time but may neglect weak optical transitions.
                                   = 1e-8    #
                                   = 1e-10   #

   occupation_threshold            = 0       #
(default = 0) 0 <= 1. Only transitions between states with at least this occupation are regarded when computing optical spectra.
                                   = 1e-8    #
A value of 0 can be safely used as a default. Higher values can reduce computational time but may neglect weakly occupied states.
                                   = 1e-10   #

   k_integration{
      relative_size      = 0.05              #
(default = 0.1) size of k|| space integration.
                         = 0.3               # 0.001 <= relative_size <= 1.0
 

         num_points         =   8               # (default = 4) number of points in k|| space where transition intensities are computed

     
Specify either num_subpoints or num_totalsubpoints.
      num_subpoints      =  16               #
(default = ?) number of interpolation points for k|| space integration (relative to num_points)
                         = 128               #
                         = 256               #
      num_totalsubpoints = 128               #
(default = 128) total number of interpolation points for k|| space integration (relative to num_points)

      symmetry           = 1                 #
(default = 1) rotational k|| space symmetry  1, 2, 3 or 4
                         = 4                 #
      force_k0_subspace  = yes/no            #
If set to yes, k|| integration in quantum is modified in that only states for point k=0 are computed exactly, whereas all other k-points are computed in the subspace of the k=0 wavefunctions.                                 
                                             #
As a result of this approximation, computational speed is much improved (you may even be able to also enlarge the number of eigenvalues). (default is: no)
                                             #
In case you are planning to use this approximation for final results, please make sure to check whether the resulting loss of accuracy in optical spectra is acceptable.
   }


      Treatment of occupation
   occupation_ignore               = yes     #
ignore the occupation of states when computing optical spectra: Valence bands and conduction bands are considered to be fully occupied and fully empty, respectively (default is: no).
                                   = no      #
   occupation_interpolate_invfermi = yes     #
less important. This option may increase accuracy of numerical k|| space integration (default is: yes).
                                   = no      #
   occupation_const_fermilevel     = yes     #
In semi-classical current calculations, the quasi-Fermi level may depend on position. Optical spectra on the other hand are computed in a completely quantum mechanical way.
                                             # To resolve this inconsistency, the Fermi level is averaged. Note that both options violate the physical assumption in some way and are only a valid approximation for almost constant Fermi levels.
                                   = no      #
In this case, the inconsistency is resolved by computing a position dependent occupation number (default is: no).


      Output setting
   output_transitions              = yes     #
Output transition intensities and energies for each pair of states.
                                   = no      #
   output_components               = yes     #
Output the spinor components for each state at each k|| point (only relevant in multi-band k.p calculations).
                                   = no      #


   energy_min           = 1.4                # [eV] lower energy bound for optical spectra
   energy_max           = 1.7                # [eV]
upper energy bound for optical spectra
   energy_resolution    = 0.001              # [eV]
(default = 0.001) spectral resolution
                        = 0.0001             # [eV]
   energy_broadening    = ???                # [eV]
(default = 0.005) line broadening of optical transitions in 3D calculations (real number >= 0.001)

     
preliminary:
      dipole_approximation = yes #
Specify whether to calculate the matrix elements corresponding to optical transitions with dipole approximation. (default is: no)
                                 # Note: <psi1|p e|psi2> elements are calculated by default, with dipole approximation: p’ e<psi1|psi2>
                                 # (without scaling: e is polarization direction, and p is momentum operator, p’ is the integral for the Bloch central functions)
                           = no  #

 }
}
 

opticaldevice{
   name = "optical_active"       #
name of quantum region for which optical generation should be calculated
      line_broadening = 1        #
broadening type: for lorentzian is 1
      line_width = 1             #
for lorentzian broadening the linewidth in eV
      photon_energy = 1          #
the mid energy of the radiation in eV

}

For more details, see diploma thesis of Thomas Eißfeller, Linear Optical Response of Semiconductor Nanodevices, Technische Universität München (2008).

It is not possible to output simple envelope function integrals (spatial overlap of the wave functions at k|| = 0).