tidy3d.CustomCurrentSource#
- class CustomCurrentSource[source]#
Bases:
ReverseInterpolatedSource
Implements a source corresponding to an input dataset containing
E
andH
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. IfTrue
, 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
andH
dataset directly asJ
andM
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 afield_dataset
, the source accepts acurrent_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 forCustomCurrentSource
. 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 theCustomFieldSource
, 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)
See also
- Notebooks
Attributes
Methods
- current_dataset#
- __hash__()#
Hash method.