tidy3d.FluxTimeMonitor#

class tidy3d.FluxTimeMonitor#

Monitor that records power flux in the time domain. If the monitor geometry is a 2D box, the total flux through this plane is returned, with a positive sign corresponding to power flow in the positive direction along the axis normal to the plane. If the geometry is a 3D box, the total power coming out of the box is returned by integrating the flux over all box surfaces (excpet the ones defined in exclude_surfaces).

Parameters
  • 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.

  • name (ConstrainedStrValue) – Unique name for monitor.

  • start (NonNegativeFloat = 0.0) – [units = sec]. Time at which to start monitor recording.

  • stop (Optional[NonNegativeFloat] = None) – [units = sec]. Time at which to stop monitor recording. If not specified, record until end of simulation.

  • interval (PositiveInt = 1) – Number of time step intervals between monitor recordings.

  • normal_dir (Optional[Literal['+', '-']] = None) – 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.

  • exclude_surfaces (Optional[Tuple[Literal['x-', 'x+', 'y-', 'y+', 'z-', 'z+'], ...]] = None) – Surfaces to exclude in the integration, if a volume monitor.

Example

>>> monitor = FluxTimeMonitor(
...     center=(1,2,3),
...     size=(2,2,0),
...     start=1e-13,
...     stop=5e-13,
...     interval=2,
...     name='flux_vs_time')

Show JSON schema
{
   "title": "FluxTimeMonitor",
   "description": ":class:`Monitor` that records power flux in the time 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.\nstart : NonNegativeFloat = 0.0\n    [units = sec].  Time at which to start monitor recording.\nstop : Optional[NonNegativeFloat] = None\n    [units = sec].  Time at which to stop monitor recording.  If not specified, record until end of simulation.\ninterval : PositiveInt = 1\n    Number of time step intervals between monitor recordings.\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 = FluxTimeMonitor(\n...     center=(1,2,3),\n...     size=(2,2,0),\n...     start=1e-13,\n...     stop=5e-13,\n...     interval=2,\n...     name='flux_vs_time')",
   "type": "object",
   "properties": {
      "type": {
         "title": "Type",
         "default": "FluxTimeMonitor",
         "enum": [
            "FluxTimeMonitor"
         ],
         "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"
      },
      "start": {
         "title": "Start time",
         "description": "Time at which to start monitor recording.",
         "default": 0.0,
         "units": "sec",
         "minimum": 0,
         "type": "number"
      },
      "stop": {
         "title": "Stop time",
         "description": "Time at which to stop monitor recording.  If not specified, record until end of simulation.",
         "units": "sec",
         "minimum": 0,
         "type": "number"
      },
      "interval": {
         "title": "Time interval",
         "description": "Number of time step intervals between monitor recordings.",
         "default": 1,
         "exclusiveMinimum": 0,
         "type": "integer"
      },
      "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"
   ],
   "additionalProperties": false
}

attribute exclude_surfaces: Tuple[Literal['x-', 'x+', 'y-', 'y+', 'z-', 'z+'], ...] = None#

Surfaces to exclude in the integration, if a volume monitor.

Validated by
  • check_excluded_surfaces

  • normal_dir_exists_for_surface

attribute normal_dir: Literal['+', '-'] = None#

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.

Validated by
  • check_excluded_surfaces

  • normal_dir_exists_for_surface

storage_size(num_cells: int, tmesh: tidy3d.components.types.Array) int#

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