tidy3d.EMEMonitor#

class EMEMonitor[source]#

Bases: AbstractMonitor, ABC

Abstract base class for EME monitors.

Parameters:
  • center (Optional[tuple[Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box]]] = None) – [units = um]. Center of object in x, y, and z.

  • size (tuple[Union[NonNegativeFloat, autograd.tracer.Box], Union[NonNegativeFloat, autograd.tracer.Box], Union[NonNegativeFloat, autograd.tracer.Box]]) – [units = um]. Size in x, y, and z directions.

  • name (str) – Unique name for monitor.

  • freqs (Optional[ArrayLike[dtype=float, ndim=1]] = None) – Frequencies at which the monitor will record. Must be a subset of the simulation ‘freqs’. A value of ‘None’ will record at all simulation ‘freqs’.

  • num_modes (Optional[NonNegativeInt] = None) – Maximum number of modes for the monitor to record. Cannot exceed the greatest number of modes in any EME cell. A value of ‘None’ will record all modes.

  • num_sweep (Optional[NonNegativeInt] = 1) – Number of sweep indices for the monitor to record. Cannot exceed the number of sweep indices for the simulation. If the sweep does not change the monitor data, the sweep index will be omitted. A value of ‘None’ will record all sweep indices.

  • interval_space (tuple[Literal[1], Literal[1], Literal[1]] = (1, 1, 1)) – Number of grid step intervals between monitor recordings. If equal to 1, there will be no downsampling. If greater than 1, the step will be applied, but the first and last point of the monitor grid are always included. Not all monitors support values different from 1.

  • eme_cell_interval_space (Literal[1] = 1) – Number of EME cells between monitor recordings. If equal to 1, there will be no downsampling. If greater than 1, the step will be applied, but the first and last cells are always included. Not used in all monitors. Not all monitors support values different from 1.

  • colocate (Literal[True] = True) – Defines whether fields are colocated to grid cell boundaries (i.e. to the primal grid) on-the-fly during a solver run. Can be toggled for field recording monitors and is hard-coded for other monitors depending on their specific function.

Notes

EME monitors record data from the EME eigenmode expansion and propagation. Unlike FDTD monitors, they do not record time-domain data; instead they record modal quantities such as eigenmodes, mode coefficients, and fields reconstructed from the EME basis.

Attributes

Methods

storage_size(num_cells, ...)

Size of monitor storage given the number of points after discretization.

freqs#
num_modes#
num_sweep#
interval_space#
eme_cell_interval_space#
colocate#
abstract storage_size(num_cells, num_transverse_cells, num_eme_cells, num_virtual_eme_cells, num_freqs, num_modes, sweep_spec)[source]#

Size of monitor storage given the number of points after discretization.

Parameters:
  • num_cells (int) – Number of grid cells within the monitor after discretization by a Simulation.

  • num_transverse_cells (int) – Number of grid cells within the monitor transverse to the propagation axis after discretization by a Simulation.

  • num_eme_cells (int) – Number of EME cells intersecting the monitor.

  • num_virtual_eme_cells (int) – Number of virtual EME cells intersecting the monitor (includes repetitions).

  • num_freqs (int) – Number of frequencies in the monitor.

  • num_modes (int) – Number of modes in the monitor.

  • sweep_spec (Optional[EMESweepSpecType]) – The sweep specification used in the simulation.

Returns:

Number of bytes to be stored in monitor.

Return type:

int