# classical{}¶

specifies which bands enter classical densities and dopant densities

The documentation for this keyword is available here (old documentation layout).

Below are various variables and functions to be used inside `classical{}`

.

## Conduction bands¶

- Gamma{}
at Gamma point

- output_bandedge{}
output band edge of this band in a single file [eV]

- averaged

- value

`yes`

or`no`

- default

`yes`

`yes`

: for each grid point the band edge will be averaged between neighboring material grid points. (averaged = yes is similar to ‘boxes = no’. Note that ‘boxes’ is related to output of material grid points while averaged is related to output of simulation grid points.)

`no`

: abrupt discontinuities at interfaces (in 1D two points, in 2D four points, in 3D eight points for each grid point)Warning

2D and 3D simulations can produce a lot of output data (~order of GB). In order to avoid excessive consumption of your hard disk, it is strongly recommended to use averaged = yes for 2D and 3D simulations.

- L{}
at X point; does not apply to wurtzite materials

- output_bandedge{}
analogous usage as above

- X{}
at X point; does not apply to wurtzite materials; for all materials other than Si, Ge, GaP

- output_bandedge{}
analogous usage as above

or

- Delta{}
at Delta point; for Si, Ge, GaP

- output_bandedge{}
analogous usage as above

## Valence bands¶

- HH{}
heavy hole

- output_bandedge{}
analogous usage as above

- LH{}
light hole

- output_bandedge{}
analogous usage as above

- SO{}
split-off hole (or crystal-field split-off hole in wurtzite)

- output_bandedge{}
analogous usage as above

## Further output definitions¶

- output_bandedges{}
output all (relevant) band edges and (relevant) Fermi levels in one file named ‘bandedges.*’ [eV].

- profiles
Enumerate relevant band edges for output. If profiles are not defined, all band edges are written out.

- options

`Gamma`

`X`

`Delta`

`L`

`HH`

`LH`

`SO`

`electron_fermi_level`

`hole_fermi_level`

- example

`profiles = "Gamma HH LH"`

- averaged

- value

`yes`

or`no`

- default

`yes`

`yes`

: for each grid point the band edges will be averaged between neighboring material grid points. (averaged = yes is similar to ‘boxes = no’. Note that ‘boxes’ is related to output of material grid points while averaged is related to output of simulation grid points.)

`no`

: abrupt discontinuities at interfaces (in 1D two points, in 2D four points, in 3D eight points for each grid point)- output_bandgap{}
output band gaps for Gamma, L, X (or Delta) bands with reference to the highest valence band edge. Additionally the difference between the lowest conduction band and the highest valence band edges is written out: MIN(Gamma,L,X (or Delta)) - MAX(hh,lh,so) [eV]

- averaged

- value

`yes`

or`no`

- default

`yes`

`yes`

: for each grid point the band gaps will be averaged between neighboring material grid points. (averaged = yes is similar to ‘boxes = no’. Note that ‘boxes’ is related to output of material grid points while averaged is related to output of simulation grid points.)

`no`

: abrupt discontinuities at interfaces (in 1D two points, in 2D four points, in 3D eight points for each grid point)- output_carrier_densities{}
output electron and hole densities [10^18/cm^3]

The units for the output file total_charges.txt are

electrons/cm2 (1D simulation)

electrons/cm (2D simulation)

electrons (3D simulation)

- output_ionized_dopant_densities{}
output ionized dopant densities [10^18/cm^3]

The ionized acceptor and donor densities are written to these files:

density_acceptor_ionized.dat

density_donor_ionized.dat

- output_intrinsic_density{}
output intrinsic density [1/cm^3]

- boxes

- value
=

`yes`

or`no`

(optional) For each grid point, in 1D two points are printed out to mimic abrupt discontinuities at interfaces (in 2D four points, in 3D eight points)

- output_energy_resolved_densities{}
output energy-resolved densities n(x,E), p(x,E) in units of [cm-3 eV-1] in 1D, [cm-3 eV-1] in 2D, and [cm-3 eV-1] in 3D.

- energy_distribution{}
output integrated electron and hole density as a function of energy, n(E), p(E) in units of [cm-2 eV-1] in 1D, [cm-1 eV-1] in 2D, and [eV-1] in 3D.

- min
minimum energy [eV] (required)

- value
double

- default
-10.0

- max
maximum energy [eV] (required)

- value
double

- default
5.0

- energy_resolution
energy spacing [eV] (optional)

- value
double

- default
0.1

- only_quantum_regions

- value

`yes`

or`no`

- default

`no`

consider only quantum regions (optional), can be used to suppress contributions from outside the quantum regions of interest. This works even if quantum mechanics is not enabled in run{}

Note

Note that energy_distribution{}, which directly calculates the space-integrated energy-resolved density, is logically independent from the two groups energy_resolved_density{} and emission_spectrum{}. Incidentally, it also runs much faster and needs much less memory for the same energy spacing.

