Skip to content

flex_rf.tidy3d.SurfaceFieldMonitor

Type: class Base(s): AbstractSurfaceMonitor, FreqMonitor

Monitor that records electromagnetic fields in the frequency domain on PEC and lossy metal surfaces.

SurfaceFieldMonitor objects operate by running a discrete Fourier transform of the fields at a given set of frequencies to perform the calculation “in-place” with the time stepping. These monitors are designed to record fields on PEC (PECMedium) and lossy metal (LossyMetalMedium) surfaces, storing the normal E and tangential H fields.

import tidy3d as td
old_logging_level = td.config.logging_level
td.config.logging_level = "ERROR"
monitor = SurfaceFieldMonitor(
center=(1,2,3),
size=(2,2,2),
fields=['E', 'H'],
freqs=[250e12, 300e12],
name='surface_monitor')
td.config.logging_level = old_logging_level
size [TracedSize]

Size in x, y, and z directions.

name [str]

Unique name for monitor.

freqs [FreqArray]

Array or list of frequencies stored by the field monitor.

center [TracedCoordinate] = (0.0, 0.0, 0.0)

Center of object in x, y, and z.

interval_space [tuple[Literal[1], Literal[1], Literal[1]]] = (1, 1, 1)

Number of grid step intervals between monitor recordings. Only the value of 1 (no downsampling) is currently supported for surface monitors.

colocate [Literal[True]] = True

For surface monitors fields are always colocated on surface.

use_colocated_integration [Literal[True]] = True

Whether to use colocated fields for flux, dot products, and overlap integrals. Hard-coded to True for most monitor types. Can be toggled on field and overlap monitors.

apodization [ApodizationSpec] = factory: ApodizationSpec

Sets parameters of (optional) apodization. Apodization applies a windowing function to the Fourier transform of the time-domain fields into frequency-domain ones, and can be used to truncate the beginning and/or end of the time signal, for example to eliminate the source pulse when studying the eigenmodes of a system. Note: apodization affects the normalization of the frequency-domain fields.

fields [tuple[EMSurfaceField, ...]] = ['E', 'H']

Collection of field components to store in the monitor.

storage_size(num_cells: int, tmesh: ArrayFloat1D)

Size of monitor storage given the number of points after discretization. In general, this is severely overestimated for surface monitors.