tidy3d.CustomCurrentSource#

class CustomCurrentSource[source]#

Bases: ReverseInterpolatedSource

Implements a source corresponding to an input dataset containing E and H fields.

Parameters:
  • name (Attribute: name) –

    Type

    Optional[str]

    Default

    = None

    Description

    Optional name for the source.

  • center (Attribute: center) –

    Type

    Tuple[float, float, float]

    Default

    = (0.0, 0.0, 0.0)

    Units

    um

    Description

    Center of object in x, y, and z.

  • size (Attribute: size) –

    Type

    Tuple[NonNegativeFloat, NonNegativeFloat, NonNegativeFloat]

    Default

    Units

    um

    Description

    Size in x, y, and z directions.

  • source_time (Attribute: source_time) –

    Type

    Union[GaussianPulse, ContinuousWave, CustomSourceTime]

    Default

    Description

    Specification of the source time-dependence.

  • interpolate (Attribute: interpolate) –

    Type

    bool

    Default

    = True

    Description

    Handles reverse-interpolation of zero-size dimensions of the source. If False, the source data is snapped to the nearest Yee grid point. If True, equivalent source data is applied on the surrounding Yee grid points to emulate placement at the specified location using linear interpolation.

  • current_dataset (Attribute: current_dataset) –

    Type

    Optional[FieldDataset]

    Default

    Description

    FieldDataset containing the desired frequency-domain electric and magnetic current patterns to inject.

Notes

Injects the specified components of the E and H dataset directly as J and M current distributions in the FDTD solver. The coordinates of all provided fields are assumed to be relative to the source center.

The syntax is very similar to CustomFieldSource, except instead of a field_dataset, the source accepts a current_dataset. This dataset still contains \(E_{x,y,z}\) and \(H_{x,y, z}\) field components, which correspond to \(J\) and \(M\) components respectively. There are also fewer constraints on the data requirements for CustomCurrentSource. It can be volumetric or planar without requiring tangential components. Finally, note that the dataset is still defined w.r.t. the source center, just as in the case of the CustomFieldSource, and can then be placed anywhere in the simulation.

Example

>>> from tidy3d import ScalarFieldDataArray
>>> pulse = GaussianPulse(freq0=200e12, fwidth=20e12)
>>> x = np.linspace(-1, 1, 101)
>>> y = np.linspace(-1, 1, 101)
>>> z = np.array([0])
>>> f = [2e14]
>>> coords = dict(x=x, y=y, z=z, f=f)
>>> scalar_field = ScalarFieldDataArray(np.ones((101, 101, 1, 1)), coords=coords)
>>> dataset = FieldDataset(Ex=scalar_field)
>>> custom_source = CustomCurrentSource(
...     center=(1, 1, 1),
...     size=(2, 2, 0),
...     source_time=pulse,
...     current_dataset=dataset)

Attributes

Methods

current_dataset#
__hash__()#

Hash method.