- energy_resolved_density{}
output electron and hole density as a function of energy and position, n(x,E), p(x,E) in units of [cm-3 eV-1] in 1D, [cm-3 eV-1] in 2D, and [cm-3 eV-1] in 3D.

- min
minimum energy [eV] (required)

- value
double

- default
-10.0

- max
maximum energy [eV] (required)

- value
double

- default
5.0

- energy_resolution
energy spacing [eV] (optional)

- value
double

- default
0.1

- only_quantum_regions

- value

`yes`

or`no`

- default

`no`

consider only quantum regions (optional), can be used to suppress contributions from outside the quantum regions of interest. This works even if quantum mechanics is not enabled in run{}

Note

min, max always refer to a zero point at the (local) conduction band edge, and not to the photon energy.

max should be set high enough above 0 to contain all occupied electron states and min should be set far enough below -bandgap to contain all occupied hole states.

The respective values for energy_resolution should be set smaller than kBT if one wishes to fully resolve the structures of the integrated densities and/or of the emission spectra.

However, while setting energy_resolution in energy_distribution{} as low as 0.001 eV has little influence on program execution time, using similarly small values for energy_resolution in energy_resolved_density{} will result in massive slowdowns (and in 3D also in massive memory use), since the computational effort for obtaining emission spectra grows quadratically with the number of energy bins.

- emission_spectrum{}
output emission spectrum calculated from energy-resolved densities n(E,x) and p(E,x), i.e. emission_spectrum{} uses the energy-resolved density computed by energy_resolved_density{}

- output_spectra{}
computed types of spectra:

- emission

- value

`yes`

or`no`

- default

`yes`

- gain

- value

`yes`

or`no`

- default

`yes`

- absorption

- value

`yes`

or`no`

- default

`yes`

- stimulated_emission

- value

`yes`

or`no`

- default

`no`

unit selection - the following apply to all of the above

- spectra_over_energy

- value

`yes`

or`no`

- default

`yes`

- spectra_over_wavelength

- value

`yes`

or`no`

- default

`yes`

- spectra_over_frequency

- value

`yes`

or`no`

- default

`no`

- spectra_over_wavenumber

- value

`yes`

or`no`

- default

`no`

unit selection - the following apply to all of the above

- photon_spectra

- value

`yes`

or`no`

- default

`yes`

unit selection - the following apply to all of the above

- power_spectra

- value

`yes`

or`no`

- default

`no`

- refractive_index

- value
double

- default
1.0

averaged-out refractive index nr [] (optional). Refractive index used for calculating gain and absorption. The absorption/gain is multiplied by the factor 1/nr2. The values for the optical dielectric constant from the database are not used yet at this point.

- output_photon_density

- value

`yes`

or`no`

- default
no

output emitted photon density in units of [cm-3s-1] (optional)

(emitted_photon_density.dat)

- output_power_density

- value

`yes`

or`no`

- default
no

output emitted power density in units of [W/cm3] (optional)

(emitted_power_density.dat)

## Carrier statistics for classical densities¶

- carrier_statistics

- options

`fermi_dirac`

`maxwell_boltzmann`

- default

`fermi_dirac`

Optionally, one can use Maxwell-Boltzmann statistics for the classical densities (not recommended as this is only an approximation which is only applicable in certain cases).

In order to maintain consistency, also the (integrated) energy distribution (density_vs_energy) and the classical emission spectra and densities are computed using the same statistics. Use together with quantum regions is possible but not recommended, and convergence of the current-Poisson or quantum-current-Poisson equation may become worse (please readjust convergence parameters accordingly).

Note

n = Nc * FermiIntegral1/2( (EF - Ec) / (kBT) ) (electron density for fermi_dirac)

p = Nc * FermiIntegral1/2( (Ev - EF) / (kBT) ) (hole density for fermi_dirac)

n = Nc * exp( (EF - Ec) / (kBT) ) (electron density for maxwell_boltzmann)

p = Nc * exp( (Ev - EF) / (kBT) ) (hole density for maxwell_boltzmann)

## Irradiation¶

Output of comparison spectra, compute light field in the device, and photo generation.

Note that spectral data can be alternatively defined in the database (see also database_nnp_optional for list of predefined illumination spectra), in the database section of the input file, or imported from external files.

Lorentzian, Gaussian and Planck illumination spectra are fully additive, i.e. several of each can be added as needed in order to synthesize more complex illumination spectra.

**irradiation{}**

Definition of energy grid. Specify either wavelength or photon energy.

minimum and maximum photon wavelength

- min_wavelength

- value
real value >= 10 and <= 1e6

- units

`[nm]`

- max_wavelength

- value
real value >= 10 and <= 1e6

- units

`[nm]`

