tidy3d.CustomCurrentSource#
- class CustomCurrentSource[source]#
- Bases: - ReverseInterpolatedSource- Implements a source corresponding to an input dataset containing - Eand- Hfields.- Parameters:
- name (Optional[str] = None) β Optional name for the source. 
- center (Tuple[float, float, float] = (0.0, 0.0, 0.0)) β [units = um]. Center of object in x, y, and z. 
- size (Tuple[NonNegativeFloat, NonNegativeFloat, NonNegativeFloat]) β [units = um]. Size in x, y, and z directions. 
- source_time (Union[GaussianPulse, ContinuousWave, CustomSourceTime]) β Specification of the source time-dependence. 
- interpolate (bool = True) β 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 (Optional[FieldDataset]) β - FieldDatasetcontaining the desired frequency-domain electric and magnetic current patterns to inject.
 
 - Notes - Injects the specified components of the - Eand- Hdataset directly as- Jand- Mcurrent 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) - See also - Notebooks
 - Attributes - Methods - current_dataset#
 - __hash__()#
- Hash method.