tidy3d.FieldProjectionCartesianMonitor
tidy3d.FieldProjectionCartesianMonitor#
- class tidy3d.FieldProjectionCartesianMonitor#
Monitor
that samples electromagnetic near fields in the frequency domain and projects them on a Cartesian observation plane.- 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.
freqs (Union[Tuple[float, ...], Array]) – [units = Hz]. Array or list of frequencies stored by the field monitor.
apodization (ApodizationSpec = ApodizationSpec(start=None, end=None, width=None, type='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.
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.
custom_origin (Optional[Tuple[float, float, float]] = None) – [units = um]. Local origin used for defining observation points. If
None
, uses the monitor’s center.far_field_approx (bool = True) – Whether to enable the far field approximation when projecting fields.
proj_axis (Literal[0, 1, 2]) – Axis along which the observation plane is oriented.
proj_distance (float = 1000000.0) – [units = um]. Signed distance of the projection plane along
proj_axis
. from the plane containinglocal_origin
.x (Union[Tuple[float, ...], Array]) – [units = um]. Local x observation coordinates w.r.t.
local_origin
andproj_axis
. Whenproj_axis
is 0, this corresponds to the global y axis. Whenproj_axis
is 1, this corresponds to the global x axis. Whenproj_axis
is 2, this corresponds to the global x axis.y (Union[Tuple[float, ...], Array]) – [units = um]. Local y observation coordinates w.r.t.
local_origin
andproj_axis
. Whenproj_axis
is 0, this corresponds to the global z axis. Whenproj_axis
is 1, this corresponds to the global z axis. Whenproj_axis
is 2, this corresponds to the global y axis.
Example
>>> monitor = FieldProjectionCartesianMonitor( ... center=(1,2,3), ... size=(2,2,2), ... freqs=[250e12, 300e12], ... name='n2f_monitor', ... custom_origin=(1,2,3), ... x=[-1, 0, 1], ... y=[-2, -1, 0, 1, 2], ... proj_axis=2, ... proj_distance=5 ... )
Show JSON schema
{ "title": "FieldProjectionCartesianMonitor", "description": ":class:`Monitor` that samples electromagnetic near fields in the frequency domain\nand projects them on a Cartesian observation plane.\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.\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.\ncustom_origin : Optional[Tuple[float, float, float]] = None\n [units = um]. Local origin used for defining observation points. If ``None``, uses the monitor's center.\nfar_field_approx : bool = True\n Whether to enable the far field approximation when projecting fields.\nproj_axis : Literal[0, 1, 2]\n Axis along which the observation plane is oriented.\nproj_distance : float = 1000000.0\n [units = um]. Signed distance of the projection plane along ``proj_axis``. from the plane containing ``local_origin``.\nx : Union[Tuple[float, ...], Array]\n [units = um]. Local x observation coordinates w.r.t. ``local_origin`` and ``proj_axis``. When ``proj_axis`` is 0, this corresponds to the global y axis. When ``proj_axis`` is 1, this corresponds to the global x axis. When ``proj_axis`` is 2, this corresponds to the global x axis. \ny : Union[Tuple[float, ...], Array]\n [units = um]. Local y observation coordinates w.r.t. ``local_origin`` and ``proj_axis``. When ``proj_axis`` is 0, this corresponds to the global z axis. When ``proj_axis`` is 1, this corresponds to the global z axis. When ``proj_axis`` is 2, this corresponds to the global y axis. \n\nExample\n-------\n>>> monitor = FieldProjectionCartesianMonitor(\n... center=(1,2,3),\n... size=(2,2,2),\n... freqs=[250e12, 300e12],\n... name='n2f_monitor',\n... custom_origin=(1,2,3),\n... x=[-1, 0, 1],\n... y=[-2, -1, 0, 1, 2],\n... proj_axis=2,\n... proj_distance=5\n... )", "type": "object", "properties": { "type": { "title": "Type", "default": "FieldProjectionCartesianMonitor", "enum": [ "FieldProjectionCartesianMonitor" ], "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" } ] }, "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" } }, "custom_origin": { "title": "Local origin", "description": "Local origin used for defining observation points. If ``None``, uses the monitor's center.", "units": "um", "type": "array", "minItems": 3, "maxItems": 3, "items": [ { "type": "number" }, { "type": "number" }, { "type": "number" } ] }, "far_field_approx": { "title": "Far field approximation", "description": "Whether to enable the far field approximation when projecting fields.", "default": true, "type": "boolean" }, "proj_axis": { "title": "Projection plane axis", "description": "Axis along which the observation plane is oriented.", "enum": [ 0, 1, 2 ], "type": "integer" }, "proj_distance": { "title": "Projection distance", "description": "Signed distance of the projection plane along ``proj_axis``. from the plane containing ``local_origin``.", "default": 1000000.0, "units": "um", "type": "number" }, "x": { "title": "Local x observation coordinates", "description": "Local x observation coordinates w.r.t. ``local_origin`` and ``proj_axis``. When ``proj_axis`` is 0, this corresponds to the global y axis. When ``proj_axis`` is 1, this corresponds to the global x axis. When ``proj_axis`` is 2, this corresponds to the global x axis. ", "units": "um", "anyOf": [ { "type": "array", "items": { "type": "number" } }, { "title": "Array Like", "description": "Accepts sequence (tuple, list, numpy array) and converts to tuple.", "type": "tuple", "properties": {}, "required": [] } ] }, "y": { "title": "Local y observation coordinates", "description": "Local y observation coordinates w.r.t. ``local_origin`` and ``proj_axis``. When ``proj_axis`` is 0, this corresponds to the global z axis. When ``proj_axis`` is 1, this corresponds to the global z axis. When ``proj_axis`` is 2, this corresponds to the global y axis. ", "units": "um", "anyOf": [ { "type": "array", "items": { "type": "number" } }, { "title": "Array Like", "description": "Accepts sequence (tuple, list, numpy array) and converts to tuple.", "type": "tuple", "properties": {}, "required": [] } ] } }, "required": [ "size", "name", "freqs", "proj_axis", "x", "y" ], "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 } } }
- attribute proj_axis: Literal[0, 1, 2] [Required]#
Axis along which the observation plane is oriented.
- Validated by
check_excluded_surfaces
normal_dir_exists_for_surface
- attribute proj_distance: float = 1000000.0#
Signed distance of the projection plane along
proj_axis
. from the plane containinglocal_origin
.- Validated by
check_excluded_surfaces
normal_dir_exists_for_surface
- attribute x: Union[Tuple[float, ...], tidy3d.components.types.Array] [Required]#
Local x observation coordinates w.r.t.
local_origin
andproj_axis
. Whenproj_axis
is 0, this corresponds to the global y axis. Whenproj_axis
is 1, this corresponds to the global x axis. Whenproj_axis
is 2, this corresponds to the global x axis.- Validated by
check_excluded_surfaces
normal_dir_exists_for_surface
- attribute y: Union[Tuple[float, ...], tidy3d.components.types.Array] [Required]#
Local y observation coordinates w.r.t.
local_origin
andproj_axis
. Whenproj_axis
is 0, this corresponds to the global z axis. Whenproj_axis
is 1, this corresponds to the global z axis. Whenproj_axis
is 2, this corresponds to the global y axis.- 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.