# PLaSK User Manual

#### Page Contents

- CarriersConcentrationProvider3D Class
  - `CarriersConcentrationProvider3D`
  - `CarriersConcentrationProvider3D.solver.outCarriersConcentration()`
  - Methods
  - Descriptions
    - Method Details
      - `CarriersConcentrationProvider3D.__call__()`
      - `CarriersConcentrationProvider3D.set_changed()`

# CarriersConcentrationProvider3D Class

class plask.flow.CarriersConcentrationProvider3D(data)

  Provider of the carriers concentration in Cartesian3D geometry (1/cm³).

  This class is used for carriers concentration provider in binary solvers. You can also create a custom provider for your Python solver.

  Parameters:

    data – `Data` object to interpolate or callable returning it for given mesh. The callable must accept the same arguments as the provider `__call__` method (see below). It must also be able to give its length (i.e. have the `__len__` method defined) that gives the number of different provided values.

  To obtain the value from the provider simply call it. The call signature is as follows:

  solver.outCarriersConcentration(type='', mesh, interpolation='default')
    Parameters:

      - type (str) – Detailed information which carriers are returned. It can be ‘majority’ to return majority carriers in given material, ‘pairs’ for the concentration of electron-hole pairs, ‘electrons’, or ‘holes’ for particular carriers type.

      - mesh (mesh) – Target mesh to get the field at.

      - interpolation (str) – Requested interpolation method.

    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

  Receiver of carriers concentration: `plask.flow.CarriersConcentrationReceiver3D` Data filter for carriers concentration: `plask.flow.CarriersConcentrationFilter3D`

## Methods

`__call__`(...) | Get value from the provider.
`set_changed`() | Inform all connected receivers that the provided value has changed.

## Descriptions

### Method Details

CarriersConcentrationProvider3D.__call__(type, mesh, interpolation='DEFAULT')
CarriersConcentrationProvider3D.__call__(mesh, interpolation='DEFAULT')

  Get value from the provider.

  Parameters:

    - type (str) – Detailed information which carriers are returned. It can be ‘majority’ to return majority carriers in given material, ‘pairs’ for the concentration of electron-hole pairs, ‘electrons’, or ‘holes’ for particular carriers type.

    - mesh (mesh) – Target mesh to get the field at.

    - interpolation (str) – Requested interpolation method.

CarriersConcentrationProvider3D.set_changed()

  Inform all connected receivers that the provided value has changed.

  The receivers will have its changed attribute set to True and solvers will call the provider again if they need its value (otherwise they might take it from the cache.