meta.shockley.
ThresholdSearchBesselCyl
(name='')¶Solver for threshold search of semiconductor laser with vector optical solver.
This solver performs thermo-electrical computations followed by
determination ot threshold current and optical analysis in order to
determine the threshold of a semiconductor laser. The search is
performed by scipy
root finding algorithm in order to determine
the voltage and electric current ensuring no optical loss in the
laser cavity.
This solver uses vector optical solver BesselCyl
.
The computations can be executed using compute method, after which
the results may be save to the HDF5 file with save or presented visually
using plot_...
methods. If save
parameter of the compute()
method
is True the fields are saved automatically after the computations.
The file name is based on the name of the executed script with suffix denoting
either the launch time or the identifier of a batch job if a batch system
(like SLURM, OpenPBS, or SGE) is used.
compute ([save, invalidate, group, stepsave]) |
Execute the algorithm. |
compute_thermoelectric () |
Perform thermo-electric calculations. |
get_gain_spectrum (lams[, pos, junction]) |
Get gain spectrum for specified junction. |
get_junction_concentrations ([interpolation]) |
Get carriers concentration at the active regions. |
get_junction_currents ([refine, interpolation]) |
Get current densities at the active regions. |
get_junction_gains ([axis, interpolation]) |
Get gain at the active regions. |
get_lam () |
Get approximate wavelength for optical computations. |
get_optical_determinant (lam) |
Function computing determinant of the optical solver. |
get_optical_field ([resolution]) |
Get computed optical mode field at threshold. |
get_optical_field_horizontal ([resolution, …]) |
Get horizontal distribution of the computed optical mode field at threshold. |
get_optical_field_vertical ([pos, offset, …]) |
Plot vertical distribution of the computed optical mode field at threshold and refractive index profile. |
get_temperature () |
Get temperature on a thermal mesh. |
get_total_current ([nact]) |
Get total current flowing through active region [mA] |
get_vertical_voltage ([at]) |
Get computed voltage along the vertical axis. |
get_voltage () |
Get voltage on an electrical mesh. |
initialize () |
Initialize solver. |
invalidate () |
Set the solver back to uninitialized state. |
plot_gain_spectrum (lams[, pos, junction, comp]) |
Plot gain spectrum for specified junction. |
plot_junction_concentration ([bounds, …]) |
Plot carriers concentration at the active region. |
plot_junction_current ([refine, bounds, …]) |
Plot current density at the active region. |
plot_junction_gain ([axis, bounds, …]) |
Plot gain at the active region. |
plot_optical_determinant (lams, **kwargs) |
Function plotting determinant of the optical solver. |
plot_optical_field ([resolution, …]) |
Plot computed optical mode field at threshold. |
plot_optical_field_horizontal ([resolution, …]) |
Plot horizontal distribution of the computed optical mode field at threshold. |
plot_optical_field_vertical ([pos, offset, …]) |
Plot vertical distribution of the computed optical mode field at threshold and refractive index profile. |
plot_temperature ([geometry_color, …]) |
Plot computed temperature to the current axes. |
plot_vertical_voltage ([at]) |
Plot computed voltage along the vertical axis. |
plot_voltage ([geometry_color, mesh_color, …]) |
Plot computed voltage to the current axes. |
reconnect () |
Reconnect all internal solvers. |
save ([filename, group, optical_resolution]) |
Save the computation results to the HDF5 file. |
step (volt[, save]) |
Function performing one step of the threshold search. |
outCarriersConcentration |
Provider of the computed carriers concentration [1/cm³]. |
outConductivity |
Provider of the computed electrical conductivity [S/m]. |
outCurrentDensity |
Provider of the computed current density [kA/cm²]. |
outGain |
Provider of the computed material gain [1/cm]. |
outHeat |
Provider of the computed heat sources density [W/m³]. |
outHeatFlux |
Provider of the computed heat flux [W/m²]. |
outLightE |
Provider of the computed electric field [V/m]. |
outLightMagnitude |
Provider of the computed optical field magnitude [W/m²]. |
outLoss |
Provider of the computed modal extinction [1/cm]. |
outRefractiveIndex |
Provider of the computed refractive index [-]. |
outTemperature |
Provider of the computed temperature [K]. |
outThermalConductivity |
Provider of the computed thermal conductivity [W/(m×K)]. |
outVoltage |
Provider of the computed voltage [V]. |
outWavelength |
Provider of the computed wavelength [nm]. |
diffusion |
electrical.diffusion.DiffusionCyl solver used for electrical calculations. |
dlam |
Wavelength step. |
electrical |
electrical.shockley.ShockleyCyl solver used for electrical calculations. |
gain |
gain.freecarrier.FreeCarrierCyl solver used for gain calculations. |
hem |
Angular mode number $m$. |
hen |
Radial mode number $n$. |
id |
Id of the solver object. |
initialized |
True if the solver has been initialized. |
lam |
Initial wavelength for optical search. |
maxiter |
Maximum number of root finding iterations. |
maxlam |
Maximum wavelength considered for the optical mode search. |
optical |
optical.slab.BesselFrequencyCyl solver used for optical calculations. |
optical_resolution |
Number of points along the horizontal and vertical axes for the saved and plotted optical field. |
quick |
|
skip_thermal |
Skip thermal computations. |
tfreq |
Number of electrical iterations per single thermal step. |
thermal |
thermal.static.StaticCyl solver used for thermal calculations. |
vmax |
Maximum voltage to search threshold for. |
vmin |
Minimum voltage to search threshold for. |
vtol |
Tolerance on voltage in the root search. |
ThresholdSearchBesselCyl.
compute
(save=True, invalidate=False, group='ThresholdSearch', stepsave=False)¶Execute the algorithm.
In the beginning the solvers are invalidated and next, the self- consistent loop of thermal, electrical, gain, and optical calculations are run within the root-finding algorithm until the mode is found with zero optical losses.
Parameters: |
|
---|---|
Returns: | The voltage set to >>> solver.get_total_current()
123.0
|
ThresholdSearchBesselCyl.
compute_thermoelectric
()¶Perform thermo-electric calculations.
This method may be called manually to perform thermo-electric calculations. Afterwards, one may investigate gain spectrum or verify settings of the optical solver.
ThresholdSearchBesselCyl.
get_gain_spectrum
(lams, pos=0.0, junction=0)¶Get gain spectrum for specified junction.
Parameters: |
|
---|---|
Returns: | Gain spectrum. |
Return type: |
ThresholdSearchBesselCyl.
get_junction_concentrations
(interpolation='linear')¶Get carriers concentration at the active regions.
Parameters: | interpolation (str) – Interpolation used when retrieving current density. |
---|---|
Returns: |
|
Return type: | dict |
ThresholdSearchBesselCyl.
get_junction_currents
(refine=16, interpolation='linear')¶Get current densities at the active regions.
Parameters: |
|
---|---|
Returns: |
|
Return type: | dict |
ThresholdSearchBesselCyl.
get_junction_gains
(axis=None, interpolation='linear')¶Get gain at the active regions.
Parameters: | axis – Points along horizontal axis to plot gain at. Defaults to the optical mesh. |
---|---|
Returns: |
|
Return type: | dict |
ThresholdSearchBesselCyl.
get_lam
()¶Get approximate wavelength for optical computations.
This method returns approximate wavelength for optical computations.
By default if browses the wavelength range starting from maxlam
,
decreasing it by dlam
until radial mode hen
is found.
You can override this method or set it to a a fixed value to use custom mode approximation.
Example
>>> solver = ThresholdSearchBesselCyl()
>>> solver.get_lam = 980.
>>> solver.compute()
ThresholdSearchBesselCyl.
get_optical_determinant
(lam)¶Function computing determinant of the optical solver.
Parameters: | lam (float or array) – Wavelength to compute the determinant for [nm]. |
---|---|
Returns: | Optical determinant. |
Return type: | float or array |
ThresholdSearchBesselCyl.
get_optical_field
(resolution=None)¶Get computed optical mode field at threshold.
Parameters: | resolution (tuple of ints) – Number of points in horizontal and vertical directions. |
---|
ThresholdSearchBesselCyl.
get_optical_field_horizontal
(resolution=None, interpolation='linear')¶Get horizontal distribution of the computed optical mode field at threshold.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
get_optical_field_vertical
(pos=0.01, offset=0.5, resolution=None, interpolation='linear')¶Plot vertical distribution of the computed optical mode field at threshold and refractive index profile.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
get_temperature
()¶Get temperature on a thermal mesh.
ThresholdSearchBesselCyl.
get_total_current
(nact=0)¶Get total current flowing through active region [mA]
ThresholdSearchBesselCyl.
get_vertical_voltage
(at=0)¶Get computed voltage along the vertical axis.
Parameters: | at (float) – Horizontal position of the axis at which the voltage is plotted. |
---|
ThresholdSearchBesselCyl.
get_voltage
()¶Get voltage on an electrical mesh.
ThresholdSearchBesselCyl.
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 |
ThresholdSearchBesselCyl.
invalidate
()¶Set the solver back to uninitialized state.
This method frees the memory allocated by the solver and sets
initialized
to False.
ThresholdSearchBesselCyl.
plot_gain_spectrum
(lams, pos=0.0, junction=0, comp=None, **kwargs)¶Plot gain spectrum for specified junction.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
plot_junction_concentration
(bounds=True, interpolation='linear', label=None, **kwargs)¶Plot carriers concentration at the active region.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
plot_junction_current
(refine=16, bounds=True, interpolation='linear', label=None, **kwargs)¶Plot current density at the active region.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
plot_junction_gain
(axis=None, bounds=True, interpolation='linear', label=None, **kwargs)¶Plot gain at the active region.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
plot_optical_determinant
(lams, **kwargs)¶Function plotting determinant of the optical solver.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
plot_optical_field
(resolution=None, geometry_color='0.75', geometry_alpha=0.35, geometry_lw=1.0, **kwargs)¶Plot computed optical mode field at threshold.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
plot_optical_field_horizontal
(resolution=None, bounds=True, interpolation='linear', **kwargs)¶Plot horizontal distribution of the computed optical mode field at threshold.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
plot_optical_field_vertical
(pos=0.01, offset=0.5, resolution=None, interpolation='linear', **kwargs)¶Plot vertical distribution of the computed optical mode field at threshold and refractive index profile.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
plot_temperature
(geometry_color='0.75', mesh_color=None, geometry_alpha=0.35, mesh_alpha=0.15, geometry_lw=1.0, mesh_lw=1.0, **kwargs)¶Plot computed temperature to the current axes.
Parameters: |
|
---|
See also
plask.plot_field()
: Plot any field obtained from receivers
ThresholdSearchBesselCyl.
plot_vertical_voltage
(at=0.0, **kwargs)¶Plot computed voltage along the vertical axis.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
plot_voltage
(geometry_color='0.75', mesh_color=None, geometry_alpha=0.35, mesh_alpha=0.15, geometry_lw=1.0, mesh_lw=1.0, **kwargs)¶Plot computed voltage to the current axes.
Parameters: |
|
---|
See also
plask.plot_field()
: Plot any field obtained from receivers
ThresholdSearchBesselCyl.
reconnect
()¶Reconnect all internal solvers.
This method should be called if some of the internal solvers were changed manually.
ThresholdSearchBesselCyl.
save
(filename=None, group='ThresholdSearch', optical_resolution=None)¶Save the computation results to the HDF5 file.
Parameters: |
|
---|
ThresholdSearchBesselCyl.
step
(volt, save=False)¶Function performing one step of the threshold search.
Parameters: |
|
---|---|
Returns: | Loss of a specified mode |
Return type: | float |
ThresholdSearchBesselCyl.
outCarriersConcentration
(n=0, mesh, interpolation='default')¶Provider of the computed carriers concentration [1/cm³].
Parameters: |
|
---|---|
Returns: | Data with the carriers concentration 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.inCarriersConcentration = solver.outCarriersConcentration
Obtain the provided field:
>>> solver.outCarriersConcentration(0, mesh)
<plask.Data at 0x1234567>
Test the number of provided values:
>>> len(solver.outCarriersConcentration)
3
See also
Provider class: plask.flow.CarriersConcentrationProviderCyl
Receciver class: plask.flow.CarriersConcentrationReceiverCyl
ThresholdSearchBesselCyl.
outConductivity
(mesh, interpolation='default')¶Provider of the computed electrical conductivity [S/m].
Parameters: |
|
---|---|
Returns: | Data with the electrical conductivity on the specified mesh [S/m]. |
Example
Connect the provider to a receiver in some other solver:
>>> other_solver.inConductivity = solver.outConductivity
Obtain the provided field:
>>> solver.outConductivity(mesh)
<plask.Data at 0x1234567>
See also
Provider class: plask.flow.ConductivityProviderCyl
Receciver class: plask.flow.ConductivityReceiverCyl
ThresholdSearchBesselCyl.
outCurrentDensity
(mesh, interpolation='default')¶Provider of the computed current density [kA/cm²].
Parameters: |
|
---|---|
Returns: | Data with the current density on the specified mesh [kA/cm²]. |
Example
Connect the provider to a receiver in some other solver:
>>> other_solver.inCurrentDensity = solver.outCurrentDensity
Obtain the provided field:
>>> solver.outCurrentDensity(mesh)
<plask.Data at 0x1234567>
See also
Provider class: plask.flow.CurrentDensityProviderCyl
Receciver class: plask.flow.CurrentDensityReceiverCyl
ThresholdSearchBesselCyl.
outGain
(n=0, mesh, wavelength, interpolation='default')¶Provider of the computed material gain [1/cm].
Parameters: |
|
---|---|
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, wavelength)
<plask.Data at 0x1234567>
Test the number of provided values:
>>> len(solver.outGain)
3
ThresholdSearchBesselCyl.
outHeat
(mesh, interpolation='default')¶Provider of the computed heat sources density [W/m³].
Parameters: |
|
---|---|
Returns: | Data with the heat sources density on the specified mesh [W/m³]. |
Example
Connect the provider to a receiver in some other solver:
>>> other_solver.inHeat = solver.outHeat
Obtain the provided field:
>>> solver.outHeat(mesh)
<plask.Data at 0x1234567>
ThresholdSearchBesselCyl.
outHeatFlux
(mesh, interpolation='default')¶Provider of the computed heat flux [W/m²].
Parameters: |
|
---|---|
Returns: | Data with the heat flux on the specified mesh [W/m²]. |
Example
Connect the provider to a receiver in some other solver:
>>> other_solver.inHeatFlux = solver.outHeatFlux
Obtain the provided field:
>>> solver.outHeatFlux(mesh)
<plask.Data at 0x1234567>
See also
Provider class: plask.flow.HeatFluxProviderCyl
Receciver class: plask.flow.HeatFluxReceiverCyl
ThresholdSearchBesselCyl.
outLightE
(n=0, mesh, interpolation='default')¶Provider of the computed electric field [V/m].
Parameters: |
|
---|---|
Returns: | Data with the electric field on the specified mesh [V/m]. |
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.inLightE = solver.outLightE
Obtain the provided field:
>>> solver.outLightE(0, mesh)
<plask.Data at 0x1234567>
Test the number of provided values:
>>> len(solver.outLightE)
3
ThresholdSearchBesselCyl.
outLightMagnitude
(n=0, mesh, interpolation='default')¶Provider of the computed optical field magnitude [W/m²].
Parameters: |
|
---|---|
Returns: | Data with the optical field magnitude on the specified mesh [W/m²]. |
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.inLightMagnitude = solver.outLightMagnitude
Obtain the provided field:
>>> solver.outLightMagnitude(0, mesh)
<plask.Data at 0x1234567>
Test the number of provided values:
>>> len(solver.outLightMagnitude)
3
See also
Provider class: plask.flow.LightMagnitudeProviderCyl
Receciver class: plask.flow.LightMagnitudeReceiverCyl
ThresholdSearchBesselCyl.
outLoss
(n=0)¶Provider of the computed modal extinction [1/cm].
Parameters: | n (int) – Value number. |
---|---|
Returns: | Value of the modal extinction [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.inModalLoss = solver.outLoss
Obtain the provided value:
>>> solver.outLoss(n=0)
1000
Test the number of provided values:
>>> len(solver.outLoss)
3
See also
Provider class: plask.flow.ModalLossProvider
Receciver class: plask.flow.ModalLossReceiver
ThresholdSearchBesselCyl.
outRefractiveIndex
(mesh, interpolation='default')¶Provider of the computed refractive index [-].
Parameters: |
|
---|---|
Returns: | Data with the refractive index on the specified mesh [-]. |
Example
Connect the provider to a receiver in some other solver:
>>> other_solver.inRefractiveIndex = solver.outRefractiveIndex
Obtain the provided field:
>>> solver.outRefractiveIndex(mesh)
<plask.Data at 0x1234567>
See also
Provider class: plask.flow.RefractiveIndexProviderCyl
Receciver class: plask.flow.RefractiveIndexReceiverCyl
ThresholdSearchBesselCyl.
outTemperature
(mesh, interpolation='default')¶Provider of the computed temperature [K].
Parameters: |
|
---|---|
Returns: | Data with the temperature on the specified mesh [K]. |
Example
Connect the provider to a receiver in some other solver:
>>> other_solver.inTemperature = solver.outTemperature
Obtain the provided field:
>>> solver.outTemperature(mesh)
<plask.Data at 0x1234567>
See also
Provider class: plask.flow.TemperatureProviderCyl
Receciver class: plask.flow.TemperatureReceiverCyl
ThresholdSearchBesselCyl.
outThermalConductivity
(mesh, interpolation='default')¶Provider of the computed thermal conductivity [W/(m×K)].
Parameters: |
|
---|---|
Returns: | Data with the thermal conductivity on the specified mesh [W/(m×K)]. |
Example
Connect the provider to a receiver in some other solver:
>>> other_solver.inThermalConductivity = solver.outThermalConductivity
Obtain the provided field:
>>> solver.outThermalConductivity(mesh)
<plask.Data at 0x1234567>
See also
Provider class: plask.flow.ThermalConductivityProviderCyl
Receciver class: plask.flow.ThermalConductivityReceiverCyl
ThresholdSearchBesselCyl.
outVoltage
(mesh, interpolation='default')¶Provider of the computed voltage [V].
Parameters: |
|
---|---|
Returns: | Data with the voltage on the specified mesh [V]. |
Example
Connect the provider to a receiver in some other solver:
>>> other_solver.inVoltage = solver.outVoltage
Obtain the provided field:
>>> solver.outVoltage(mesh)
<plask.Data at 0x1234567>
See also
Provider class: plask.flow.VoltageProviderCyl
Receciver class: plask.flow.VoltageReceiverCyl
ThresholdSearchBesselCyl.
outWavelength
(n=0)¶Provider of the computed wavelength [nm].
Parameters: | n (int) – Computed mode number. |
---|---|
Returns: | Value of the wavelength [nm]. |
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.inWavelength = solver.outWavelength
Obtain the provided value:
>>> solver.outWavelength(n=0)
1000
Test the number of provided values:
>>> len(solver.outWavelength)
3
See also
Provider class: plask.flow.WavelengthProvider
Receciver class: plask.flow.WavelengthReceiver
ThresholdSearchBesselCyl.
diffusion
= DiffusionCyl()¶electrical.diffusion.DiffusionCyl
solver used for electrical calculations.
ThresholdSearchBesselCyl.
dlam
= 0.05¶Wavelength step.
Step, by which the wavelength is swept while searching for the approximate mode.
ThresholdSearchBesselCyl.
electrical
= ShockleyCyl()¶electrical.shockley.ShockleyCyl
solver used for electrical calculations.
ThresholdSearchBesselCyl.
gain
= FreeCarrierCyl()¶gain.freecarrier.FreeCarrierCyl
solver used for gain calculations.
ThresholdSearchBesselCyl.
hem
= 1¶Angular mode number $m$.
1 for HE1x, 2 for HE2x, etc.
ThresholdSearchBesselCyl.
hen
= 1¶Radial mode number $n$.
1 for HEx1, 2 for HEx2, etc.
ThresholdSearchBesselCyl.
id
¶Id of the solver object. (read only)
Example
>>> mysolver.id
mysolver:category.type
ThresholdSearchBesselCyl.
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.
ThresholdSearchBesselCyl.
lam
= None¶Initial wavelength for optical search.
If this value is set, the computations are started from this value. If this
value is set, the radial mode number hen
is ignored.
Note that it is safer to leave this empty and allow the solver to look for it automatically, however, it may increase the time of optical computations.
ThresholdSearchBesselCyl.
maxiter
= 50¶Maximum number of root finding iterations.
ThresholdSearchBesselCyl.
maxlam
= optical.lam0¶Maximum wavelength considered for the optical mode search.
ThresholdSearchBesselCyl.
optical
= BesselCyl()¶optical.slab.BesselFrequencyCyl
solver used for optical calculations.
ThresholdSearchBesselCyl.
optical_resolution
= (800, 600)¶Number of points along the horizontal and vertical axes for the saved and plotted optical field.
ThresholdSearchBesselCyl.
quick
= False¶ThresholdSearchBesselCyl.
skip_thermal
= False¶Skip thermal computations.
The structure is assumed to have a constant temperature. This can be used to look for the threshold under pulse laser operation.
ThresholdSearchBesselCyl.
tfreq
= 6.0¶Number of electrical iterations per single thermal step.
As temperature tends to converge faster, it is reasonable to repeat thermal solution less frequently.
ThresholdSearchBesselCyl.
thermal
= StaticCyl()¶thermal.static.StaticCyl
solver used for thermal calculations.
ThresholdSearchBesselCyl.
vmax
= None¶Maximum voltage to search threshold for.
It should be above the threshold.
ThresholdSearchBesselCyl.
vmin
= None¶Minimum voltage to search threshold for.
It should be below the threshold.
ThresholdSearchBesselCyl.
vtol
= 1e-05¶Tolerance on voltage in the root search.