tidy3d.FluxData#

class tidy3d.FluxData#

Data associated with a FluxMonitor: flux data in the frequency-domain.

Parameters

monitor (FluxMonitor) – flux : FluxDataArray

Example

>>> f = [2e14, 3e14]
>>> coords = dict(f=f)
>>> flux_data = FluxDataArray(np.random.random(2), coords=coords)
>>> monitor = FluxMonitor(size=(2,0,6), freqs=[2e14, 3e14], name='flux')
>>> data = FluxData(monitor=monitor, flux=flux_data)

Show JSON schema
{
   "title": "FluxData",
   "description": "Data associated with a :class:`.FluxMonitor`: flux data in the frequency-domain.\n\nParameters\n----------\nmonitor : FluxMonitor\n        flux : FluxDataArray\n    \nExample\n-------\n>>> f = [2e14, 3e14]\n>>> coords = dict(f=f)\n>>> flux_data = FluxDataArray(np.random.random(2), coords=coords)\n>>> monitor = FluxMonitor(size=(2,0,6), freqs=[2e14, 3e14], name='flux')\n>>> data = FluxData(monitor=monitor, flux=flux_data)",
   "type": "object",
   "properties": {
      "monitor": {
         "$ref": "#/definitions/FluxMonitor"
      },
      "type": {
         "title": "Type",
         "default": "FluxData",
         "enum": [
            "FluxData"
         ],
         "type": "string"
      },
      "flux": {
         "title": "DataArray",
         "type": "xr.DataArray",
         "properties": {
            "__slots__": {
               "title": "__slots__",
               "type": "Tuple[str, ...]"
            }
         },
         "required": [
            "__slots__"
         ]
      }
   },
   "required": [
      "monitor",
      "flux"
   ],
   "additionalProperties": false,
   "definitions": {
      "FluxMonitor": {
         "title": "FluxMonitor",
         "description": ":class:`Monitor` that records power flux in the frequency domain.\nIf the monitor geometry is a 2D box, the total flux through this plane is returned, with a\npositive sign corresponding to power flow in the positive direction along the axis normal to\nthe plane. If the geometry is a 3D box, the total power coming out of the box is returned by\nintegrating the flux over all box surfaces (excpet the ones defined in ``exclude_surfaces``).\n\nParameters\n----------\ncenter : Tuple[float, float, float] = (0.0, 0.0, 0.0)\n    [units = um].  Center of object in x, y, and z.\nsize : Tuple[NonNegativeFloat, NonNegativeFloat, NonNegativeFloat]\n    [units = um].  Size in x, y, and z directions.\nname : ConstrainedStrValue\n    Unique name for monitor.\nfreqs : Union[Tuple[float, ...], Array]\n    [units = Hz].  Array or list of frequencies stored by the field monitor.\nnormal_dir : Optional[Literal['+', '-']] = None\n    Direction of the surface monitor's normal vector w.r.t. the positive x, y or z unit vectors. Must be one of ``'+'`` or ``'-'``. Applies to surface monitors only, and defaults to ``'+'`` if not provided.\nexclude_surfaces : Optional[Tuple[Literal['x-', 'x+', 'y-', 'y+', 'z-', 'z+'], ...]] = None\n    Surfaces to exclude in the integration, if a volume monitor.\n\nExample\n-------\n>>> monitor = FluxMonitor(\n...     center=(1,2,3),\n...     size=(2,2,0),\n...     freqs=[200e12, 210e12],\n...     name='flux_monitor')\n\nNote\n----\nFor a 2D plane, the flux is summed up over all Yee grid pixels that are touched by the plane,\nrather than integrated over the exact span of the plane. For a 3D monitor, this is also the\ncase, but care is taken to not over- or under-count the power at the edges. Because of this,\nthere can be small discrepancies between using a 3D FluxMonitor and manually placing six\n2D monitors at the surface locations.",
         "type": "object",
         "properties": {
            "type": {
               "title": "Type",
               "default": "FluxMonitor",
               "enum": [
                  "FluxMonitor"
               ],
               "type": "string"
            },
            "center": {
               "title": "Center",
               "description": "Center of object in x, y, and z.",
               "default": [
                  0.0,
                  0.0,
                  0.0
               ],
               "units": "um",
               "type": "array",
               "minItems": 3,
               "maxItems": 3,
               "items": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "number"
                  },
                  {
                     "type": "number"
                  }
               ]
            },
            "size": {
               "title": "Size",
               "description": "Size in x, y, and z directions.",
               "units": "um",
               "type": "array",
               "minItems": 3,
               "maxItems": 3,
               "items": [
                  {
                     "type": "number",
                     "minimum": 0
                  },
                  {
                     "type": "number",
                     "minimum": 0
                  },
                  {
                     "type": "number",
                     "minimum": 0
                  }
               ]
            },
            "name": {
               "title": "Name",
               "description": "Unique name for monitor.",
               "minLength": 1,
               "type": "string"
            },
            "freqs": {
               "title": "Frequencies",
               "description": "Array or list of frequencies stored by the field monitor.",
               "units": "Hz",
               "anyOf": [
                  {
                     "type": "array",
                     "items": {
                        "type": "number"
                     }
                  },
                  {
                     "title": "Array Like",
                     "description": "Accepts sequence (tuple, list, numpy array) and converts to tuple.",
                     "type": "tuple",
                     "properties": {},
                     "required": []
                  }
               ]
            },
            "normal_dir": {
               "title": "Normal vector orientation",
               "description": "Direction of the surface monitor's normal vector w.r.t. the positive x, y or z unit vectors. Must be one of ``'+'`` or ``'-'``. Applies to surface monitors only, and defaults to ``'+'`` if not provided.",
               "enum": [
                  "+",
                  "-"
               ],
               "type": "string"
            },
            "exclude_surfaces": {
               "title": "Excluded surfaces",
               "description": "Surfaces to exclude in the integration, if a volume monitor.",
               "type": "array",
               "items": {
                  "enum": [
                     "x-",
                     "x+",
                     "y-",
                     "y+",
                     "z-",
                     "z+"
                  ],
                  "type": "string"
               }
            }
         },
         "required": [
            "size",
            "name",
            "freqs"
         ],
         "additionalProperties": false
      }
   }
}

Fields
  • flux (tidy3d.components.data.data_array.FluxDataArray)

  • monitor (tidy3d.components.monitor.FluxMonitor)

attribute flux: tidy3d.components.data.data_array.FluxDataArray [Required]#
Constraints
  • title = DataArray

  • type = xr.DataArray

  • properties = {‘__slots__’: {‘title’: ‘__slots__’, ‘type’: ‘Tuple[str, …]’}}

  • required = [‘__slots__’]

attribute monitor: tidy3d.components.monitor.FluxMonitor [Required]#
normalize(source_spectrum_fn) tidy3d.components.data.monitor_data.FluxData#

Return copy of self after normalization is applied using source spectrum function.