# FreeCarrierCyl Class¶

class gain.freecarrier.FreeCarrierCyl(name="")

Quantum-well gain using free-carrier approximation for cylindrical geometry.

## Subclasses¶

 Spectrum Gain spectrum object.

## Methods¶

 get_energy_levels([T]) Get energy levels in quantum wells. get_fermi_levels(n[, T, reg]) Get quasi-Fermi levels. initialize() Initialize solver. invalidate() Set the solver back to uninitialized state. spectrum(…) Get gain spectrum at given point.

## Attributes¶

 inBandEdges Receiver of the conduction and valence band edges required for computations [eV]. inCarriersConcentration Receiver of the carriers concentration required for computations [1/cm³]. inFermiLevels Receiver of the quasi-Fermi levels for electrons and holes required for computations [eV]. inTemperature Receiver of the temperature required for computations [K].

### Providers¶

 outEnergyLevels Provider of the computed energy levels for electrons and holes [eV]. outGain Provider of the computed material gain [1/cm].

### Other¶

 T0 Reference temperature. geometry Geometry provided to the solver id Id of the solver object. initialized True if the solver has been initialized. lifetime Average carriers lifetime. matrix_element Momentum matrix element. mesh Mesh provided to the solver strained Boolean attribute indicating if the solver should consider strain in the active region.

## Descriptions¶

### Method Details¶

FreeCarrierCyl.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 is None, the estimates for temperature T0 are returned. 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. list
FreeCarrierCyl.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 is None, the estimates for temperature T0 are returned. reg (int) – Active region number. Two-element tuple with quasi-Fermi levels for electrons and holes. tuple
FreeCarrierCyl.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. bool
FreeCarrierCyl.invalidate()

Set the solver back to uninitialized state.

This method frees the memory allocated by the solver and sets initialized to False.

FreeCarrierCyl.spectrum(c0, c1)
FreeCarrierCyl.spectrum(point)

Get gain spectrum at given point.

Parameters: point (vec) – Point to get gain at. c1 (c0,) – Coordinates of the point to get gain at. Spectrum object. FreeCarrierCyl.Spectrum

FreeCarrierCyl.inBandEdges

Receiver of the conduction and valence band edges required for computations [eV].

You will find usage details in the documentation of the receiver class BandEdgesReceiverCyl.

Example

Connect the reveiver to a provider from some other solver:

>>> solver.inBandEdges = other_solver.outBandEdges


Receciver class: plask.flow.BandEdgesReceiverCyl

Provider class: plask.flow.BandEdgesProviderCyl

Data filter: plask.filter.BandEdgesFilterCyl

FreeCarrierCyl.inCarriersConcentration

Receiver of the carriers concentration required for computations [1/cm³].

You will find usage details in the documentation of the receiver class CarriersConcentrationReceiverCyl.

Example

Connect the reveiver to a provider from some other solver:

>>> solver.inCarriersConcentration = other_solver.outCarriersConcentration


Receciver class: plask.flow.CarriersConcentrationReceiverCyl

Provider class: plask.flow.CarriersConcentrationProviderCyl

Data filter: plask.filter.CarriersConcentrationFilterCyl

FreeCarrierCyl.inFermiLevels

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 FermiLevelsReceiverCyl.

Example

Connect the reveiver to a provider from some other solver:

>>> solver.inFermiLevels = other_solver.outFermiLevels


Receciver class: plask.flow.FermiLevelsReceiverCyl

Provider class: plask.flow.FermiLevelsProviderCyl

Data filter: plask.filter.FermiLevelsFilterCyl

FreeCarrierCyl.inTemperature

Receiver of the temperature required for computations [K].

You will find usage details in the documentation of the receiver class TemperatureReceiverCyl.

Example

Connect the reveiver to a provider from some other solver:

>>> solver.inTemperature = other_solver.outTemperature


Receciver class: plask.flow.TemperatureReceiverCyl

Provider class: plask.flow.TemperatureProviderCyl

Data filter: plask.filter.TemperatureFilterCyl

### Provider Details¶

FreeCarrierCyl.outEnergyLevels(n=0, mesh, interpolation='default')

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


Test the number of provided values:

>>> len(solver.outEnergyLevels)
3

FreeCarrierCyl.outGain(n=0, mesh, wavelength, interpolation='default')

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. wavelength (float) – The wavelength at which the gain is computed [nm]. 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, wavelength)


Test the number of provided values:

>>> len(solver.outGain)
3


### Attribute Details¶

FreeCarrierCyl.T0

Reference temperature.

In this temperature levels estimates are computed.

FreeCarrierCyl.geometry

Geometry provided to the solver

FreeCarrierCyl.id

Id of the solver object. (read only)

Example

>>> mysolver.id
mysolver:category.type

FreeCarrierCyl.initialized

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.

FreeCarrierCyl.lifetime

This parameter is used for gain spectrum broadening. (float [ps])

FreeCarrierCyl.matrix_element

Momentum matrix element.

Value of the squared matrix element in gain computations. If it is not set it is estimated automatically. (float [eV×m0])

FreeCarrierCyl.mesh

Mesh provided to the solver

FreeCarrierCyl.strained

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.