tidy3d.PermittivityData#

class tidy3d.PermittivityData#

Data for a PermittivityMonitor: diagonal components of the permittivity tensor.

Parameters
  • monitor (PermittivityMonitor) – symmetry : Tuple[Literal[0, -1, 1], Literal[0, -1, 1], Literal[0, -1, 1]] = (0, 0, 0) Symmetry eigenvalues of the original simulation in x, y, and z.

  • symmetry_center (Optional[Tuple[float, float, float]] = None) – Center of the symmetry planes of the original simulation in x, y, and z. Required only if any of the symmetry field are non-zero.

  • grid_expanded (Optional[Grid] = None) – Grid on which the symmetry will be expanded. Required only if any of the symmetry field are non-zero.

  • eps_xx (ScalarFieldDataArray) – Spatial distribution of the x-component of the electric field.

  • eps_yy (ScalarFieldDataArray) – Spatial distribution of the y-component of the electric field.

  • eps_zz (ScalarFieldDataArray) – Spatial distribution of the z-component of the electric field.

Example

>>> from tidy3d import ScalarFieldDataArray
>>> x = [-1,1]
>>> y = [-2,0,2]
>>> z = [-3,-1,1,3]
>>> f = [2e14, 3e14]
>>> coords = dict(x=x, y=y, z=z, f=f)
>>> sclr_fld = ScalarFieldDataArray((1+1j) * np.random.random((2,3,4,2)), coords=coords)
>>> monitor = PermittivityMonitor(size=(2,4,6), freqs=[2e14, 3e14], name='eps')
>>> data = PermittivityData(monitor=monitor, eps_xx=sclr_fld, eps_yy=sclr_fld, eps_zz=sclr_fld)

