FreeCarrier2D Class¶
- class gain.freecarrier.FreeCarrier2D(name='')¶
Quantum-well gain using free-carrier approximation for two-dimensional Cartesian geometry.
Subclasses¶
Gain spectrum object. |
Methods¶
|
Get energy levels in quantum wells. |
|
Get quasi Fermi levels. |
Initialize solver. |
|
Set the solver back to uninitialized state. |
|
|
Get gain spectrum at given point. |
Attributes¶
Receivers¶
Receiver of the conduction and valence band edges required for computations [eV]. |
|
Receiver of the carriers concentration required for computations [1/cm³]. |
|
Receiver of the quasi-Fermi levels for electrons and holes required for computations [eV]. |
|
Receiver of the temperature required for computations [K]. |
Providers¶
Provider of the computed energy levels for electrons and holes [eV]. |
|
Provider of the computed material gain [1/cm]. |
Other¶
Reference temperature. |
|
Geometry provided to the solver |
|
Id of the solver object. |
|
True if the solver has been initialized. |
|
Average carriers lifetime. |
|
Momentum matrix element. |
|
Mesh provided to the solver |
|
Boolean attribute indicating if the solver should consider strain in the active region. |
|
Substrate material. |
Descriptions¶
Method Details¶
- FreeCarrier2D.get_energy_levels(T=None)¶
Get energy levels in quantum wells.
Compute energy levels in quantum wells for electrons, heavy holes and light holes.
- Parameters:
T (float or
None
) – Temperature to get the levels. If this argument isNone
, the estimates for temperatureT0
are returned.- Returns:
- List with dictionaries with keys el, hh, and lh with levels for
electrons, heavy holes and light holes. Each list element corresponds to one active region.
- Return type:
list
- FreeCarrier2D.get_fermi_levels(n, T=None, reg=0)¶
Get quasi Fermi levels.
Compute quasi-Fermi levels in specified active region.
- Parameters:
n (float) – Carriers concentration to determine the levels for (1/cm3).
T (float or
None
) – Temperature to get the levels. If this argument isNone
, the estimates for temperatureT0
are returned.reg (int) – Active region number.
- Returns:
Two-element tuple with quasi-Fermi levels for electrons and holes.
- Return type:
tuple
- FreeCarrier2D.initialize()¶
Initialize solver.
This method manually initialized the solver and sets
initialized
to True. Normally calling it is not necessary, as each solver automatically initializes itself when needed.- Returns:
solver
initialized
state prior to this method call.- Return type:
bool
- FreeCarrier2D.invalidate()¶
Set the solver back to uninitialized state.
This method frees the memory allocated by the solver and sets
initialized
to False.
Receiver Details¶
- FreeCarrier2D.inBandEdges = <property object>¶
Receiver of the conduction and valence band edges required for computations [eV].
You will find usage details in the documentation of the receiver class
BandEdgesReceiver2D
.Example
Connect the receiver to a provider from some other solver:
>>> solver.inBandEdges = other_solver.outBandEdges
See also
Receciver class:
plask.flow.BandEdgesReceiver2D
Provider class:
plask.flow.BandEdgesProvider2D
Data filter:
plask.filter.BandEdgesFilter2D
- FreeCarrier2D.inCarriersConcentration = <property object>¶
Receiver of the carriers concentration required for computations [1/cm³].
You will find usage details in the documentation of the receiver class
CarriersConcentrationReceiver2D
.Example
Connect the receiver to a provider from some other solver:
>>> solver.inCarriersConcentration = other_solver.outCarriersConcentration
See also
Receciver class:
plask.flow.CarriersConcentrationReceiver2D
Provider class:
plask.flow.CarriersConcentrationProvider2D
Data filter:
plask.filter.CarriersConcentrationFilter2D
- FreeCarrier2D.inFermiLevels = <property object>¶
Receiver of the quasi-Fermi levels for electrons and holes required for computations [eV].
You will find usage details in the documentation of the receiver class
FermiLevelsReceiver2D
.Example
Connect the receiver to a provider from some other solver:
>>> solver.inFermiLevels = other_solver.outFermiLevels
See also
Receciver class:
plask.flow.FermiLevelsReceiver2D
Provider class:
plask.flow.FermiLevelsProvider2D
Data filter:
plask.filter.FermiLevelsFilter2D
- FreeCarrier2D.inTemperature = <property object>¶
Receiver of the temperature required for computations [K].
You will find usage details in the documentation of the receiver class
TemperatureReceiver2D
.Example
Connect the receiver to a provider from some other solver:
>>> solver.inTemperature = other_solver.outTemperature
See also
Receciver class:
plask.flow.TemperatureReceiver2D
Provider class:
plask.flow.TemperatureProvider2D
Data filter:
plask.filter.TemperatureFilter2D
Provider Details¶
- FreeCarrier2D.outEnergyLevels(n=0, mesh, interpolation='default') = <property object>¶
Provider of the computed energy levels for electrons and holes [eV].
- Parameters:
n (int) – Value number.
mesh (mesh) – Target mesh to get the field at.
interpolation (str) – Requested interpolation method.
- Returns:
Data with the energy levels for electrons and holes on the specified mesh [eV].
You may obtain the number of different values this provider can return by testing its length.
Example
Connect the provider to a receiver in some other solver:
>>> other_solver.inEnergyLevels = solver.outEnergyLevels
Obtain the provided field:
>>> solver.outEnergyLevels(0, mesh) <plask.Data at 0x1234567>
Test the number of provided values:
>>> len(solver.outEnergyLevels) 3
See also
Provider class:
plask.flow.EnergyLevelsProvider2D
Receciver class:
plask.flow.EnergyLevelsReceiver2D
- FreeCarrier2D.outGain(n=0, mesh, lam, interpolation='default') = <property object>¶
Provider of the computed material gain [1/cm].
- Parameters:
deriv (str) – Gain derivative to return. can be ‘’ (empty) or ‘conc’. In the latter case, the gain derivative over carriers concentration is returned.
mesh (mesh) – Target mesh to get the field at.
interpolation (str) – Requested interpolation method.
lam (float) – The wavelength at which the gain is computed (nm).
- Returns:
Data with the material gain on the specified mesh [1/cm].
You may obtain the number of different values this provider can return by testing its length.
Example
Connect the provider to a receiver in some other solver:
>>> other_solver.inGain = solver.outGain
Obtain the provided field:
>>> solver.outGain(0, mesh, lam) <plask.Data at 0x1234567>
Test the number of provided values:
>>> len(solver.outGain) 3
Attribute Details¶
- FreeCarrier2D.T0 = <property object>¶
Reference temperature.
In this temperature levels estimates are computed.
- FreeCarrier2D.geometry = <property object>¶
Geometry provided to the solver
- FreeCarrier2D.id = <property object>¶
Id of the solver object. (read only)
Example
>>> mysolver.id mysolver:category.type
- FreeCarrier2D.initialized = <property object>¶
True if the solver has been initialized. (read only)
Solvers usually get initialized at the beginning of the computations. You can clean the initialization state and free the memory by calling the
invalidate()
method.
- FreeCarrier2D.lifetime = <property object>¶
Average carriers lifetime.
This parameter is used for gain spectrum broadening. (float [ps])
- FreeCarrier2D.matrix_element = <property object>¶
Momentum matrix element.
Value of the squared matrix element in gain computations. If it is not set it is estimated automatically. (float [eV×m0])
- FreeCarrier2D.mesh = <property object>¶
Mesh provided to the solver
- FreeCarrier2D.strained = <property object>¶
Boolean attribute indicating if the solver should consider strain in the active region.
If set to
True
then there must a layer with the role substrate in the geometry. The strain is computed by comparing the atomic lattice constants of the substrate and the quantum wells.
- FreeCarrier2D.substrate = <property object>¶
Substrate material.
Material of the substrate. This is used to compute strain in the active region. If not set, the solver looks for geometry object with the __substrate__ role.