minimum and maximum photon energy

- min_energy

- value
real value >= 1e-6 and <= 100

- units

`[eV]`

- max_energy

- value
real value >= 1e-6 and <= 100

- units

`[eV]`

resolution of energy grid

- energy_resolution

- value
real value >= 1e-6

- units

`[eV]`

```
irradiation{
min_energy = 0.5
max_energy = 5.0
# min_wavelength = 300.0
# max_wavelength = 2000.0
energy_resolution = 0.01
illumination{
```

illumination{}

- direction_x

- value
integer +1/-1

- units
(dimensionless)

ascending/descending illumination in x direction

- direction_y

- value
integer +1/-1

- units
(dimensionless)

ascending/descending illumination in y direction

- direction_z

- value
integer +1/-1

- units
(dimensionless)

ascending/descending illumination in z direction

**Database spectrum**

Several spectra (solar spectra, CIE illuminants, absorption, reflectivity, …) can be found in the database file database_nnp_optional.

database_spectrum{}

database unit

`[W/m^2]`

, relative intensities (e.g. CIE illuminants) are normalized to 1.0`[W/m^2]`

- name

- value
string

- concentration

- value
real value >= 0.0

- default
1.0

```
illumination{
direction_x = 1
database_spectrum{
name = "Solar-ASTM-G173-global"
# name = "CIE-D75"
concentration = 300 # e.g. 300 suns
}
# or
import_spectrum{
import_from = "filename"
cutoff = yes # yes/no: If yes, set values outside definition interval to zero.
# (default=?)
absolute_intensities = yes # yes/no (default: yes)
# If no, spectrum does not contain absolute values,
# normalize intensity to 1 [W/cm^2 nm^-1] before concentration
concentration = 300 # e.g. 300 suns
}
}
```

**Planck spectrum**

```
planck_spectrum{
irradiance = 10000.0 # in [W/m^2], for complete(!) Planck spectrum; real value >= 0.0
temperature = 5000.0 # real value >= 1e-6
}
```

**Lorentzian spectrum**

```
lorentzian_spectrum{
irradiance = 10000.0 # in [W/m^2], for complete(!) Lorentzian spectrum; real value >= 0.0
# Specify either wavelength and width, or ...
wavelength = 500.0 # real value >= 10.0 in |unit:nm|
width = 100.0 # real value >= 1e-3 in |unit:nm|
# ... specify energy and gamma.
energy = 2.5 # real value >= 1e-6 in |unit:eV|
gamma = 1.0 # real value >= 1e-6 in |unit:eV|
}
```

**Gaussian spectrum**

```
gaussian_spectrum{
irradiance = 1000.0 # in [W/m^2], for complete(!) Gaussian spectrum; real value >= 0.0
# Specify either wavelength and width, or ...
wavelength = 500.0 # real value >= 10.0 in |unit:nm|
width = 100.0 # real value >= 1e-3 in |unit:nm|
# ... specify energy and gamma.
energy = 2.5 # real value >= 1e-6 in |unit:eV|
gamma = 1.0 # real value >= 1e-6 in |unit:eV|
}
```

**Constant spectrum**

```
constant_spectrum{
irradiance = 10000.0 # in [W/m^2], integrated as min_energy...max_energy
}
```

reflectivity{}

reflectivity{ database_spectrum{ name = "Al0.80Ga0.20As" } # or import_spectrum{ import_from = "filename" cutoff = yes # yes/no: If yes, set values outside definition interval to zero. # (default=?) } # or constant_spectrum{ reflectivity = 0.5 # real value >= 0.0 and <= 1.0 (dimensionless) } }

absorption{}

absorption{ database_spectrum{ name = "GaAs" } # or import_spectrum{ import_from = "filename" cutoff = yes # yes/no: If yes, set values outside definition interval to zero. # (default=?) } # or constant_spectrum{ absorption = 0.5 # real value >= 0.0 [1/cm] } }

output_spectra{}

output_spectra{ illumination = yes # yes/no outputs spectrum binned to energy grid reflectivity = yes # yes/no outputs spectrum binned to energy grid absorption = yes # yes/no outputs spectrum binned to energy grid spectra_over_energy = yes # yes/no (default: yes) spectra_over_wavelength = yes # yes/no (default: yes) spectra_over_frequency = yes # yes/no (default: no) spectra_over_wavenumber = yes # yes/no (default: no) }

photo_generation{}

Output generated carriers \(G(x)\) and \(G(x,E)\) due to photon absorption.

photo_generation{ output = yes # yes/no (default: yes) output_spectrum = yes # yes/no (default: no) output_energy_resolved = yes # yes/no (default: no) output_quantum_efficiency = yes # yes/no (default:yes) }

The light field is calculated as a function of position and energy.

- output_light_field

- options

`yes`

or`no`

- default

`no`

output_light_field = yes