{
  "title": "SurfaceFieldMonitor",
  "public_path": "flex_rf.tidy3d.SurfaceFieldMonitor",
  "lookup_path": "tidy3d.SurfaceFieldMonitor",
  "slug": "flex_rf/tidy3d/SurfaceFieldMonitor",
  "public_url": "/rf/latest/autogenerated/flex_rf/tidy3d/surfacefieldmonitor/",
  "object_kind": "class",
  "introduction": "`Monitor` that records electromagnetic fields in the frequency domain on PEC and lossy metal surfaces.",
  "notes": "`SurfaceFieldMonitor` objects operate by running a discrete Fourier transform of the fields at a given set of\nfrequencies to perform the calculation \"in-place\" with the time stepping. These monitors are designed\nto record fields on PEC (`PECMedium`) and lossy metal (`LossyMetalMedium`) surfaces,\nstoring the normal E and tangential H fields.",
  "examples": "```python\nimport tidy3d as td\nold_logging_level = td.config.logging_level\ntd.config.logging_level = \"ERROR\"\nmonitor = SurfaceFieldMonitor(\n    center=(1,2,3),\n    size=(2,2,2),\n    fields=['E', 'H'],\n    freqs=[250e12, 300e12],\n    name='surface_monitor')\ntd.config.logging_level = old_logging_level\n```",
  "references": "",
  "signature": "class SurfaceFieldMonitor(AbstractSurfaceMonitor, FreqMonitor)",
  "source": {
    "path": "flex/public/tidy3d/tidy3d/components/monitor.py",
    "url": "",
    "lineno": 2099,
    "endlineno": 2159
  },
  "bases": [
    "AbstractSurfaceMonitor",
    "FreqMonitor"
  ],
  "parameter_rows": [
    {
      "name": "attrs",
      "annotation": "dict",
      "default": "factory: dict",
      "description": "Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, `attrs` are mutable. For example, the following is allowed for setting an `attr` `obj.attrs['foo'] = bar`. Also note that Tidy3D will raise a `TypeError` if `attrs` contain objects that can not be serialized. One can check if `attrs` are serializable by calling `obj.model_dump_json()`.",
      "origin": "inherited"
    },
    {
      "name": "center",
      "annotation": "TracedCoordinate",
      "default": "(0.0, 0.0, 0.0)",
      "description": "Center of object in x, y, and z.",
      "origin": "inherited"
    },
    {
      "name": "size",
      "annotation": "TracedSize",
      "default": "",
      "description": "Size in x, y, and z directions.",
      "origin": "inherited"
    },
    {
      "name": "name",
      "annotation": "str",
      "default": "",
      "description": "Unique name for monitor.",
      "origin": "inherited"
    },
    {
      "name": "interval_space",
      "annotation": "tuple[Literal[1], Literal[1], Literal[1]]",
      "default": "(1, 1, 1)",
      "description": "Number of grid step intervals between monitor recordings. Only the value of 1 (no downsampling) is currently supported for surface monitors.",
      "origin": "inherited"
    },
    {
      "name": "colocate",
      "annotation": "Literal[True]",
      "default": "True",
      "description": "For surface monitors fields are always colocated on surface.",
      "origin": "inherited"
    },
    {
      "name": "use_colocated_integration",
      "annotation": "Literal[True]",
      "default": "True",
      "description": "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.",
      "origin": "inherited"
    },
    {
      "name": "freqs",
      "annotation": "FreqArray",
      "default": "",
      "description": "Array or list of frequencies stored by the field monitor.",
      "origin": "inherited"
    },
    {
      "name": "apodization",
      "annotation": "ApodizationSpec",
      "default": "factory: ApodizationSpec",
      "description": "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.",
      "origin": "inherited"
    },
    {
      "name": "fields",
      "annotation": "tuple[EMSurfaceField, ...]",
      "default": "['E', 'H']",
      "description": "Collection of field components to store in the monitor.",
      "origin": "inherited"
    }
  ],
  "members": [
    {
      "name": "storage_size",
      "kind": "function",
      "signature": "storage_size(num_cells: int, tmesh: ArrayFloat1D)",
      "description": "Size of monitor storage given the number of points after discretization. In general, this is severely overestimated for surface monitors."
    }
  ],
  "group": "flex_rf.tidy3d"
}
