`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 tranlated 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.

`BandEdgesFilter2D` |
Data filter for conduction and valence band edges into Cartesian2D geometry. |

`BandEdgesFilter3D` |
Data filter for conduction and valence band edges into Cartesian3D geometry. |

`BandEdgesFilterCyl` |
Data filter for conduction and valence band edges into Cylindrical geometry. |

`BandEdgesProvider2D` |
Provider of the conduction and valence band edges in Cartesian2D geometry [eV]. |

`BandEdgesProvider3D` |
Provider of the conduction and valence band edges in Cartesian3D geometry [eV]. |

`BandEdgesProviderCyl` |
Provider of the conduction and valence band edges in Cylindrical geometry [eV]. |

`BandEdgesReceiver2D` |
Receiver of the conduction and valence band edges in Cartesian2D geometry [eV]. |

`BandEdgesReceiver3D` |
Receiver of the conduction and valence band edges in Cartesian3D geometry [eV]. |

`BandEdgesReceiverCyl` |
Receiver of the conduction and valence band edges in Cylindrical geometry [eV]. |

`CarriersConcentrationFilter2D` |
Data filter for carriers concentration into Cartesian2D geometry. |

`CarriersConcentrationFilter3D` |
Data filter for carriers concentration into Cartesian3D geometry. |

`CarriersConcentrationFilterCyl` |
Data filter for carriers concentration into Cylindrical geometry. |

`CarriersConcentrationProvider2D` |
Provider of the carriers concentration in Cartesian2D geometry [1/cm³]. |

`CarriersConcentrationProvider3D` |
Provider of the carriers concentration in Cartesian3D geometry [1/cm³]. |

`CarriersConcentrationProviderCyl` |
Provider of the carriers concentration in Cylindrical geometry [1/cm³]. |

`CarriersConcentrationReceiver2D` |
Receiver of the carriers concentration in Cartesian2D geometry [1/cm³]. |

`CarriersConcentrationReceiver3D` |
Receiver of the carriers concentration in Cartesian3D geometry [1/cm³]. |

`CarriersConcentrationReceiverCyl` |
Receiver of the carriers concentration in Cylindrical geometry [1/cm³]. |

`ConductivityFilter2D` |
Data filter for electrical conductivity into Cartesian2D geometry. |

`ConductivityFilter3D` |
Data filter for electrical conductivity into Cartesian3D geometry. |

`ConductivityFilterCyl` |
Data filter for electrical conductivity into Cylindrical geometry. |

`ConductivityProvider2D` |
Provider of the electrical conductivity in Cartesian2D geometry [S/m]. |

`ConductivityProvider3D` |
Provider of the electrical conductivity in Cartesian3D geometry [S/m]. |

`ConductivityProviderCyl` |
Provider of the electrical conductivity in Cylindrical geometry [S/m]. |

`ConductivityReceiver2D` |
Receiver of the electrical conductivity in Cartesian2D geometry [S/m]. |

`ConductivityReceiver3D` |
Receiver of the electrical conductivity in Cartesian3D geometry [S/m]. |

`ConductivityReceiverCyl` |
Receiver of the electrical conductivity in Cylindrical geometry [S/m]. |

`CurrentDensityFilter2D` |
Data filter for current density into Cartesian2D geometry. |

`CurrentDensityFilter3D` |
Data filter for current density into Cartesian3D geometry. |

`CurrentDensityFilterCyl` |
Data filter for current density into Cylindrical geometry. |

`CurrentDensityProvider2D` |
Provider of the current density in Cartesian2D geometry [kA/cm²]. |

`CurrentDensityProvider3D` |
Provider of the current density in Cartesian3D geometry [kA/cm²]. |

`CurrentDensityProviderCyl` |
Provider of the current density in Cylindrical geometry [kA/cm²]. |

`CurrentDensityReceiver2D` |
Receiver of the current density in Cartesian2D geometry [kA/cm²]. |

`CurrentDensityReceiver3D` |
Receiver of the current density in Cartesian3D geometry [kA/cm²]. |

`CurrentDensityReceiverCyl` |
Receiver of the current density in Cylindrical geometry [kA/cm²]. |

`EnergyLevelsProvider2D` |
Provider of the energy levels for electrons and holes in Cartesian2D geometry [eV]. |

`EnergyLevelsProvider3D` |
Provider of the energy levels for electrons and holes in Cartesian3D geometry [eV]. |

`EnergyLevelsProviderCyl` |
Provider of the energy levels for electrons and holes in Cylindrical geometry [eV]. |

`EnergyLevelsReceiver2D` |
Receiver of the energy levels for electrons and holes in Cartesian2D geometry [eV]. |

`EnergyLevelsReceiver3D` |
Receiver of the energy levels for electrons and holes in Cartesian3D geometry [eV]. |

`EnergyLevelsReceiverCyl` |
Receiver of the energy levels for electrons and holes in Cylindrical geometry [eV]. |

`FermiLevelsFilter2D` |
Data filter for quasi-Fermi levels for electrons and holes into Cartesian2D geometry. |

`FermiLevelsFilter3D` |
Data filter for quasi-Fermi levels for electrons and holes into Cartesian3D geometry. |

`FermiLevelsFilterCyl` |
Data filter for quasi-Fermi levels for electrons and holes into Cylindrical geometry. |

`FermiLevelsProvider2D` |
Provider of the quasi-Fermi levels for electrons and holes in Cartesian2D geometry [eV]. |

`FermiLevelsProvider3D` |
Provider of the quasi-Fermi levels for electrons and holes in Cartesian3D geometry [eV]. |

`FermiLevelsProviderCyl` |
Provider of the quasi-Fermi levels for electrons and holes in Cylindrical geometry [eV]. |

`FermiLevelsReceiver2D` |
Receiver of the quasi-Fermi levels for electrons and holes in Cartesian2D geometry [eV]. |

`FermiLevelsReceiver3D` |
Receiver of the quasi-Fermi levels for electrons and holes in Cartesian3D geometry [eV]. |

`FermiLevelsReceiverCyl` |
Receiver of the quasi-Fermi levels for electrons and holes in Cylindrical geometry [eV]. |

`GainFilter2D` |
Data filter for material gain into Cartesian2D geometry. |

`GainFilter3D` |
Data filter for material gain into Cartesian3D geometry. |

`GainFilterCyl` |
Data filter for material gain into Cylindrical geometry. |

`GainProvider2D` |
Provider of the material gain in Cartesian2D geometry [1/cm]. |

`GainProvider3D` |
Provider of the material gain in Cartesian3D geometry [1/cm]. |

`GainProviderCyl` |
Provider of the material gain in Cylindrical geometry [1/cm]. |

`GainReceiver2D` |
Receiver of the material gain in Cartesian2D geometry [1/cm]. |

`GainReceiver3D` |
Receiver of the material gain in Cartesian3D geometry [1/cm]. |

`GainReceiverCyl` |
Receiver of the material gain in Cylindrical geometry [1/cm]. |

`HeatFilter2D` |
Data filter for heat sources density into Cartesian2D geometry. |

`HeatFilter3D` |
Data filter for heat sources density into Cartesian3D geometry. |

`HeatFilterCyl` |
Data filter for heat sources density into Cylindrical geometry. |

`HeatFluxFilter2D` |
Data filter for heat flux into Cartesian2D geometry. |

`HeatFluxFilter3D` |
Data filter for heat flux into Cartesian3D geometry. |

`HeatFluxFilterCyl` |
Data filter for heat flux into Cylindrical geometry. |

`HeatFluxProvider2D` |
Provider of the heat flux in Cartesian2D geometry [W/m²]. |

`HeatFluxProvider3D` |
Provider of the heat flux in Cartesian3D geometry [W/m²]. |

`HeatFluxProviderCyl` |
Provider of the heat flux in Cylindrical geometry [W/m²]. |

`HeatFluxReceiver2D` |
Receiver of the heat flux in Cartesian2D geometry [W/m²]. |

`HeatFluxReceiver3D` |
Receiver of the heat flux in Cartesian3D geometry [W/m²]. |

`HeatFluxReceiverCyl` |
Receiver of the heat flux in Cylindrical geometry [W/m²]. |

`HeatProvider2D` |
Provider of the heat sources density in Cartesian2D geometry [W/m³]. |

`HeatProvider3D` |
Provider of the heat sources density in Cartesian3D geometry [W/m³]. |

`HeatProviderCyl` |
Provider of the heat sources density in Cylindrical geometry [W/m³]. |

`HeatReceiver2D` |
Receiver of the heat sources density in Cartesian2D geometry [W/m³]. |

`HeatReceiver3D` |
Receiver of the heat sources density in Cartesian3D geometry [W/m³]. |

`HeatReceiverCyl` |
Receiver of the heat sources density in Cylindrical geometry [W/m³]. |

`HeatSumProvider2D` |
Combined provider for heat sources density. |

`HeatSumProviderCyl` |
Combined provider for heat sources density. |

`LightEFilter2D` |
Data filter for electric field into Cartesian2D geometry. |

`LightEFilter3D` |
Data filter for electric field into Cartesian3D geometry. |

`LightEFilterCyl` |
Data filter for electric field into Cylindrical geometry. |

`LightEProvider2D` |
Provider of the electric field in Cartesian2D geometry [V/m]. |

`LightEProvider3D` |
Provider of the electric field in Cartesian3D geometry [V/m]. |

`LightEProviderCyl` |
Provider of the electric field in Cylindrical geometry [V/m]. |

`LightEReceiver2D` |
Receiver of the electric field in Cartesian2D geometry [V/m]. |

`LightEReceiver3D` |
Receiver of the electric field in Cartesian3D geometry [V/m]. |

`LightEReceiverCyl` |
Receiver of the electric field in Cylindrical geometry [V/m]. |

`LightHFilter2D` |
Data filter for magnetic field into Cartesian2D geometry. |

`LightHFilter3D` |
Data filter for magnetic field into Cartesian3D geometry. |

`LightHFilterCyl` |
Data filter for magnetic field into Cylindrical geometry. |

`LightHProvider2D` |
Provider of the magnetic field in Cartesian2D geometry [A/m]. |

`LightHProvider3D` |
Provider of the magnetic field in Cartesian3D geometry [A/m]. |

`LightHProviderCyl` |
Provider of the magnetic field in Cylindrical geometry [A/m]. |

`LightHReceiver2D` |
Receiver of the magnetic field in Cartesian2D geometry [A/m]. |

`LightHReceiver3D` |
Receiver of the magnetic field in Cartesian3D geometry [A/m]. |

`LightHReceiverCyl` |
Receiver of the magnetic field in Cylindrical geometry [A/m]. |

`LightMagnitudeFilter2D` |
Data filter for optical field magnitude into Cartesian2D geometry. |

`LightMagnitudeFilter3D` |
Data filter for optical field magnitude into Cartesian3D geometry. |

`LightMagnitudeFilterCyl` |
Data filter for optical field magnitude into Cylindrical geometry. |

`LightMagnitudeProvider2D` |
Provider of the optical field magnitude in Cartesian2D geometry [W/m²]. |

`LightMagnitudeProvider3D` |
Provider of the optical field magnitude in Cartesian3D geometry [W/m²]. |

`LightMagnitudeProviderCyl` |
Provider of the optical field magnitude in Cylindrical geometry [W/m²]. |

`LightMagnitudeReceiver2D` |
Receiver of the optical field magnitude in Cartesian2D geometry [W/m²]. |

`LightMagnitudeReceiver3D` |
Receiver of the optical field magnitude in Cartesian3D geometry [W/m²]. |

`LightMagnitudeReceiverCyl` |
Receiver of the optical field magnitude in Cylindrical geometry [W/m²]. |

`ModeEffectiveIndexProvider` |
Provider of the effective index [-]. |

`ModeEffectiveIndexReceiver` |
Receiver of the effective index [-]. |

`ModeLightEFilter2D` |
Data filter for electric field into Cartesian2D geometry. |

`ModeLightEFilter3D` |
Data filter for electric field into Cartesian3D geometry. |

`ModeLightEFilterCyl` |
Data filter for electric field into Cylindrical geometry. |

`ModeLightEProvider2D` |
Provider of the electric field in Cartesian2D geometry [V/m]. |

`ModeLightEProvider3D` |
Provider of the electric field in Cartesian3D geometry [V/m]. |

`ModeLightEProviderCyl` |
Provider of the electric field in Cylindrical geometry [V/m]. |

`ModeLightEReceiver2D` |
Receiver of the electric field in Cartesian2D geometry [V/m]. |

`ModeLightEReceiver3D` |
Receiver of the electric field in Cartesian3D geometry [V/m]. |

`ModeLightEReceiverCyl` |
Receiver of the electric field in Cylindrical geometry [V/m]. |

`ModeLightHFilter2D` |
Data filter for magnetic field into Cartesian2D geometry. |

`ModeLightHFilter3D` |
Data filter for magnetic field into Cartesian3D geometry. |

`ModeLightHFilterCyl` |
Data filter for magnetic field into Cylindrical geometry. |

`ModeLightHProvider2D` |
Provider of the magnetic field in Cartesian2D geometry [A/m]. |

`ModeLightHProvider3D` |
Provider of the magnetic field in Cartesian3D geometry [A/m]. |

`ModeLightHProviderCyl` |
Provider of the magnetic field in Cylindrical geometry [A/m]. |

`ModeLightHReceiver2D` |
Receiver of the magnetic field in Cartesian2D geometry [A/m]. |

`ModeLightHReceiver3D` |
Receiver of the magnetic field in Cartesian3D geometry [A/m]. |

`ModeLightHReceiverCyl` |
Receiver of the magnetic field in Cylindrical geometry [A/m]. |

`ModeLightMagnitudeFilter2D` |
Data filter for optical field magnitude into Cartesian2D geometry. |

`ModeLightMagnitudeFilter3D` |
Data filter for optical field magnitude into Cartesian3D geometry. |

`ModeLightMagnitudeFilterCyl` |
Data filter for optical field magnitude into Cylindrical geometry. |

`ModeLightMagnitudeProvider2D` |
Provider of the optical field magnitude in Cartesian2D geometry [W/m²]. |

`ModeLightMagnitudeProvider3D` |
Provider of the optical field magnitude in Cartesian3D geometry [W/m²]. |

`ModeLightMagnitudeProviderCyl` |
Provider of the optical field magnitude in Cylindrical geometry [W/m²]. |

`ModeLightMagnitudeReceiver2D` |
Receiver of the optical field magnitude in Cartesian2D geometry [W/m²]. |

`ModeLightMagnitudeReceiver3D` |
Receiver of the optical field magnitude in Cartesian3D geometry [W/m²]. |

`ModeLightMagnitudeReceiverCyl` |
Receiver of the optical field magnitude in Cylindrical geometry [W/m²]. |

`ModeLossProvider` |
Provider of the modal extinction [1/cm]. |

`ModeLossReceiver` |
Receiver of the modal extinction [1/cm]. |

`ModePropagationConstantProvider` |
Provider of the propagation constant [1/µm]. |

`ModePropagationConstantReceiver` |
Receiver of the propagation constant [1/µm]. |

`ModeWavelengthProvider` |
Provider of the wavelength [nm]. |

`ModeWavelengthReceiver` |
Receiver of the wavelength [nm]. |

`PotentialFilter2D` |
Data filter for potential into Cartesian2D geometry. |

`PotentialFilter3D` |
Data filter for potential into Cartesian3D geometry. |

`PotentialFilterCyl` |
Data filter for potential into Cylindrical geometry. |

`PotentialProvider2D` |
Provider of the potential in Cartesian2D geometry [V]. |

`PotentialProvider3D` |
Provider of the potential in Cartesian3D geometry [V]. |

`PotentialProviderCyl` |
Provider of the potential in Cylindrical geometry [V]. |

`PotentialReceiver2D` |
Receiver of the potential in Cartesian2D geometry [V]. |

`PotentialReceiver3D` |
Receiver of the potential in Cartesian3D geometry [V]. |

`PotentialReceiverCyl` |
Receiver of the potential in Cylindrical geometry [V]. |

`RefractiveIndexFilter2D` |
Data filter for refractive index into Cartesian2D geometry. |

`RefractiveIndexFilter3D` |
Data filter for refractive index into Cartesian3D geometry. |

`RefractiveIndexFilterCyl` |
Data filter for refractive index into Cylindrical geometry. |

`RefractiveIndexProvider2D` |
Provider of the refractive index in Cartesian2D geometry [-]. |

`RefractiveIndexProvider3D` |
Provider of the refractive index in Cartesian3D geometry [-]. |

`RefractiveIndexProviderCyl` |
Provider of the refractive index in Cylindrical geometry [-]. |

`RefractiveIndexReceiver2D` |
Receiver of the refractive index in Cartesian2D geometry [-]. |

`RefractiveIndexReceiver3D` |
Receiver of the refractive index in Cartesian3D geometry [-]. |

`RefractiveIndexReceiverCyl` |
Receiver of the refractive index in Cylindrical geometry [-]. |

`TemperatureFilter2D` |
Data filter for temperature into Cartesian2D geometry. |

`TemperatureFilter3D` |
Data filter for temperature into Cartesian3D geometry. |

`TemperatureFilterCyl` |
Data filter for temperature into Cylindrical geometry. |

`TemperatureProvider2D` |
Provider of the temperature in Cartesian2D geometry [K]. |

`TemperatureProvider3D` |
Provider of the temperature in Cartesian3D geometry [K]. |

`TemperatureProviderCyl` |
Provider of the temperature in Cylindrical geometry [K]. |

`TemperatureReceiver2D` |
Receiver of the temperature in Cartesian2D geometry [K]. |

`TemperatureReceiver3D` |
Receiver of the temperature in Cartesian3D geometry [K]. |

`TemperatureReceiverCyl` |
Receiver of the temperature in Cylindrical geometry [K]. |

`ThermalConductivityFilter2D` |
Data filter for thermal conductivity into Cartesian2D geometry. |

`ThermalConductivityFilter3D` |
Data filter for thermal conductivity into Cartesian3D geometry. |

`ThermalConductivityFilterCyl` |
Data filter for thermal conductivity into Cylindrical geometry. |

`ThermalConductivityProvider2D` |
Provider of the thermal conductivity in Cartesian2D geometry [W/(m×K)]. |

`ThermalConductivityProvider3D` |
Provider of the thermal conductivity in Cartesian3D geometry [W/(m×K)]. |

`ThermalConductivityProviderCyl` |
Provider of the thermal conductivity in Cylindrical geometry [W/(m×K)]. |

`ThermalConductivityReceiver2D` |
Receiver of the thermal conductivity in Cartesian2D geometry [W/(m×K)]. |

`ThermalConductivityReceiver3D` |
Receiver of the thermal conductivity in Cartesian3D geometry [W/(m×K)]. |

`ThermalConductivityReceiverCyl` |
Receiver of the thermal conductivity in Cylindrical geometry [W/(m×K)]. |

`VoltageFilter2D` |
Data filter for voltage into Cartesian2D geometry. |

`VoltageFilter3D` |
Data filter for voltage into Cartesian3D geometry. |

`VoltageFilterCyl` |
Data filter for voltage into Cylindrical geometry. |

`VoltageProvider2D` |
Provider of the voltage in Cartesian2D geometry [V]. |

`VoltageProvider3D` |
Provider of the voltage in Cartesian3D geometry [V]. |

`VoltageProviderCyl` |
Provider of the voltage in Cylindrical geometry [V]. |

`VoltageReceiver2D` |
Receiver of the voltage in Cartesian2D geometry [V]. |

`VoltageReceiver3D` |
Receiver of the voltage in Cartesian3D geometry [V]. |

`VoltageReceiverCyl` |
Receiver of the voltage in Cylindrical geometry [V]. |