tidy3d.ModeSpec
tidy3d.ModeSpec#
- class tidy3d.ModeSpec#
Stores specifications for the mode solver to find an electromagntic mode. Note, the planar axes are found by popping the injection axis from {x,y,z}. For example, if injection axis is y, the planar axes are ordered {x,z}.
- Parameters
num_modes (PositiveInt = 1) – Number of modes returned by mode solver.
target_neff (Optional[PositiveFloat] = None) – Guess for effective index of the mode.
num_pml (Tuple[NonNegativeInt, NonNegativeInt] = (0, 0)) – Number of standard pml layers to add in the two tangential axes.
sort_by (Literal['largest_neff', 'te_fraction', 'tm_fraction'] = largest_neff) – The solver will always compute the
num_modes
modes closest to thetarget_neff
, but they can be reordered by the largestte_fraction
, defined as the integral of the intensity of the E-field component parallel to the first plane axis normalized to the total in-plane E-field intensity. Similarly,tm_fraction
uses the E field component parallel to the second plane axis.angle_theta (float = 0.0) – [units = rad]. Polar angle of the propagation axis from the injection axis.
angle_phi (float = 0.0) – [units = rad]. Azimuth angle of the propagation axis in the plane orthogonal to the injection axis.
bend_radius (Optional[float] = None) – [units = um]. A curvature radius for simulation of waveguide bends. Can be negative, in which case the mode plane center has a smaller value than the curvature center along the tangential axis perpendicular to the bend axis.
bend_axis (Optional[Literal[0, 1]] = None) – Index into the two tangential axes defining the normal to the plane in which the bend lies. This must be provided if
bend_radius
is notNone
. For example, for a ring in the global xy-plane, and a mode plane in either the xz or the yz plane, thebend_axis
is always 1 (the global z axis).
Example
>>> mode_spec = ModeSpec(num_modes=3, target_neff=1.5)
Show JSON schema
{ "title": "ModeSpec", "description": "Stores specifications for the mode solver to find an electromagntic mode.\nNote, the planar axes are found by popping the injection axis from {x,y,z}.\nFor example, if injection axis is y, the planar axes are ordered {x,z}.\n\nParameters\n----------\nnum_modes : PositiveInt = 1\n Number of modes returned by mode solver.\ntarget_neff : Optional[PositiveFloat] = None\n Guess for effective index of the mode.\nnum_pml : Tuple[NonNegativeInt, NonNegativeInt] = (0, 0)\n Number of standard pml layers to add in the two tangential axes.\nsort_by : Literal['largest_neff', 'te_fraction', 'tm_fraction'] = largest_neff\n The solver will always compute the ``num_modes`` modes closest to the ``target_neff``, but they can be reordered by the largest ``te_fraction``, defined as the integral of the intensity of the E-field component parallel to the first plane axis normalized to the total in-plane E-field intensity. Similarly, ``tm_fraction`` uses the E field component parallel to the second plane axis.\nangle_theta : float = 0.0\n [units = rad]. Polar angle of the propagation axis from the injection axis.\nangle_phi : float = 0.0\n [units = rad]. Azimuth angle of the propagation axis in the plane orthogonal to the injection axis.\nbend_radius : Optional[float] = None\n [units = um]. A curvature radius for simulation of waveguide bends. Can be negative, in which case the mode plane center has a smaller value than the curvature center along the tangential axis perpendicular to the bend axis.\nbend_axis : Optional[Literal[0, 1]] = None\n Index into the two tangential axes defining the normal to the plane in which the bend lies. This must be provided if ``bend_radius`` is not ``None``. For example, for a ring in the global xy-plane, and a mode plane in either the xz or the yz plane, the ``bend_axis`` is always 1 (the global z axis).\n\nExample\n-------\n>>> mode_spec = ModeSpec(num_modes=3, target_neff=1.5)", "type": "object", "properties": { "num_modes": { "title": "Number of modes", "description": "Number of modes returned by mode solver.", "default": 1, "exclusiveMinimum": 0, "type": "integer" }, "target_neff": { "title": "Target effective index", "description": "Guess for effective index of the mode.", "exclusiveMinimum": 0, "type": "number" }, "num_pml": { "title": "Number of PML layers", "description": "Number of standard pml layers to add in the two tangential axes.", "default": [ 0, 0 ], "type": "array", "minItems": 2, "maxItems": 2, "items": [ { "type": "integer", "minimum": 0 }, { "type": "integer", "minimum": 0 } ] }, "sort_by": { "title": "Ordering of the returned modes", "description": "The solver will always compute the ``num_modes`` modes closest to the ``target_neff``, but they can be reordered by the largest ``te_fraction``, defined as the integral of the intensity of the E-field component parallel to the first plane axis normalized to the total in-plane E-field intensity. Similarly, ``tm_fraction`` uses the E field component parallel to the second plane axis.", "default": "largest_neff", "enum": [ "largest_neff", "te_fraction", "tm_fraction" ], "type": "string" }, "angle_theta": { "title": "Polar Angle", "description": "Polar angle of the propagation axis from the injection axis.", "default": 0.0, "units": "rad", "type": "number" }, "angle_phi": { "title": "Azimuth Angle", "description": "Azimuth angle of the propagation axis in the plane orthogonal to the injection axis.", "default": 0.0, "units": "rad", "type": "number" }, "bend_radius": { "title": "Bend radius", "description": "A curvature radius for simulation of waveguide bends. Can be negative, in which case the mode plane center has a smaller value than the curvature center along the tangential axis perpendicular to the bend axis.", "units": "um", "type": "number" }, "bend_axis": { "title": "Bend axis", "description": "Index into the two tangential axes defining the normal to the plane in which the bend lies. This must be provided if ``bend_radius`` is not ``None``. For example, for a ring in the global xy-plane, and a mode plane in either the xz or the yz plane, the ``bend_axis`` is always 1 (the global z axis).", "enum": [ 0, 1 ], "type": "integer" }, "type": { "title": "Type", "default": "ModeSpec", "enum": [ "ModeSpec" ], "type": "string" } }, "additionalProperties": false }
- Fields
angle_phi (float)
angle_theta (float)
bend_axis (Literal[0, 1])
bend_radius (float)
num_modes (pydantic.types.PositiveInt)
num_pml (Tuple[pydantic.types.NonNegativeInt, pydantic.types.NonNegativeInt])
sort_by (Literal['largest_neff', 'te_fraction', 'tm_fraction'])
target_neff (pydantic.types.PositiveFloat)
- attribute angle_phi: float = 0.0#
Azimuth angle of the propagation axis in the plane orthogonal to the injection axis.
- attribute angle_theta: float = 0.0#
Polar angle of the propagation axis from the injection axis.
- Validated by
glancing_incidence
- attribute bend_axis: Literal[0, 1] = None#
Index into the two tangential axes defining the normal to the plane in which the bend lies. This must be provided if
bend_radius
is notNone
. For example, for a ring in the global xy-plane, and a mode plane in either the xz or the yz plane, thebend_axis
is always 1 (the global z axis).- Validated by
bend_axis_given
- attribute bend_radius: float = None#
A curvature radius for simulation of waveguide bends. Can be negative, in which case the mode plane center has a smaller value than the curvature center along the tangential axis perpendicular to the bend axis.
- attribute num_modes: pydantic.types.PositiveInt = 1#
Number of modes returned by mode solver.
- Constraints
exclusiveMinimum = 0
- attribute num_pml: Tuple[pydantic.types.NonNegativeInt, pydantic.types.NonNegativeInt] = (0, 0)#
Number of standard pml layers to add in the two tangential axes.
- attribute sort_by: Literal['largest_neff', 'te_fraction', 'tm_fraction'] = 'largest_neff'#
The solver will always compute the
num_modes
modes closest to thetarget_neff
, but they can be reordered by the largestte_fraction
, defined as the integral of the intensity of the E-field component parallel to the first plane axis normalized to the total in-plane E-field intensity. Similarly,tm_fraction
uses the E field component parallel to the second plane axis.
- attribute target_neff: pydantic.types.PositiveFloat = None#
Guess for effective index of the mode.
- Constraints
exclusiveMinimum = 0