tidy3d.MeshOverrideStructure
tidy3d.MeshOverrideStructure#
- class tidy3d.MeshOverrideStructure#
Defines an object that is only used in the process of generating the mesh. A
MeshOverrideStructure
is a combination of geometryGeometry
, grid size along x,y,z directions, and a boolean on whether the override will be enforced.- Parameters
geometry (Union[Box, Sphere, Cylinder, PolySlab, GeometryGroup]) – Defines geometric properties of the structure.
name (Optional[str] = None) – Optional name for the structure.
dl (Tuple[PositiveFloat, PositiveFloat, PositiveFloat]) – [units = um]. Grid size along x, y, z directions.
enforce (bool = False) – If
True
, enforce the grid size setup inside the structure even if the structure is inside a structure of smaller grid size. In the intersection region of multiple structures ofenforce=True
, grid size is decided by the last added structure ofenforce=True
.
Example
>>> from tidy3d import Box >>> box = Box(center=(0,0,1), size=(2, 2, 2)) >>> struct_override = MeshOverrideStructure(geometry=box, dl=(0.1,0.2,0.3), name='override_box')
Show JSON schema
{ "title": "MeshOverrideStructure", "description": "Defines an object that is only used in the process of generating the mesh.\nA :class:`MeshOverrideStructure` is a combination of geometry :class:`Geometry`,\ngrid size along x,y,z directions, and a boolean on whether the override\nwill be enforced.\n\nParameters\n----------\ngeometry : Union[Box, Sphere, Cylinder, PolySlab, GeometryGroup]\n Defines geometric properties of the structure.\nname : Optional[str] = None\n Optional name for the structure.\ndl : Tuple[PositiveFloat, PositiveFloat, PositiveFloat]\n [units = um]. Grid size along x, y, z directions.\nenforce : bool = False\n If ``True``, enforce the grid size setup inside the structure even if the structure is inside a structure of smaller grid size. In the intersection region of multiple structures of ``enforce=True``, grid size is decided by the last added structure of ``enforce=True``.\n\nExample\n-------\n>>> from tidy3d import Box\n>>> box = Box(center=(0,0,1), size=(2, 2, 2))\n>>> struct_override = MeshOverrideStructure(geometry=box, dl=(0.1,0.2,0.3), name='override_box')", "type": "object", "properties": { "geometry": { "title": "Geometry", "description": "Defines geometric properties of the structure.", "discriminator": { "propertyName": "type", "mapping": { "Box": "#/definitions/Box", "Sphere": "#/definitions/Sphere", "Cylinder": "#/definitions/Cylinder", "PolySlab": "#/definitions/PolySlab", "GeometryGroup": "#/definitions/GeometryGroup" } }, "oneOf": [ { "$ref": "#/definitions/Box" }, { "$ref": "#/definitions/Sphere" }, { "$ref": "#/definitions/Cylinder" }, { "$ref": "#/definitions/PolySlab" }, { "$ref": "#/definitions/GeometryGroup" } ] }, "name": { "title": "Name", "description": "Optional name for the structure.", "type": "string" }, "type": { "title": "Type", "default": "MeshOverrideStructure", "enum": [ "MeshOverrideStructure" ], "type": "string" }, "dl": { "title": "Grid Size", "description": "Grid size along x, y, z directions.", "units": "um", "type": "array", "minItems": 3, "maxItems": 3, "items": [ { "type": "number", "exclusiveMinimum": 0 }, { "type": "number", "exclusiveMinimum": 0 }, { "type": "number", "exclusiveMinimum": 0 } ] }, "enforce": { "title": "Enforce grid size", "description": "If ``True``, enforce the grid size setup inside the structure even if the structure is inside a structure of smaller grid size. In the intersection region of multiple structures of ``enforce=True``, grid size is decided by the last added structure of ``enforce=True``.", "default": false, "type": "boolean" } }, "required": [ "geometry", "dl" ], "additionalProperties": false, "definitions": { "Box": { "title": "Box", "description": "Rectangular prism.\n Also base class for :class:`Simulation`, :class:`Monitor`, and :class:`Source`.\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.\n\nExample\n-------\n>>> b = Box(center=(1,2,3), size=(2,2,2))", "type": "object", "properties": { "type": { "title": "Type", "default": "Box", "enum": [ "Box" ], "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 } ] } }, "required": [ "size" ], "additionalProperties": false }, "Sphere": { "title": "Sphere", "description": "Spherical geometry.\n\nParameters\n----------\nradius : NonNegativeFloat\n [units = um]. Radius of geometry.\ncenter : Tuple[float, float, float] = (0.0, 0.0, 0.0)\n [units = um]. Center of object in x, y, and z.\n\nExample\n-------\n>>> b = Sphere(center=(1,2,3), radius=2)", "type": "object", "properties": { "type": { "title": "Type", "default": "Sphere", "enum": [ "Sphere" ], "type": "string" }, "radius": { "title": "Radius", "description": "Radius of geometry.", "units": "um", "minimum": 0, "type": "number" }, "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" } ] } }, "required": [ "radius" ], "additionalProperties": false }, "Cylinder": { "title": "Cylinder", "description": "Cylindrical geometry with optional sidewall angle along axis\ndirection. When ``sidewall_angle`` is nonzero, the shape is a\nconical frustum or a cone.\n\nParameters\n----------\naxis : Literal[0, 1, 2] = 2\n Specifies dimension of the planar axis (0,1,2) -> (x,y,z).\nsidewall_angle : ConstrainedFloatValue = 0.0\n [units = rad]. Angle of the sidewall. ``sidewall_angle=0`` (default) specifies a vertical wall; ``0<sidewall_angle<np.pi/2`` specifies a shrinking cross section along the ``axis`` direction; and ``-np.pi/2<sidewall_angle<0`` specifies an expanding cross section along the ``axis`` direction.\nreference_plane : Literal['bottom', 'middle', 'top'] = bottom\n The position of the plane where the supplied cross section are defined. The plane is perpendicular to the ``axis``. The plane is located at the ``bottom``, ``middle``, or ``top`` of the geometry with respect to the axis. E.g. if ``axis=1``, ``bottom`` refers to the negative side of the y-axis, and ``top`` refers to the positive side of the y-axis.\nradius : NonNegativeFloat\n [units = um]. Radius of geometry.\ncenter : Tuple[float, float, float] = (0.0, 0.0, 0.0)\n [units = um]. Center of object in x, y, and z.\nlength : NonNegativeFloat\n [units = um]. Defines thickness of cylinder along axis dimension.\n\nExample\n-------\n>>> c = Cylinder(center=(1,2,3), radius=2, length=5, axis=2)", "type": "object", "properties": { "type": { "title": "Type", "default": "Cylinder", "enum": [ "Cylinder" ], "type": "string" }, "axis": { "title": "Axis", "description": "Specifies dimension of the planar axis (0,1,2) -> (x,y,z).", "default": 2, "enum": [ 0, 1, 2 ], "type": "integer" }, "sidewall_angle": { "title": "Sidewall angle", "description": "Angle of the sidewall. ``sidewall_angle=0`` (default) specifies a vertical wall; ``0<sidewall_angle<np.pi/2`` specifies a shrinking cross section along the ``axis`` direction; and ``-np.pi/2<sidewall_angle<0`` specifies an expanding cross section along the ``axis`` direction.", "default": 0.0, "exclusiveMinimum": -1.5707963267948966, "exclusiveMaximum": 1.5707963267948966, "units": "rad", "type": "number" }, "reference_plane": { "title": "Reference plane for cross section", "description": "The position of the plane where the supplied cross section are defined. The plane is perpendicular to the ``axis``. The plane is located at the ``bottom``, ``middle``, or ``top`` of the geometry with respect to the axis. E.g. if ``axis=1``, ``bottom`` refers to the negative side of the y-axis, and ``top`` refers to the positive side of the y-axis.", "default": "bottom", "enum": [ "bottom", "middle", "top" ], "type": "string" }, "radius": { "title": "Radius", "description": "Radius of geometry.", "units": "um", "minimum": 0, "type": "number" }, "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" } ] }, "length": { "title": "Length", "description": "Defines thickness of cylinder along axis dimension.", "units": "um", "minimum": 0, "type": "number" } }, "required": [ "radius", "length" ], "additionalProperties": false }, "PolySlab": { "title": "PolySlab", "description": "Polygon extruded with optional sidewall angle along axis direction.\n\nParameters\n----------\naxis : Literal[0, 1, 2] = 2\n Specifies dimension of the planar axis (0,1,2) -> (x,y,z).\nsidewall_angle : ConstrainedFloatValue = 0.0\n [units = rad]. Angle of the sidewall. ``sidewall_angle=0`` (default) specifies a vertical wall; ``0<sidewall_angle<np.pi/2`` specifies a shrinking cross section along the ``axis`` direction; and ``-np.pi/2<sidewall_angle<0`` specifies an expanding cross section along the ``axis`` direction.\nreference_plane : Literal['bottom', 'middle', 'top'] = bottom\n The position of the plane where the supplied cross section are defined. The plane is perpendicular to the ``axis``. The plane is located at the ``bottom``, ``middle``, or ``top`` of the geometry with respect to the axis. E.g. if ``axis=1``, ``bottom`` refers to the negative side of the y-axis, and ``top`` refers to the positive side of the y-axis.\nslab_bounds : Tuple[float, float]\n [units = um]. Minimum and maximum positions of the slab along axis dimension.\ndilation : float = 0.0\n [units = um]. Dilation of the supplied polygon by shifting each edge along its normal outwards direction by a distance; a negative value corresponds to erosion.\nvertices : Union[Tuple[Tuple[float, float], ...], Array]\n [units = um]. List of (d1, d2) defining the 2 dimensional positions of the polygon face vertices at the ``reference_plane``. The index of dimension should be in the ascending order: e.g. if the slab normal axis is ``axis=y``, the coordinate of the vertices will be in (x, z)\n\nExample\n-------\n>>> vertices = np.array([(0,0), (1,0), (1,1)])\n>>> p = PolySlab(vertices=vertices, axis=2, slab_bounds=(-1, 1))", "type": "object", "properties": { "type": { "title": "Type", "default": "PolySlab", "enum": [ "PolySlab" ], "type": "string" }, "axis": { "title": "Axis", "description": "Specifies dimension of the planar axis (0,1,2) -> (x,y,z).", "default": 2, "enum": [ 0, 1, 2 ], "type": "integer" }, "sidewall_angle": { "title": "Sidewall angle", "description": "Angle of the sidewall. ``sidewall_angle=0`` (default) specifies a vertical wall; ``0<sidewall_angle<np.pi/2`` specifies a shrinking cross section along the ``axis`` direction; and ``-np.pi/2<sidewall_angle<0`` specifies an expanding cross section along the ``axis`` direction.", "default": 0.0, "exclusiveMinimum": -1.5707963267948966, "exclusiveMaximum": 1.5707963267948966, "units": "rad", "type": "number" }, "reference_plane": { "title": "Reference plane for cross section", "description": "The position of the plane where the supplied cross section are defined. The plane is perpendicular to the ``axis``. The plane is located at the ``bottom``, ``middle``, or ``top`` of the geometry with respect to the axis. E.g. if ``axis=1``, ``bottom`` refers to the negative side of the y-axis, and ``top`` refers to the positive side of the y-axis.", "default": "bottom", "enum": [ "bottom", "middle", "top" ], "type": "string" }, "slab_bounds": { "title": "Slab Bounds", "description": "Minimum and maximum positions of the slab along axis dimension.", "units": "um", "type": "array", "minItems": 2, "maxItems": 2, "items": [ { "type": "number" }, { "type": "number" } ] }, "dilation": { "title": "Dilation", "description": "Dilation of the supplied polygon by shifting each edge along its normal outwards direction by a distance; a negative value corresponds to erosion.", "default": 0.0, "units": "um", "type": "number" }, "vertices": { "title": "Vertices", "description": "List of (d1, d2) defining the 2 dimensional positions of the polygon face vertices at the ``reference_plane``. The index of dimension should be in the ascending order: e.g. if the slab normal axis is ``axis=y``, the coordinate of the vertices will be in (x, z)", "units": "um", "anyOf": [ { "type": "array", "items": { "type": "array", "minItems": 2, "maxItems": 2, "items": [ { "type": "number" }, { "type": "number" } ] } }, { "title": "Array Like", "description": "Accepts sequence (tuple, list, numpy array) and converts to tuple.", "type": "tuple", "properties": {}, "required": [] } ] } }, "required": [ "slab_bounds", "vertices" ], "additionalProperties": false }, "GeometryGroup": { "title": "GeometryGroup", "description": "A collection of Geometry objects that can be called as a single geometry object.\n\nParameters\n----------\ngeometries : Tuple[typing_extensions.Annotated[Union[tidy3d.components.geometry.Box, tidy3d.components.geometry.Sphere, tidy3d.components.geometry.Cylinder, tidy3d.components.geometry.PolySlab], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})], ...]\n Tuple of geometries in a single grouping. Can provide significant performance enhancement in ``Structure`` when all geometries are assigned the same medium.", "type": "object", "properties": { "type": { "title": "Type", "default": "GeometryGroup", "enum": [ "GeometryGroup" ], "type": "string" }, "geometries": { "title": "Geometries", "description": "Tuple of geometries in a single grouping. Can provide significant performance enhancement in ``Structure`` when all geometries are assigned the same medium.", "type": "array", "items": { "discriminator": { "propertyName": "type", "mapping": { "Box": "#/definitions/Box", "Sphere": "#/definitions/Sphere", "Cylinder": "#/definitions/Cylinder", "PolySlab": "#/definitions/PolySlab" } }, "oneOf": [ { "$ref": "#/definitions/Box" }, { "$ref": "#/definitions/Sphere" }, { "$ref": "#/definitions/Cylinder" }, { "$ref": "#/definitions/PolySlab" } ] } } }, "required": [ "geometries" ], "additionalProperties": false } } }
- attribute dl: Tuple[Optional[pydantic.types.PositiveFloat], Optional[pydantic.types.PositiveFloat], Optional[pydantic.types.PositiveFloat]] [Required]#
Grid size along x, y, z directions.
- attribute enforce: bool = False#
If
True
, enforce the grid size setup inside the structure even if the structure is inside a structure of smaller grid size. In the intersection region of multiple structures ofenforce=True
, grid size is decided by the last added structure ofenforce=True
.