Show JSON schema
{
   "title": "PermittivityData",
   "description": "Data for a :class:`.PermittivityMonitor`: diagonal components of the permittivity tensor.\n\nParameters\n----------\nmonitor : PermittivityMonitor\n        symmetry : Tuple[Literal[0, -1, 1], Literal[0, -1, 1], Literal[0, -1, 1]] = (0, 0, 0)\n    Symmetry eigenvalues of the original simulation in x, y, and z.\nsymmetry_center : Optional[Tuple[float, float, float]] = None\n    Center of the symmetry planes of the original simulation in x, y, and z. Required only if any of the ``symmetry`` field are non-zero.\ngrid_expanded : Optional[Grid] = None\n    :class:`.Grid` on which the symmetry will be expanded. Required only if any of the ``symmetry`` field are non-zero.\neps_xx : ScalarFieldDataArray\n    Spatial distribution of the x-component of the electric field.\neps_yy : ScalarFieldDataArray\n    Spatial distribution of the y-component of the electric field.\neps_zz : ScalarFieldDataArray\n    Spatial distribution of the z-component of the electric field.\n\nExample\n-------\n>>> from tidy3d import ScalarFieldDataArray\n>>> x = [-1,1]\n>>> y = [-2,0,2]\n>>> z = [-3,-1,1,3]\n>>> f = [2e14, 3e14]\n>>> coords = dict(x=x, y=y, z=z, f=f)\n>>> sclr_fld = ScalarFieldDataArray((1+1j) * np.random.random((2,3,4,2)), coords=coords)\n>>> monitor = PermittivityMonitor(size=(2,4,6), freqs=[2e14, 3e14], name='eps')\n>>> data = PermittivityData(monitor=monitor, eps_xx=sclr_fld, eps_yy=sclr_fld, eps_zz=sclr_fld)",
   "type": "object",
   "properties": {
      "type": {
         "title": "Type",
         "default": "PermittivityData",
         "enum": [
            "PermittivityData"
         ],
         "type": "string"
      },
      "monitor": {
         "$ref": "#/definitions/PermittivityMonitor"
      },
      "symmetry": {
         "title": "Symmetry",
         "description": "Symmetry eigenvalues of the original simulation in x, y, and z.",
         "default": [
            0,
            0,
            0
         ],
         "type": "array",
         "minItems": 3,
         "maxItems": 3,
         "items": [
            {
               "enum": [
                  0,
                  -1,
                  1
               ],
               "type": "integer"
            },
            {
               "enum": [
                  0,
                  -1,
                  1
               ],
               "type": "integer"
            },
            {
               "enum": [
                  0,
                  -1,
                  1
               ],
               "type": "integer"
            }
         ]
      },
      "symmetry_center": {
         "title": "Symmetry Center",
         "description": "Center of the symmetry planes of the original simulation in x, y, and z. Required only if any of the ``symmetry`` field are non-zero.",
         "type": "array",
         "minItems": 3,
         "maxItems": 3,
         "items": [
            {
               "type": "number"
            },
            {
               "type": "number"
            },
            {
               "type": "number"
            }
         ]
      },
      "grid_expanded": {
         "title": "Expanded Grid",
         "description": ":class:`.Grid` on which the symmetry will be expanded. Required only if any of the ``symmetry`` field are non-zero.",
         "allOf": [
            {
               "$ref": "#/definitions/Grid"
            }
         ]
      },
      "eps_xx": {
         "title": "DataArray",
         "description": "Spatial distribution of the x-component of the electric field.",
         "type": "xr.DataArray",
         "properties": {
            "_dims": {
               "title": "_dims",
               "type": "Tuple[str, ...]"
            }
         },
         "required": [
            "_dims"
         ]
      },
      "eps_yy": {
         "title": "DataArray",
         "description": "Spatial distribution of the y-component of the electric field.",
         "type": "xr.DataArray",
         "properties": {
            "_dims": {
               "title": "_dims",
               "type": "Tuple[str, ...]"
            }
         },
         "required": [
            "_dims"
         ]
      },
      "eps_zz": {
         "title": "DataArray",
         "description": "Spatial distribution of the z-component of the electric field.",
         "type": "xr.DataArray",
         "properties": {
            "_dims": {
               "title": "_dims",
               "type": "Tuple[str, ...]"
            }
         },
         "required": [
            "_dims"
         ]
      }
   },
   "required": [
      "monitor",
      "eps_xx",
      "eps_yy",
      "eps_zz"
   ],
   "additionalProperties": false,
   "definitions": {
      "ApodizationSpec": {
         "title": "ApodizationSpec",
         "description": "Stores specifications for the apodizaton of frequency-domain monitors.\n\nParameters\n----------\nstart : Optional[NonNegativeFloat] = None\n    [units = sec].  Defines the time at which the start apodization ends.\nend : Optional[NonNegativeFloat] = None\n    [units = sec].  Defines the time at which the end apodization begins.\nwidth : Optional[PositiveFloat] = None\n    [units = sec].  Characteristic decay length of the apodization function.\n\nExample\n-------\n>>> apod_spec = ApodizationSpec(start=1, end=2, width=0.5)",
         "type": "object",
         "properties": {
            "start": {
               "title": "Start Interval",
               "description": "Defines the time at which the start apodization ends.",
               "units": "sec",
               "minimum": 0,
               "type": "number"
            },
            "end": {
               "title": "End Interval",
               "description": "Defines the time at which the end apodization begins.",
               "units": "sec",
               "minimum": 0,
               "type": "number"
            },
            "width": {
               "title": "Apodization Width",
               "description": "Characteristic decay length of the apodization function.",
               "units": "sec",
               "exclusiveMinimum": 0,
               "type": "number"
            },
            "type": {
               "title": "Type",
               "default": "ApodizationSpec",
               "enum": [
                  "ApodizationSpec"
               ],
               "type": "string"
            }
         },
         "additionalProperties": false
      },
      "PermittivityMonitor": {
         "title": "PermittivityMonitor",
         "description": ":class:`Monitor` that records the diagonal components of the complex-valued relative\npermittivity tensor in the frequency domain. The recorded data has the same shape as a\n:class:`.FieldMonitor` of the same geometry: the permittivity values are saved at the\nYee grid locations, and can be interpolated to any point inside the monitor.\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.\napodization : ApodizationSpec = ApodizationSpec(start=None, end=None, width=None, type='ApodizationSpec')\n    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.\n\nExample\n-------\n>>> monitor = PermittivityMonitor(\n...     center=(1,2,3),\n...     size=(2,2,2),\n...     freqs=[250e12, 300e12],\n...     name='eps_monitor')",
         "type": "object",
         "properties": {
            "type": {
               "title": "Type",
               "default": "PermittivityMonitor",
               "enum": [
                  "PermittivityMonitor"
               ],
               "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": []
                  }
               ]
            },
            "apodization": {
               "title": "Apodization Specification",
               "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.",
               "default": {
                  "start": null,
                  "end": null,
                  "width": null,
                  "type": "ApodizationSpec"
               },
               "allOf": [
                  {
                     "$ref": "#/definitions/ApodizationSpec"
                  }
               ]
            }
         },
         "required": [
            "size",
            "name",
            "freqs"
         ],
         "additionalProperties": false
      },
      "Coords": {
         "title": "Coords",
         "description": "Holds data about a set of x,y,z positions on a grid.\n\nParameters\n----------\nx : Array\n    1-dimensional array of x coordinates.\ny : Array\n    1-dimensional array of y coordinates.\nz : Array\n    1-dimensional array of z coordinates.\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 10)\n>>> y = np.linspace(-1, 1, 11)\n>>> z = np.linspace(-1, 1, 12)\n>>> coords = Coords(x=x, y=y, z=z)",
         "type": "object",
         "properties": {
            "x": {
               "title": "Array Like",
               "description": "Accepts sequence (tuple, list, numpy array) and converts to tuple.",
               "type": "tuple",
               "properties": {},
               "required": []
            },
            "y": {
               "title": "Array Like",
               "description": "Accepts sequence (tuple, list, numpy array) and converts to tuple.",
               "type": "tuple",
               "properties": {},
               "required": []
            },
            "z": {
               "title": "Array Like",
               "description": "Accepts sequence (tuple, list, numpy array) and converts to tuple.",
               "type": "tuple",
               "properties": {},
               "required": []
            },
            "type": {
               "title": "Type",
               "default": "Coords",
               "enum": [
                  "Coords"
               ],
               "type": "string"
            }
         },
         "required": [
            "x",
            "y",
            "z"
         ],
         "additionalProperties": false
      },
      "Grid": {
         "title": "Grid",
         "description": "Contains all information about the spatial positions of the FDTD grid.\n\nParameters\n----------\nboundaries : Coords\n    x,y,z coordinates of the boundaries between cells, defining the FDTD grid.\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 10)\n>>> y = np.linspace(-1, 1, 11)\n>>> z = np.linspace(-1, 1, 12)\n>>> coords = Coords(x=x, y=y, z=z)\n>>> grid = Grid(boundaries=coords)\n>>> centers = grid.centers\n>>> sizes = grid.sizes\n>>> yee_grid = grid.yee",
         "type": "object",
         "properties": {
            "boundaries": {
               "title": "Boundary Coordinates",
               "description": "x,y,z coordinates of the boundaries between cells, defining the FDTD grid.",
               "allOf": [
                  {
                     "$ref": "#/definitions/Coords"
                  }
               ]
            },
            "type": {
               "title": "Type",
               "default": "Grid",
               "enum": [
                  "Grid"
               ],
               "type": "string"
            }
         },
         "required": [
            "boundaries"
         ],
         "additionalProperties": false
      }
   }
}

attribute monitor: tidy3d.components.monitor.PermittivityMonitor [Required]#