plask.flow¶
Data flow classes for standard properties.
This module contains providers, receivers, and filters for standard properties. These classes are present in binary solvers, but you may also use them in your custom Python solvers.
Providers and Receivers
Existing providers can be connected to receivers by using a simple assignment operator:
>>> first_solver.inTemperature = second_solver.outTemperature
You can manually retrieve data from any provider or a connected receiver by calling it like a function:
>>> second_solver.outTemperature(mymesh)
<plask.Data at 0x584c140>
>>> first_solver.inTemperature(mymesh, 'spline')
<plask.Data at 0x584c140>
Providers and receivers of most quantities give spatial distributions of the corresponding fields and, thus, require the target mesh as its argument. In addition you may specify the interpolation method as in the example above. If the interpolation method is omitted, its default value, depending is assumed by the solver automatically.
Some properties (e.g. the light intensity) require the result number given as the first argument (this is e.g. the consecutive mode number). Others take some optional arguments that are specified at the end (e.g. the gain requires to be given the wavelength at which the gain is computed.
In PLaSK you can create your custom Python solvers. They may contain the default providers and receivers defined here. Receivers are simple objects that can be attached to providers later and read as shown above. On the contrary, providers require you to create a callable that returns the data to be provided when requested.
Example
To create the solver that gets temperature from another source and increases it by 60 K, use the following class:
>>> class Hotter:
... def __init__(self):
... self.inTemperature = flow.TemperatureReceiver2D()
... self.outTemperature = flow.TemperatureProvider2D(
... lambda mesh, meth: self.get_data(mesh, meth))
... def get_data(self, mesh, method):
... temp = self.inTemperature(mesh, method)
... return temp.array + 60.
Filters
Filters are solver-like classes that translate the fields computed in one geometry to another one. This geometry can have either the same or different dimension.
All filter classes are used the same way. They are constructed with a single
argument, which is a target geometry. The type of this geometry must match
the suffix of the filter (2D for two-dimensional Cartesian geometry, Cyl
for axi-symmetric cylindrical geometry, and 3D for three-dimensional one.
An example temperature filter for target 2D geometry can be constructed as
follows:
>>> temp_filter = flow.TemperatureFilter2D(mygeometry2d)
Having an existing filter, you may attach a source provider to it, using bracket
indexing. The index is a geometry object either existing in the target geometry
or containing it (e.g. a geometry.Extrusion object that is the root of
the my_geometry_2d geometry). The indexed element is a proper data receiver
that can be used for connecting the source data.
>>> temp_filter[some_object_in_mygeometry2d]
<plask.ReceiverForTemperature2D at 0x43a5210>
>>> temp_filter[mygeometry2d.extrusion]
<plask.ReceiverForTemperature3D at 0x44751a0>
>>> temp_filter[mygeometry2d.extrusion] = thermal_solver_3d.outTemperature
After connecting the source, the translated data can be obtained using the filter
member out, which is a provider that can be connected to other solvers.
>>> temp_filter.out
<plask.ProviderForTemperature2D at 0x43a5fa0>
>>> other_solver_in_2d.inTemperature = temp_filter.out
After the connection the filter does its job automatically.
See also
Definition of filters in the XPL file: filter tag.
Example using filters: sec-tutorial-threshold-of-array.
Classes¶
BandEdgesFilter2D(geometry) |
|
BandEdgesFilter3D(geometry) |
|
BandEdgesFilterCyl(geometry) |
|
BandEdgesProvider2D(data) |
|
BandEdgesProvider3D(data) |
|
BandEdgesProviderCyl(data) |
|
BandEdgesReceiver2D() |
|
BandEdgesReceiver3D() |
|
BandEdgesReceiverCyl() |
|
CarriersConcentrationFilter2D(geometry) |
|
CarriersConcentrationFilter3D(geometry) |
|
CarriersConcentrationFilterCyl(geometry) |
|
CarriersConcentrationProvider2D(data) |
|
CarriersConcentrationProvider3D(data) |
|
CarriersConcentrationProviderCyl(data) |
|
CarriersConcentrationReceiver2D() |
|
CarriersConcentrationReceiver3D() |
|
CarriersConcentrationReceiverCyl() |
|
ConductivityFilter2D(geometry) |
|
ConductivityFilter3D(geometry) |
|
ConductivityFilterCyl(geometry) |
|
ConductivityProvider2D(data) |
|
ConductivityProvider3D(data) |
|
ConductivityProviderCyl(data) |
|
ConductivityReceiver2D() |
|
ConductivityReceiver3D() |
|
ConductivityReceiverCyl() |
|
CurrentDensityFilter2D(geometry) |
|
CurrentDensityFilter3D(geometry) |
|
CurrentDensityFilterCyl(geometry) |
|
CurrentDensityProvider2D(data) |
|
CurrentDensityProvider3D(data) |
|
CurrentDensityProviderCyl(data) |
|
CurrentDensityReceiver2D() |
|
CurrentDensityReceiver3D() |
|
CurrentDensityReceiverCyl() |
|
EnergyLevelsProvider2D(data) |
|
EnergyLevelsProvider3D(data) |
|
EnergyLevelsProviderCyl(data) |
|
EnergyLevelsReceiver2D() |
|
EnergyLevelsReceiver3D() |
|
EnergyLevelsReceiverCyl() |
|
EpsilonFilter2D(geometry) |
|
EpsilonFilter3D(geometry) |
|
EpsilonFilterCyl(geometry) |
|
EpsilonProvider2D(data) |
|
EpsilonProvider3D(data) |
|
EpsilonProviderCyl(data) |
|
EpsilonReceiver2D() |
|
EpsilonReceiver3D() |
|
EpsilonReceiverCyl() |
|
FermiLevelsFilter2D(geometry) |
|
FermiLevelsFilter3D(geometry) |
|
FermiLevelsFilterCyl(geometry) |
|
FermiLevelsProvider2D(data) |
|
FermiLevelsProvider3D(data) |
|
FermiLevelsProviderCyl(data) |
|
FermiLevelsReceiver2D() |
|
FermiLevelsReceiver3D() |
|
FermiLevelsReceiverCyl() |
|
GainFilter2D(geometry) |
|
GainFilter3D(geometry) |
|
GainFilterCyl(geometry) |
|
GainProvider2D(data) |
|
GainProvider3D(data) |
|
GainProviderCyl(data) |
|
GainReceiver2D() |
|
GainReceiver3D() |
|
GainReceiverCyl() |
|
HeatFilter2D(geometry) |
|
HeatFilter3D(geometry) |
|
HeatFilterCyl(geometry) |
|
HeatFluxFilter2D(geometry) |
|
HeatFluxFilter3D(geometry) |
|
HeatFluxFilterCyl(geometry) |
|
HeatFluxProvider2D(data) |
|
HeatFluxProvider3D(data) |
|
HeatFluxProviderCyl(data) |
|
HeatFluxReceiver2D() |
|
HeatFluxReceiver3D() |
|
HeatFluxReceiverCyl() |
|
HeatProvider2D(data) |
|
HeatProvider3D(data) |
|
HeatProviderCyl(data) |
|
HeatReceiver2D() |
|
HeatReceiver3D() |
|
HeatReceiverCyl() |
|
Combined provider for heat sources density. |
|
Combined provider for heat sources density. |
|
LightEFilter2D(geometry) |
|
LightEFilter3D(geometry) |
|
LightEFilterCyl(geometry) |
|
LightEProvider2D(data) |
|
LightEProvider3D(data) |
|
LightEProviderCyl(data) |
|
LightEReceiver2D() |
|
LightEReceiver3D() |
|
LightEReceiverCyl() |
|
LightHFilter2D(geometry) |
|
LightHFilter3D(geometry) |
|
LightHFilterCyl(geometry) |
|
LightHProvider2D(data) |
|
LightHProvider3D(data) |
|
LightHProviderCyl(data) |
|
LightHReceiver2D() |
|
LightHReceiver3D() |
|
LightHReceiverCyl() |
|
LightMagnitudeFilter2D(geometry) |
|
LightMagnitudeFilter3D(geometry) |
|
LightMagnitudeFilterCyl(geometry) |
|
LightMagnitudeProvider2D(data) |
|
LightMagnitudeProvider3D(data) |
|
LightMagnitudeProviderCyl(data) |
|
LightMagnitudeReceiver2D() |
|
LightMagnitudeReceiver3D() |
|
LightMagnitudeReceiverCyl() |
|
LuminescenceFilter2D(geometry) |
|
LuminescenceFilter3D(geometry) |
|
LuminescenceFilterCyl(geometry) |
|
LuminescenceProvider2D(data) |
|
LuminescenceProvider3D(data) |
|
LuminescenceProviderCyl(data) |
|
LuminescenceReceiver2D() |
|
LuminescenceReceiver3D() |
|
LuminescenceReceiverCyl() |
|
ModeEffectiveIndexProvider(data) |
|
ModeEffectiveIndexReceiver() |
|
ModeLightEFilter2D(geometry) |
|
ModeLightEFilter3D(geometry) |
|
ModeLightEFilterCyl(geometry) |
|
ModeLightEProvider2D(data) |
|
ModeLightEProvider3D(data) |
|
ModeLightEProviderCyl(data) |
|
ModeLightEReceiver2D() |
|
ModeLightEReceiver3D() |
|
ModeLightEReceiverCyl() |
|
ModeLightHFilter2D(geometry) |
|
ModeLightHFilter3D(geometry) |
|
ModeLightHFilterCyl(geometry) |
|
ModeLightHProvider2D(data) |
|
ModeLightHProvider3D(data) |
|
ModeLightHProviderCyl(data) |
|
ModeLightHReceiver2D() |
|
ModeLightHReceiver3D() |
|
ModeLightHReceiverCyl() |
|
ModeLightMagnitudeFilter2D(geometry) |
|
ModeLightMagnitudeFilter3D(geometry) |
|
ModeLightMagnitudeFilterCyl(geometry) |
|
ModeLightMagnitudeProvider2D(data) |
|
ModeLightMagnitudeProvider3D(data) |
|
ModeLightMagnitudeProviderCyl(data) |
|
ModeLightMagnitudeReceiver2D() |
|
ModeLightMagnitudeReceiver3D() |
|
ModeLightMagnitudeReceiverCyl() |
|
ModeLossProvider(data) |
|
ModeLossReceiver() |
|
ModePropagationConstantProvider(data) |
|
ModePropagationConstantReceiver() |
|
ModeWavelengthProvider(data) |
|
ModeWavelengthReceiver() |
|
PotentialFilter2D(geometry) |
|
PotentialFilter3D(geometry) |
|
PotentialFilterCyl(geometry) |
|
PotentialProvider2D(data) |
|
PotentialProvider3D(data) |
|
PotentialProviderCyl(data) |
|
PotentialReceiver2D() |
|
PotentialReceiver3D() |
|
PotentialReceiverCyl() |
|
RefractiveIndexFilter2D(geometry) |
|
RefractiveIndexFilter3D(geometry) |
|
RefractiveIndexFilterCyl(geometry) |
|
RefractiveIndexProvider2D(data) |
|
RefractiveIndexProvider3D(data) |
|
RefractiveIndexProviderCyl(data) |
|
RefractiveIndexReceiver2D() |
|
RefractiveIndexReceiver3D() |
|
RefractiveIndexReceiverCyl() |
|
TemperatureFilter2D(geometry) |
|
TemperatureFilter3D(geometry) |
|
TemperatureFilterCyl(geometry) |
|
TemperatureProvider2D(data) |
|
TemperatureProvider3D(data) |
|
TemperatureProviderCyl(data) |
|
TemperatureReceiver2D() |
|
TemperatureReceiver3D() |
|
TemperatureReceiverCyl() |
|
ThermalConductivityFilter2D(geometry) |
|
ThermalConductivityFilter3D(geometry) |
|
ThermalConductivityFilterCyl(geometry) |
|
ThermalConductivityProvider2D(data) |
|
ThermalConductivityProvider3D(data) |
|
ThermalConductivityProviderCyl(data) |
|
ThermalConductivityReceiver2D() |
|
ThermalConductivityReceiver3D() |
|
ThermalConductivityReceiverCyl() |
|
VoltageFilter2D(geometry) |
|
VoltageFilter3D(geometry) |
|
VoltageFilterCyl(geometry) |
|
VoltageProvider2D(data) |
|
VoltageProvider3D(data) |
|
VoltageProviderCyl(data) |
|
VoltageReceiver2D() |
|
VoltageReceiver3D() |
|
VoltageReceiverCyl() |