diff --git a/CHANGELOG.md b/CHANGELOG.md index fe559b4b2..b97dfa1dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [2.8.0rc2] - 2025-01-28 + ### Added - `VisualizationSpec` that allows `Medium` instances to specify color and transparency plotting attributes that override default ones. - `reduce_simulation` argument added to all web functions to allow automatically reducing structures only to the simulation domain, including truncating data in custom media, thus reducing the simulation upload size. Currently only implemented for mode solver simulation types. @@ -1499,9 +1501,9 @@ which fields are to be projected is now determined automatically based on the me - Job and Batch classes for better simulation handling (eventually to fully replace webapi functions). - A large number of small improvements and bug fixes. -[Unreleased]: https://github.com/flexcompute/tidy3d/compare/v2.8.0rc1...pre/2.8 +[Unreleased]: https://github.com/flexcompute/tidy3d/compare/v2.8.0rc2...pre/2.8 +[2.8.0rc2]: https://github.com/flexcompute/tidy3d/compare/v2.8.0rc1...v2.8.0rc2 [2.8.0rc1]: https://github.com/flexcompute/tidy3d/compare/v2.7.8...v2.8.0rc1 -[Unreleased]: https://github.com/flexcompute/tidy3d/compare/v2.7.9...develop [2.7.9]: https://github.com/flexcompute/tidy3d/compare/v2.7.8...v2.7.9 [2.7.8]: https://github.com/flexcompute/tidy3d/compare/v2.7.7...v2.7.8 [2.7.7]: https://github.com/flexcompute/tidy3d/compare/v2.7.6...v2.7.7 diff --git a/docs/notebooks b/docs/notebooks index 592c68ff9..3164ee6ed 160000 --- a/docs/notebooks +++ b/docs/notebooks @@ -1 +1 @@ -Subproject commit 592c68ff919ce7072c0fd134a5aa3d66a15b821d +Subproject commit 3164ee6ed4d53d092d05d38ddc9b480188931dba diff --git a/tests/sims/simulation_sample.h5 b/tests/sims/simulation_sample.h5 index 744eeedfe..f8be21e0c 100644 Binary files a/tests/sims/simulation_sample.h5 and b/tests/sims/simulation_sample.h5 differ diff --git a/tests/sims/simulation_sample.json b/tests/sims/simulation_sample.json index 21594e3ce..add8c3bd1 100644 --- a/tests/sims/simulation_sample.json +++ b/tests/sims/simulation_sample.json @@ -3103,7 +3103,7 @@ "snapping_points": [], "type": "GridSpec" }, - "version": "2.8.0rc1", + "version": "2.8.0rc2", "plot_length_units": "\u03bcm", "lumped_elements": [ { diff --git a/tidy3d/schema.json b/tidy3d/schema.json index d885b8bbe..805c57441 100644 --- a/tidy3d/schema.json +++ b/tidy3d/schema.json @@ -1,6 +1,6 @@ { "title": "Simulation", - "description": "Custom implementation of Maxwell\u2019s equations which represents the physical model to be solved using the FDTD\nmethod.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\ncenter : Union[tuple[Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box]], Box] = (0.0, 0.0, 0.0)\n [units = um]. Center of object in x, y, and z.\nsize : Union[tuple[Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box]], Box]\n [units = um]. Size in x, y, and z directions.\nmedium : Union[Medium, AnisotropicMedium, PECMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, FullyAnisotropicMedium, CustomMedium, CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomAnisotropicMedium, PerturbationMedium, PerturbationPoleResidue, LossyMetalMedium] = Medium(attrs={}, name=None, frequency_range=None, allow_gain=False, nonlinear_spec=None, modulation_spec=None, viz_spec=None, heat_spec=None, type='Medium', permittivity=1.0, conductivity=0.0)\n Background medium of simulation, defaults to vacuum if not specified.\nstructures : Tuple[Structure, ...] = ()\n Tuple of structures present in simulation. Note: Structures defined later in this list override the simulation material properties in regions of spatial overlap.\nsymmetry : Tuple[Literal[0, -1, 1], Literal[0, -1, 1], Literal[0, -1, 1]] = (0, 0, 0)\n Tuple of integers defining reflection symmetry across a plane bisecting the simulation domain normal to the x-, y-, and z-axis at the simulation center of each axis, respectively. Each element can be ``0`` (no symmetry), ``1`` (even, i.e. 'PMC' symmetry) or ``-1`` (odd, i.e. 'PEC' symmetry). Note that the vectorial nature of the fields must be taken into account to correctly determine the symmetry value.\nsources : Tuple[Annotated[Union[tidy3d.components.source.current.UniformCurrentSource, tidy3d.components.source.current.PointDipole, tidy3d.components.source.field.GaussianBeam, tidy3d.components.source.field.AstigmaticGaussianBeam, tidy3d.components.source.field.ModeSource, tidy3d.components.source.field.PlaneWave, tidy3d.components.source.field.CustomFieldSource, tidy3d.components.source.current.CustomCurrentSource, tidy3d.components.source.field.TFSF], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})], ...] = ()\n Tuple of electric current sources injecting fields into the simulation.\nboundary_spec : BoundarySpec = BoundarySpec(attrs={}, x=Boundary(attrs={},, plus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, minus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, type='Boundary'), y=Boundary(attrs={},, plus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, minus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, type='Boundary'), z=Boundary(attrs={},, plus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, minus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, type='Boundary'), type='BoundarySpec')\n Specification of boundary conditions along each dimension. If ``None``, PML boundary conditions are applied on all sides.\nmonitors : Tuple[Annotated[Union[tidy3d.components.monitor.FieldMonitor, tidy3d.components.monitor.FieldTimeMonitor, tidy3d.components.monitor.PermittivityMonitor, tidy3d.components.monitor.FluxMonitor, tidy3d.components.monitor.FluxTimeMonitor, tidy3d.components.monitor.ModeMonitor, tidy3d.components.monitor.ModeSolverMonitor, tidy3d.components.monitor.FieldProjectionAngleMonitor, tidy3d.components.monitor.FieldProjectionCartesianMonitor, tidy3d.components.monitor.FieldProjectionKSpaceMonitor, tidy3d.components.monitor.DiffractionMonitor, tidy3d.components.monitor.DirectivityMonitor], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})], ...] = ()\n Tuple of monitors in the simulation. Note: monitor names are used to access data after simulation is run.\ngrid_spec : GridSpec = GridSpec(attrs={}, grid_x=AutoGrid(attrs={},, type='AutoGrid',, max_scale=1.4,, mesher=GradedMesher(attrs={},, type='GradedMesher'),, dl_min=None,, min_steps_per_wvl=10.0,, min_steps_per_sim_size=10.0), grid_y=AutoGrid(attrs={},, type='AutoGrid',, max_scale=1.4,, mesher=GradedMesher(attrs={},, type='GradedMesher'),, dl_min=None,, min_steps_per_wvl=10.0,, min_steps_per_sim_size=10.0), grid_z=AutoGrid(attrs={},, type='AutoGrid',, max_scale=1.4,, mesher=GradedMesher(attrs={},, type='GradedMesher'),, dl_min=None,, min_steps_per_wvl=10.0,, min_steps_per_sim_size=10.0), wavelength=None, override_structures=(), snapping_points=(), type='GridSpec')\n Specifications for the simulation grid along each of the three directions.\nversion : str = 2.8.0rc1\n String specifying the front end version number.\nplot_length_units : Optional[Literal['nm', '\u03bcm', 'um', 'mm', 'cm', 'm']] = \u03bcm\n When set to a supported ``LengthUnit``, plots will be produced with proper scaling of axes and include the desired unit specifier in labels.\nlumped_elements : Tuple[Annotated[Union[tidy3d.components.lumped_element.LumpedResistor, tidy3d.components.lumped_element.CoaxialLumpedResistor, tidy3d.components.lumped_element.LinearLumpedElement], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})], ...] = ()\n Tuple of lumped elements in the simulation. Note: only :class:`tidy3d.LumpedResistor` is supported currently.\nsubpixel : Union[bool, SubpixelSpec] = SubpixelSpec(attrs={}, dielectric=PolarizedAveraging(attrs={},, type='PolarizedAveraging'), metal=Staircasing(attrs={},, type='Staircasing'), pec=PECConformal(attrs={},, type='PECConformal',, timestep_reduction=0.3), lossy_metal=SurfaceImpedance(attrs={},, type='SurfaceImpedance',, timestep_reduction=0.0), type='SubpixelSpec')\n Apply subpixel averaging methods of the permittivity on structure interfaces to result in much higher accuracy for a given grid size. Supply a :class:`SubpixelSpec` to this field to select subpixel averaging methods separately on dielectric, metal, and PEC material interfaces. Alternatively, user may supply a boolean value: ``True`` to apply the default subpixel averaging methods corresponding to ``SubpixelSpec()`` , or ``False`` to apply staircasing.\nsimulation_type : Optional[Literal['autograd_fwd', 'autograd_bwd', 'tidy3d', None]] = tidy3d\n Tag used internally to distinguish types of simulations for ``autograd`` gradient processing.\npost_norm : Union[float, FreqDataArray] = 1.0\n Factor to multiply the fields by after running, given the adjoint source pipeline used. Note: this is used internally only.\ncourant : ConstrainedFloatValue = 0.99\n Normalized Courant stability factor that is no larger than 1 when CFL stability condition is met. It controls time step to spatial step ratio. Lower values lead to more stable simulations for dispersive materials, but result in longer simulation times.\nnormalize_index : Optional[NonNegativeInt] = 0\n Index of the source in the tuple of sources whose spectrum will be used to normalize the frequency-dependent data. If ``None``, the raw field data is returned unnormalized.\nshutoff : NonNegativeFloat = 1e-05\n Ratio of the instantaneous integrated E-field intensity to the maximum value at which the simulation will automatically terminate time stepping. Used to prevent extraneous run time of simulations with fully decayed fields. Set to ``0`` to disable this feature.\nrun_time : Union[PositiveFloat, RunTimeSpec]\n [units = sec]. Total electromagnetic evolution time in seconds. Note: If simulation 'shutoff' is specified, simulation will terminate early when shutoff condition met. Alternatively, user may supply a :class:`RunTimeSpec` to this field, which will auto-compute the ``run_time`` based on the contents of the spec. If this option is used, the evaluated ``run_time`` value is available in the ``Simulation._run_time`` property.\n\nNotes\n-----\n\n A ``Simulation`` defines a custom implementation of Maxwell's equations which represents the physical model\n to be solved using `the Finite-Difference Time-Domain (FDTD) method\n `_. ``tidy3d`` simulations\n run very quickly in the cloud through GPU parallelization.\n\n .. image:: ../../_static/img/field_update_fdtd.png\n :width: 50%\n :align: left\n\n FDTD is a method for simulating the interaction of electromagnetic waves with structures and materials. It is\n the most widely used method in photonics design. The Maxwell's\n equations implemented in the ``Simulation`` are solved per time-step in the order shown in this image.\n\n The simplified input to FDTD solver consists of the permittivity distribution defined by :attr:`structures`\n which describe the device and :attr:`sources` of electromagnetic excitation. This information is used to\n computate the time dynamics of the electric and magnetic fields in this system. From these time-domain\n results, frequency-domain information of the simulation can also be extracted, and used for device design and\n optimization.\n\n If you are new to the FDTD method, we recommend you get started with the `FDTD 101 Lecture Series\n `_\n\n **Dimensions Selection**\n\n By default, simulations are defined as 3D. To make the simulation 2D, we can just set the simulation\n :attr:`size` in one of the dimensions to be 0. However, note that we still have to define a grid size (eg.\n ``tidy3d.Simulation(size=[size_x, size_y, 0])``) and specify a periodic boundary condition in that direction.\n\n .. TODO sort out inheritance problem https://aware-moon.cloudvent.net/tidy3d/examples/notebooks/RingResonator/\n\n See further parameter explanations below.\n\nExample\n-------\n>>> from tidy3d import Sphere, Cylinder, PolySlab\n>>> from tidy3d import UniformCurrentSource, GaussianPulse\n>>> from tidy3d import FieldMonitor, FluxMonitor\n>>> from tidy3d import GridSpec, AutoGrid\n>>> from tidy3d import BoundarySpec, Boundary\n>>> from tidy3d import Medium\n>>> sim = Simulation(\n... size=(3.0, 3.0, 3.0),\n... grid_spec=GridSpec(\n... grid_x = AutoGrid(min_steps_per_wvl = 20),\n... grid_y = AutoGrid(min_steps_per_wvl = 20),\n... grid_z = AutoGrid(min_steps_per_wvl = 20)\n... ),\n... run_time=40e-11,\n... structures=[\n... Structure(\n... geometry=Box(size=(1, 1, 1), center=(0, 0, 0)),\n... medium=Medium(permittivity=2.0),\n... ),\n... ],\n... sources=[\n... UniformCurrentSource(\n... size=(0, 0, 0),\n... center=(0, 0.5, 0),\n... polarization=\"Hx\",\n... source_time=GaussianPulse(\n... freq0=2e14,\n... fwidth=4e13,\n... ),\n... )\n... ],\n... monitors=[\n... FluxMonitor(size=(1, 1, 0), center=(0, 0, 0), freqs=[2e14, 2.5e14], name='flux'),\n... ],\n... symmetry=(0, 0, 0),\n... boundary_spec=BoundarySpec(\n... x = Boundary.pml(num_layers=20),\n... y = Boundary.pml(num_layers=30),\n... z = Boundary.periodic(),\n... ),\n... shutoff=1e-6,\n... courant=0.8,\n... subpixel=False,\n... )\n\nSee Also\n--------\n\n**Notebooks:**\n * `Quickstart <../../notebooks/StartHere.html>`_: Usage in a basic simulation flow.\n * `Using automatic nonuniform meshing <../../notebooks/AutoGrid.html>`_\n * See nearly all notebooks for :class:`Simulation` applications.\n\n**Lectures:**\n * `Introduction to FDTD Simulation `_: Usage in a basic simulation flow.\n * `Prelude to Integrated Photonics Simulation: Mode Injection `_\n\n**GUI:**\n * `FDTD Walkthrough `_", + "description": "Custom implementation of Maxwell\u2019s equations which represents the physical model to be solved using the FDTD\nmethod.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\ncenter : Union[tuple[Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box]], Box] = (0.0, 0.0, 0.0)\n [units = um]. Center of object in x, y, and z.\nsize : Union[tuple[Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box]], Box]\n [units = um]. Size in x, y, and z directions.\nmedium : Union[Medium, AnisotropicMedium, PECMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, FullyAnisotropicMedium, CustomMedium, CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomAnisotropicMedium, PerturbationMedium, PerturbationPoleResidue, LossyMetalMedium] = Medium(attrs={}, name=None, frequency_range=None, allow_gain=False, nonlinear_spec=None, modulation_spec=None, viz_spec=None, heat_spec=None, type='Medium', permittivity=1.0, conductivity=0.0)\n Background medium of simulation, defaults to vacuum if not specified.\nstructures : Tuple[Structure, ...] = ()\n Tuple of structures present in simulation. Note: Structures defined later in this list override the simulation material properties in regions of spatial overlap.\nsymmetry : Tuple[Literal[0, -1, 1], Literal[0, -1, 1], Literal[0, -1, 1]] = (0, 0, 0)\n Tuple of integers defining reflection symmetry across a plane bisecting the simulation domain normal to the x-, y-, and z-axis at the simulation center of each axis, respectively. Each element can be ``0`` (no symmetry), ``1`` (even, i.e. 'PMC' symmetry) or ``-1`` (odd, i.e. 'PEC' symmetry). Note that the vectorial nature of the fields must be taken into account to correctly determine the symmetry value.\nsources : Tuple[Annotated[Union[tidy3d.components.source.current.UniformCurrentSource, tidy3d.components.source.current.PointDipole, tidy3d.components.source.field.GaussianBeam, tidy3d.components.source.field.AstigmaticGaussianBeam, tidy3d.components.source.field.ModeSource, tidy3d.components.source.field.PlaneWave, tidy3d.components.source.field.CustomFieldSource, tidy3d.components.source.current.CustomCurrentSource, tidy3d.components.source.field.TFSF], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})], ...] = ()\n Tuple of electric current sources injecting fields into the simulation.\nboundary_spec : BoundarySpec = BoundarySpec(attrs={}, x=Boundary(attrs={},, plus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, minus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, type='Boundary'), y=Boundary(attrs={},, plus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, minus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, type='Boundary'), z=Boundary(attrs={},, plus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, minus=PML(attrs={},, name=None,, type='PML',, num_layers=12,, parameters=PMLParams(attrs={},, sigma_order=3,, sigma_min=0.0,, sigma_max=1.5,, type='PMLParams',, kappa_order=3,, kappa_min=1.0,, kappa_max=3.0,, alpha_order=1,, alpha_min=0.0,, alpha_max=0.0)),, type='Boundary'), type='BoundarySpec')\n Specification of boundary conditions along each dimension. If ``None``, PML boundary conditions are applied on all sides.\nmonitors : Tuple[Annotated[Union[tidy3d.components.monitor.FieldMonitor, tidy3d.components.monitor.FieldTimeMonitor, tidy3d.components.monitor.PermittivityMonitor, tidy3d.components.monitor.FluxMonitor, tidy3d.components.monitor.FluxTimeMonitor, tidy3d.components.monitor.ModeMonitor, tidy3d.components.monitor.ModeSolverMonitor, tidy3d.components.monitor.FieldProjectionAngleMonitor, tidy3d.components.monitor.FieldProjectionCartesianMonitor, tidy3d.components.monitor.FieldProjectionKSpaceMonitor, tidy3d.components.monitor.DiffractionMonitor, tidy3d.components.monitor.DirectivityMonitor], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})], ...] = ()\n Tuple of monitors in the simulation. Note: monitor names are used to access data after simulation is run.\ngrid_spec : GridSpec = GridSpec(attrs={}, grid_x=AutoGrid(attrs={},, type='AutoGrid',, max_scale=1.4,, mesher=GradedMesher(attrs={},, type='GradedMesher'),, dl_min=None,, min_steps_per_wvl=10.0,, min_steps_per_sim_size=10.0), grid_y=AutoGrid(attrs={},, type='AutoGrid',, max_scale=1.4,, mesher=GradedMesher(attrs={},, type='GradedMesher'),, dl_min=None,, min_steps_per_wvl=10.0,, min_steps_per_sim_size=10.0), grid_z=AutoGrid(attrs={},, type='AutoGrid',, max_scale=1.4,, mesher=GradedMesher(attrs={},, type='GradedMesher'),, dl_min=None,, min_steps_per_wvl=10.0,, min_steps_per_sim_size=10.0), wavelength=None, override_structures=(), snapping_points=(), type='GridSpec')\n Specifications for the simulation grid along each of the three directions.\nversion : str = 2.8.0rc2\n String specifying the front end version number.\nplot_length_units : Optional[Literal['nm', '\u03bcm', 'um', 'mm', 'cm', 'm']] = \u03bcm\n When set to a supported ``LengthUnit``, plots will be produced with proper scaling of axes and include the desired unit specifier in labels.\nlumped_elements : Tuple[Annotated[Union[tidy3d.components.lumped_element.LumpedResistor, tidy3d.components.lumped_element.CoaxialLumpedResistor, tidy3d.components.lumped_element.LinearLumpedElement], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})], ...] = ()\n Tuple of lumped elements in the simulation. Note: only :class:`tidy3d.LumpedResistor` is supported currently.\nsubpixel : Union[bool, SubpixelSpec] = SubpixelSpec(attrs={}, dielectric=PolarizedAveraging(attrs={},, type='PolarizedAveraging'), metal=Staircasing(attrs={},, type='Staircasing'), pec=PECConformal(attrs={},, type='PECConformal',, timestep_reduction=0.3), lossy_metal=SurfaceImpedance(attrs={},, type='SurfaceImpedance',, timestep_reduction=0.0), type='SubpixelSpec')\n Apply subpixel averaging methods of the permittivity on structure interfaces to result in much higher accuracy for a given grid size. Supply a :class:`SubpixelSpec` to this field to select subpixel averaging methods separately on dielectric, metal, and PEC material interfaces. Alternatively, user may supply a boolean value: ``True`` to apply the default subpixel averaging methods corresponding to ``SubpixelSpec()`` , or ``False`` to apply staircasing.\nsimulation_type : Optional[Literal['autograd_fwd', 'autograd_bwd', 'tidy3d', None]] = tidy3d\n Tag used internally to distinguish types of simulations for ``autograd`` gradient processing.\npost_norm : Union[float, FreqDataArray] = 1.0\n Factor to multiply the fields by after running, given the adjoint source pipeline used. Note: this is used internally only.\ncourant : ConstrainedFloatValue = 0.99\n Normalized Courant stability factor that is no larger than 1 when CFL stability condition is met. It controls time step to spatial step ratio. Lower values lead to more stable simulations for dispersive materials, but result in longer simulation times.\nnormalize_index : Optional[NonNegativeInt] = 0\n Index of the source in the tuple of sources whose spectrum will be used to normalize the frequency-dependent data. If ``None``, the raw field data is returned unnormalized.\nshutoff : NonNegativeFloat = 1e-05\n Ratio of the instantaneous integrated E-field intensity to the maximum value at which the simulation will automatically terminate time stepping. Used to prevent extraneous run time of simulations with fully decayed fields. Set to ``0`` to disable this feature.\nrun_time : Union[PositiveFloat, RunTimeSpec]\n [units = sec]. Total electromagnetic evolution time in seconds. Note: If simulation 'shutoff' is specified, simulation will terminate early when shutoff condition met. Alternatively, user may supply a :class:`RunTimeSpec` to this field, which will auto-compute the ``run_time`` based on the contents of the spec. If this option is used, the evaluated ``run_time`` value is available in the ``Simulation._run_time`` property.\n\nNotes\n-----\n\n A ``Simulation`` defines a custom implementation of Maxwell's equations which represents the physical model\n to be solved using `the Finite-Difference Time-Domain (FDTD) method\n `_. ``tidy3d`` simulations\n run very quickly in the cloud through GPU parallelization.\n\n .. image:: ../../_static/img/field_update_fdtd.png\n :width: 50%\n :align: left\n\n FDTD is a method for simulating the interaction of electromagnetic waves with structures and materials. It is\n the most widely used method in photonics design. The Maxwell's\n equations implemented in the ``Simulation`` are solved per time-step in the order shown in this image.\n\n The simplified input to FDTD solver consists of the permittivity distribution defined by :attr:`structures`\n which describe the device and :attr:`sources` of electromagnetic excitation. This information is used to\n computate the time dynamics of the electric and magnetic fields in this system. From these time-domain\n results, frequency-domain information of the simulation can also be extracted, and used for device design and\n optimization.\n\n If you are new to the FDTD method, we recommend you get started with the `FDTD 101 Lecture Series\n `_\n\n **Dimensions Selection**\n\n By default, simulations are defined as 3D. To make the simulation 2D, we can just set the simulation\n :attr:`size` in one of the dimensions to be 0. However, note that we still have to define a grid size (eg.\n ``tidy3d.Simulation(size=[size_x, size_y, 0])``) and specify a periodic boundary condition in that direction.\n\n .. TODO sort out inheritance problem https://aware-moon.cloudvent.net/tidy3d/examples/notebooks/RingResonator/\n\n See further parameter explanations below.\n\nExample\n-------\n>>> from tidy3d import Sphere, Cylinder, PolySlab\n>>> from tidy3d import UniformCurrentSource, GaussianPulse\n>>> from tidy3d import FieldMonitor, FluxMonitor\n>>> from tidy3d import GridSpec, AutoGrid\n>>> from tidy3d import BoundarySpec, Boundary\n>>> from tidy3d import Medium\n>>> sim = Simulation(\n... size=(3.0, 3.0, 3.0),\n... grid_spec=GridSpec(\n... grid_x = AutoGrid(min_steps_per_wvl = 20),\n... grid_y = AutoGrid(min_steps_per_wvl = 20),\n... grid_z = AutoGrid(min_steps_per_wvl = 20)\n... ),\n... run_time=40e-11,\n... structures=[\n... Structure(\n... geometry=Box(size=(1, 1, 1), center=(0, 0, 0)),\n... medium=Medium(permittivity=2.0),\n... ),\n... ],\n... sources=[\n... UniformCurrentSource(\n... size=(0, 0, 0),\n... center=(0, 0.5, 0),\n... polarization=\"Hx\",\n... source_time=GaussianPulse(\n... freq0=2e14,\n... fwidth=4e13,\n... ),\n... )\n... ],\n... monitors=[\n... FluxMonitor(size=(1, 1, 0), center=(0, 0, 0), freqs=[2e14, 2.5e14], name='flux'),\n... ],\n... symmetry=(0, 0, 0),\n... boundary_spec=BoundarySpec(\n... x = Boundary.pml(num_layers=20),\n... y = Boundary.pml(num_layers=30),\n... z = Boundary.periodic(),\n... ),\n... shutoff=1e-6,\n... courant=0.8,\n... subpixel=False,\n... )\n\nSee Also\n--------\n\n**Notebooks:**\n * `Quickstart <../../notebooks/StartHere.html>`_: Usage in a basic simulation flow.\n * `Using automatic nonuniform meshing <../../notebooks/AutoGrid.html>`_\n * See nearly all notebooks for :class:`Simulation` applications.\n\n**Lectures:**\n * `Introduction to FDTD Simulation `_: Usage in a basic simulation flow.\n * `Prelude to Integrated Photonics Simulation: Mode Injection `_\n\n**GUI:**\n * `FDTD Walkthrough `_", "type": "object", "properties": { "attrs": { @@ -582,7 +582,7 @@ "version": { "title": "Version", "description": "String specifying the front end version number.", - "default": "2.8.0rc1", + "default": "2.8.0rc2", "type": "string" }, "plot_length_units": { @@ -1435,7 +1435,7 @@ }, "Medium": { "title": "Medium", - "description": "Dispersionless medium. Mediums define the optical properties of the materials within the simulation.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\npermittivity : Union[ConstrainedFloatValue, Box] = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\nconductivity : Union[float, Box] = 0.0\n [units = S/um]. Electric conductivity. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.\n\nNotes\n-----\n\n In a dispersion-less medium, the displacement field :math:`D(t)` reacts instantaneously to the applied\n electric field :math:`E(t)`.\n\n .. math::\n\n D(t) = \\epsilon E(t)\n\nExample\n-------\n>>> dielectric = Medium(permittivity=4.0, name='my_medium')\n>>> eps = dielectric.eps_model(200e12)\n\nSee Also\n--------\n\n**Notebooks**\n * `Introduction on Tidy3D working principles <../../notebooks/Primer.html#Mediums>`_\n * `Index <../../notebooks/docs/features/medium.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_\n\n**GUI**\n * `Mediums `_", + "description": "Dispersionless medium. Mediums define the optical properties of the materials within the simulation.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\npermittivity : Union[ConstrainedFloatValue, Box] = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\nconductivity : Union[float, Box] = 0.0\n [units = S/um]. Electric conductivity. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.\n\nNotes\n-----\n\n In a dispersion-less medium, the displacement field :math:`D(t)` reacts instantaneously to the applied\n electric field :math:`E(t)`.\n\n .. math::\n\n D(t) = \\epsilon E(t)\n\nExample\n-------\n>>> dielectric = Medium(permittivity=4.0, name='my_medium')\n>>> eps = dielectric.eps_model(200e12)\n\nSee Also\n--------\n\n**Notebooks**\n * `Introduction on Tidy3D working principles <../../notebooks/Primer.html#Mediums>`_\n * `Index <../../notebooks/docs/features/medium.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_\n\n**GUI**\n * `Mediums `_", "type": "object", "properties": { "attrs": { @@ -1506,7 +1506,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -1624,7 +1624,7 @@ }, "LossyMetalMedium": { "title": "LossyMetalMedium", - "description": "Lossy metal that can be modeled with a surface impedance boundary condition (SIBC).\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Tuple[float, float]\n [units = (Hz, Hz)]. Frequency range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\npermittivity : Literal[1] = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\nconductivity : Union[float, Box] = 0.0\n [units = S/um]. Electric conductivity. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.\nfit_param : SkinDepthFitterParam = SkinDepthFitterParam(attrs={}, max_num_poles=3, tolerance_rms=0.001, frequency_sampling_points=20, log_sampling=True, type='SkinDepthFitterParam')\n Parameters for fitting complex-valued dispersive skin depth over the frequency range using pole-residue pair model.\n\nNotes\n-----\n\n SIBC is most accurate when the skin depth is much smaller than the structure feature size.\n If not the case, please use a regular medium instead, or set ``simulation.subpixel.lossy_metal``\n to ``td.VolumetricAveraging()`` or ``td.Staircasing()``.\n\nExample\n-------\n>>> lossy_metal = LossyMetalMedium(conductivity=10, frequency_range=(9e9, 10e9))", + "description": "Lossy metal that can be modeled with a surface impedance boundary condition (SIBC).\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Tuple[float, float]\n [units = (Hz, Hz)]. Frequency range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\npermittivity : Literal[1] = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\nconductivity : Union[float, Box] = 0.0\n [units = S/um]. Electric conductivity. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.\nfit_param : SkinDepthFitterParam = SkinDepthFitterParam(attrs={}, max_num_poles=3, tolerance_rms=0.001, frequency_sampling_points=20, log_sampling=True, type='SkinDepthFitterParam')\n Parameters for fitting complex-valued dispersive skin depth over the frequency range using pole-residue pair model.\n\nNotes\n-----\n\n SIBC is most accurate when the skin depth is much smaller than the structure feature size.\n If not the case, please use a regular medium instead, or set ``simulation.subpixel.lossy_metal``\n to ``td.VolumetricAveraging()`` or ``td.Staircasing()``.\n\nExample\n-------\n>>> lossy_metal = LossyMetalMedium(conductivity=10, frequency_range=(9e9, 10e9))", "type": "object", "properties": { "attrs": { @@ -1695,7 +1695,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -1778,7 +1778,7 @@ }, "PoleResidue": { "title": "PoleResidue", - "description": "A dispersive medium described by the pole-residue pair model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[PositiveFloat, Box] = 1.0\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\npoles : Tuple[Tuple[Union[tidy3d.components.types.tidycomplex, tidy3d.components.types.ComplexNumber, autograd.tracer.Box], Union[tidy3d.components.types.tidycomplex, tidy3d.components.types.ComplexNumber, autograd.tracer.Box]], ...] = ()\n [units = (rad/sec, rad/sec)]. Tuple of complex-valued (:math:`a_i, c_i`) poles for the model.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(\\omega) = \\epsilon_\\infty - \\sum_i\n \\left[\\frac{c_i}{j \\omega + a_i} +\n \\frac{c_i^*}{j \\omega + a_i^*}\\right]\n\nExample\n-------\n>>> pole_res = PoleResidue(eps_inf=2.0, poles=[((-1+2j), (3+4j)), ((-5+6j), (7+8j))])\n>>> eps = pole_res.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`CustomPoleResidue`:\n A spatially varying dispersive medium described by the pole-residue pair model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", + "description": "A dispersive medium described by the pole-residue pair model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[PositiveFloat, Box] = 1.0\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\npoles : Tuple[Tuple[Union[tidy3d.components.types.tidycomplex, tidy3d.components.types.ComplexNumber, autograd.tracer.Box], Union[tidy3d.components.types.tidycomplex, tidy3d.components.types.ComplexNumber, autograd.tracer.Box]], ...] = ()\n [units = (rad/sec, rad/sec)]. Tuple of complex-valued (:math:`a_i, c_i`) poles for the model.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(\\omega) = \\epsilon_\\infty - \\sum_i\n \\left[\\frac{c_i}{j \\omega + a_i} +\n \\frac{c_i^*}{j \\omega + a_i^*}\\right]\n\nExample\n-------\n>>> pole_res = PoleResidue(eps_inf=2.0, poles=[((-1+2j), (3+4j)), ((-5+6j), (7+8j))])\n>>> eps = pole_res.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`CustomPoleResidue`:\n A spatially varying dispersive medium described by the pole-residue pair model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", "type": "object", "properties": { "attrs": { @@ -1849,7 +1849,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -1980,7 +1980,7 @@ }, "Sellmeier": { "title": "Sellmeier", - "description": "A dispersive medium described by the Sellmeier model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\ncoeffs : Tuple[Tuple[float, pydantic.v1.types.PositiveFloat], ...]\n [units = (None, um^2)]. List of Sellmeier (:math:`B_i, C_i`) coefficients.\n\nNotes\n-----\n\n The frequency-dependence of the refractive index is described by:\n\n .. math::\n\n n(\\lambda)^2 = 1 + \\sum_i \\frac{B_i \\lambda^2}{\\lambda^2 - C_i}\n\n For lossless, weakly dispersive materials, the best way to incorporate the dispersion without doing\n complicated fits and without slowing the simulation down significantly is to provide the value of the\n refractive index dispersion :math:`\\frac{dn}{d\\lambda}` in :meth:`tidy3d.Sellmeier.from_dispersion`. The\n value is assumed to be at the central frequency or wavelength (whichever is provided), and a one-pole model\n for the material is generated.\n\nExample\n-------\n>>> sellmeier_medium = Sellmeier(coeffs=[(1,2), (3,4)])\n>>> eps = sellmeier_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`CustomSellmeier`\n A spatially varying dispersive medium described by the Sellmeier model.\n\n**Notebooks**\n\n* `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n\n* `Modeling dispersive material in FDTD `_", + "description": "A dispersive medium described by the Sellmeier model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\ncoeffs : Tuple[Tuple[float, pydantic.v1.types.PositiveFloat], ...]\n [units = (None, um^2)]. List of Sellmeier (:math:`B_i, C_i`) coefficients.\n\nNotes\n-----\n\n The frequency-dependence of the refractive index is described by:\n\n .. math::\n\n n(\\lambda)^2 = 1 + \\sum_i \\frac{B_i \\lambda^2}{\\lambda^2 - C_i}\n\n For lossless, weakly dispersive materials, the best way to incorporate the dispersion without doing\n complicated fits and without slowing the simulation down significantly is to provide the value of the\n refractive index dispersion :math:`\\frac{dn}{d\\lambda}` in :meth:`tidy3d.Sellmeier.from_dispersion`. The\n value is assumed to be at the central frequency or wavelength (whichever is provided), and a one-pole model\n for the material is generated.\n\nExample\n-------\n>>> sellmeier_medium = Sellmeier(coeffs=[(1,2), (3,4)])\n>>> eps = sellmeier_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`CustomSellmeier`\n A spatially varying dispersive medium described by the Sellmeier model.\n\n**Notebooks**\n\n* `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n\n* `Modeling dispersive material in FDTD `_", "type": "object", "properties": { "attrs": { @@ -2051,7 +2051,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -2115,7 +2115,7 @@ }, "Lorentz": { "title": "Lorentz", - "description": "A dispersive medium described by the Lorentz model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : PositiveFloat = 1.0\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[float, float, pydantic.v1.types.NonNegativeFloat], ...]\n [units = (None (relative permittivity), Hz, Hz)]. List of (:math:`\\Delta\\epsilon_i, f_i, \\delta_i`) values for model.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty + \\sum_i\n \\frac{\\Delta\\epsilon_i f_i^2}{f_i^2 - 2jf\\delta_i - f^2}\n\nExample\n-------\n>>> lorentz_medium = Lorentz(eps_inf=2.0, coeffs=[(1,2,3), (4,5,6)])\n>>> eps = lorentz_medium.eps_model(200e12)\n\nSee Also\n--------\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", + "description": "A dispersive medium described by the Lorentz model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : PositiveFloat = 1.0\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[float, float, pydantic.v1.types.NonNegativeFloat], ...]\n [units = (None (relative permittivity), Hz, Hz)]. List of (:math:`\\Delta\\epsilon_i, f_i, \\delta_i`) values for model.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty + \\sum_i\n \\frac{\\Delta\\epsilon_i f_i^2}{f_i^2 - 2jf\\delta_i - f^2}\n\nExample\n-------\n>>> lorentz_medium = Lorentz(eps_inf=2.0, coeffs=[(1,2,3), (4,5,6)])\n>>> eps = lorentz_medium.eps_model(200e12)\n\nSee Also\n--------\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", "type": "object", "properties": { "attrs": { @@ -2186,7 +2186,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -2262,7 +2262,7 @@ }, "Debye": { "title": "Debye", - "description": "A dispersive medium described by the Debye model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : PositiveFloat = 1.0\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[float, pydantic.v1.types.PositiveFloat], ...]\n [units = (None (relative permittivity), sec)]. List of (:math:`\\Delta\\epsilon_i, \\tau_i`) values for model.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty + \\sum_i\n \\frac{\\Delta\\epsilon_i}{1 - jf\\tau_i}\n\nExample\n-------\n>>> debye_medium = Debye(eps_inf=2.0, coeffs=[(1,2),(3,4)])\n>>> eps = debye_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`CustomDebye`\n A spatially varying dispersive medium described by the Debye model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", + "description": "A dispersive medium described by the Debye model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : PositiveFloat = 1.0\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[float, pydantic.v1.types.PositiveFloat], ...]\n [units = (None (relative permittivity), sec)]. List of (:math:`\\Delta\\epsilon_i, \\tau_i`) values for model.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty + \\sum_i\n \\frac{\\Delta\\epsilon_i}{1 - jf\\tau_i}\n\nExample\n-------\n>>> debye_medium = Debye(eps_inf=2.0, coeffs=[(1,2),(3,4)])\n>>> eps = debye_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`CustomDebye`\n A spatially varying dispersive medium described by the Debye model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", "type": "object", "properties": { "attrs": { @@ -2333,7 +2333,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -2405,7 +2405,7 @@ }, "Drude": { "title": "Drude", - "description": "A dispersive medium described by the Drude model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : PositiveFloat = 1.0\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[float, pydantic.v1.types.PositiveFloat], ...]\n [units = (Hz, Hz)]. List of (:math:`f_i, \\delta_i`) values for model.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty - \\sum_i\n \\frac{ f_i^2}{f^2 + jf\\delta_i}\n\nExample\n-------\n>>> drude_medium = Drude(eps_inf=2.0, coeffs=[(1,2), (3,4)])\n>>> eps = drude_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`CustomDrude`:\n A spatially varying dispersive medium described by the Drude model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", + "description": "A dispersive medium described by the Drude model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : PositiveFloat = 1.0\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[float, pydantic.v1.types.PositiveFloat], ...]\n [units = (Hz, Hz)]. List of (:math:`f_i, \\delta_i`) values for model.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty - \\sum_i\n \\frac{ f_i^2}{f^2 + jf\\delta_i}\n\nExample\n-------\n>>> drude_medium = Drude(eps_inf=2.0, coeffs=[(1,2), (3,4)])\n>>> eps = drude_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`CustomDrude`:\n A spatially varying dispersive medium described by the Drude model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", "type": "object", "properties": { "attrs": { @@ -2476,7 +2476,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -2548,7 +2548,7 @@ }, "PECMedium": { "title": "PECMedium", - "description": "Perfect electrical conductor class.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\n\nNote\n----\n\n To avoid confusion from duplicate PECs, must import ``tidy3d.PEC`` instance directly.", + "description": "Perfect electrical conductor class.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\n\nNote\n----\n\n To avoid confusion from duplicate PECs, must import ``tidy3d.PEC`` instance directly.", "type": "object", "properties": { "attrs": { @@ -2619,7 +2619,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -2657,7 +2657,7 @@ }, "AnisotropicMedium": { "title": "AnisotropicMedium", - "description": "Diagonally anisotropic medium.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : Optional[bool] = None\n This field is ignored. Please set ``allow_gain`` in each component\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\nxx : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the xx-component of the diagonal permittivity tensor.\nyy : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the yy-component of the diagonal permittivity tensor.\nzz : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the zz-component of the diagonal permittivity tensor.\n\nNotes\n-----\n\n Only diagonal anisotropy is currently supported.\n\nExample\n-------\n>>> medium_xx = Medium(permittivity=4.0)\n>>> medium_yy = Medium(permittivity=4.1)\n>>> medium_zz = Medium(permittivity=3.9)\n>>> anisotropic_dielectric = AnisotropicMedium(xx=medium_xx, yy=medium_yy, zz=medium_zz)\n\nSee Also\n--------\n\n:class:`CustomAnisotropicMedium`\n Diagonally anisotropic medium with spatially varying permittivity in each component.\n\n:class:`FullyAnisotropicMedium`\n Fully anisotropic medium including all 9 components of the permittivity and conductivity tensors.\n\n**Notebooks**\n * `Broadband polarizer assisted by anisotropic metamaterial <../../notebooks/SWGBroadbandPolarizer.html>`_\n * `Thin film lithium niobate adiabatic waveguide coupler <../../notebooks/AdiabaticCouplerLN.html>`_", + "description": "Diagonally anisotropic medium.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : Optional[bool] = None\n This field is ignored. Please set ``allow_gain`` in each component\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\nxx : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the xx-component of the diagonal permittivity tensor.\nyy : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the yy-component of the diagonal permittivity tensor.\nzz : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the zz-component of the diagonal permittivity tensor.\n\nNotes\n-----\n\n Only diagonal anisotropy is currently supported.\n\nExample\n-------\n>>> medium_xx = Medium(permittivity=4.0)\n>>> medium_yy = Medium(permittivity=4.1)\n>>> medium_zz = Medium(permittivity=3.9)\n>>> anisotropic_dielectric = AnisotropicMedium(xx=medium_xx, yy=medium_yy, zz=medium_zz)\n\nSee Also\n--------\n\n:class:`CustomAnisotropicMedium`\n Diagonally anisotropic medium with spatially varying permittivity in each component.\n\n:class:`FullyAnisotropicMedium`\n Fully anisotropic medium including all 9 components of the permittivity and conductivity tensors.\n\n**Notebooks**\n * `Broadband polarizer assisted by anisotropic metamaterial <../../notebooks/SWGBroadbandPolarizer.html>`_\n * `Thin film lithium niobate adiabatic waveguide coupler <../../notebooks/AdiabaticCouplerLN.html>`_", "type": "object", "properties": { "attrs": { @@ -2727,7 +2727,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -2899,7 +2899,7 @@ }, "FullyAnisotropicMedium": { "title": "FullyAnisotropicMedium", - "description": "Fully anisotropic medium including all 9 components of the permittivity and conductivity\ntensors.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\npermittivity : ArrayLike[dtype=float, ndim=2, shape=(3, 3)] = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]\n [units = None (relative permittivity)]. Relative permittivity tensor.\nconductivity : ArrayLike[dtype=float, ndim=2, shape=(3, 3)] = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]\n [units = S/um]. Electric conductivity tensor. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.\n\nNotes\n-----\n\n Provided permittivity tensor and the symmetric part of the conductivity tensor must\n have coinciding main directions. A non-symmetric conductivity tensor can be used to model\n magneto-optic effects. Note that dispersive properties and subpixel averaging are currently not\n supported for fully anisotropic materials.\n\nNote\n----\n\n Simulations involving fully anisotropic materials are computationally more intensive, thus,\n they take longer time to complete. This increase strongly depends on the filling fraction of\n the simulation domain by fully anisotropic materials, varying approximately in the range from\n 1.5 to 5. The cost of running a simulation is adjusted correspondingly.\n\nExample\n-------\n>>> perm = [[2, 0, 0], [0, 1, 0], [0, 0, 3]]\n>>> cond = [[0.1, 0, 0], [0, 0, 0], [0, 0, 0]]\n>>> anisotropic_dielectric = FullyAnisotropicMedium(permittivity=perm, conductivity=cond)\n\nSee Also\n--------\n\n:class:`CustomAnisotropicMedium`\n Diagonally anisotropic medium with spatially varying permittivity in each component.\n\n:class:`AnisotropicMedium`\n Diagonally anisotropic medium.\n\n**Notebooks**\n * `Broadband polarizer assisted by anisotropic metamaterial <../../notebooks/SWGBroadbandPolarizer.html>`_\n * `Thin film lithium niobate adiabatic waveguide coupler <../../notebooks/AdiabaticCouplerLN.html>`_\n * `Defining fully anisotropic materials <../../notebooks/FullyAnisotropic.html>`_", + "description": "Fully anisotropic medium including all 9 components of the permittivity and conductivity\ntensors.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\npermittivity : ArrayLike[dtype=float, ndim=2, shape=(3, 3)] = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]\n [units = None (relative permittivity)]. Relative permittivity tensor.\nconductivity : ArrayLike[dtype=float, ndim=2, shape=(3, 3)] = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]\n [units = S/um]. Electric conductivity tensor. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.\n\nNotes\n-----\n\n Provided permittivity tensor and the symmetric part of the conductivity tensor must\n have coinciding main directions. A non-symmetric conductivity tensor can be used to model\n magneto-optic effects. Note that dispersive properties and subpixel averaging are currently not\n supported for fully anisotropic materials.\n\nNote\n----\n\n Simulations involving fully anisotropic materials are computationally more intensive, thus,\n they take longer time to complete. This increase strongly depends on the filling fraction of\n the simulation domain by fully anisotropic materials, varying approximately in the range from\n 1.5 to 5. The cost of running a simulation is adjusted correspondingly.\n\nExample\n-------\n>>> perm = [[2, 0, 0], [0, 1, 0], [0, 0, 3]]\n>>> cond = [[0.1, 0, 0], [0, 0, 0], [0, 0, 0]]\n>>> anisotropic_dielectric = FullyAnisotropicMedium(permittivity=perm, conductivity=cond)\n\nSee Also\n--------\n\n:class:`CustomAnisotropicMedium`\n Diagonally anisotropic medium with spatially varying permittivity in each component.\n\n:class:`AnisotropicMedium`\n Diagonally anisotropic medium.\n\n**Notebooks**\n * `Broadband polarizer assisted by anisotropic metamaterial <../../notebooks/SWGBroadbandPolarizer.html>`_\n * `Thin film lithium niobate adiabatic waveguide coupler <../../notebooks/AdiabaticCouplerLN.html>`_\n * `Defining fully anisotropic materials <../../notebooks/FullyAnisotropic.html>`_", "type": "object", "properties": { "attrs": { @@ -2970,7 +2970,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -3123,7 +3123,7 @@ }, "TriangularGridDataset": { "title": "TriangularGridDataset", - "description": "Dataset for storing triangular grid data. Data values are associated with the nodes of\nthe grid.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\npoints : PointDataArray\n Coordinates of points composing the unstructured grid.\nvalues : Union[IndexedDataArray, IndexVoltageDataArray]\n Values stored at the grid points.\ncells : CellDataArray\n Cells composing the unstructured grid specified as connections between grid points.\nnormal_axis : Literal[0, 1, 2]\n Orientation of the grid.\nnormal_pos : float\n Coordinate of the grid along the normal direction.\n\nNote\n----\nTo use full functionality of unstructured datasets one must install ``vtk`` package (``pip\ninstall tidy3d[vtk]`` or ``pip install vtk``). Otherwise the functionality of unstructured\ndatasets is limited to creation, writing to/loading from a file, and arithmetic manipulations.\n\nExample\n-------\n>>> tri_grid_points = PointDataArray(\n... [[0.0, 0.0], [1.0, 0.0], [0.0, 1.0], [1.0, 1.0]],\n... coords=dict(index=np.arange(4), axis=np.arange(2)),\n... )\n>>>\n>>> tri_grid_cells = CellDataArray(\n... [[0, 1, 2], [1, 2, 3]],\n... coords=dict(cell_index=np.arange(2), vertex_index=np.arange(3)),\n... )\n>>>\n>>> tri_grid_values = IndexedDataArray(\n... [1.0, 2.0, 3.0, 4.0], coords=dict(index=np.arange(4)),\n... )\n>>>\n>>> tri_grid = TriangularGridDataset(\n... normal_axis=1,\n... normal_pos=0,\n... points=tri_grid_points,\n... cells=tri_grid_cells,\n... values=tri_grid_values,\n... )", + "description": "Dataset for storing triangular grid data. Data values are associated with the nodes of\nthe grid.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\npoints : PointDataArray\n Coordinates of points composing the unstructured grid.\nvalues : Union[IndexedDataArray, IndexedVoltageDataArray]\n Values stored at the grid points.\ncells : CellDataArray\n Cells composing the unstructured grid specified as connections between grid points.\nnormal_axis : Literal[0, 1, 2]\n Orientation of the grid.\nnormal_pos : float\n Coordinate of the grid along the normal direction.\n\nNote\n----\nTo use full functionality of unstructured datasets one must install ``vtk`` package (``pip\ninstall tidy3d[vtk]`` or ``pip install vtk``). Otherwise the functionality of unstructured\ndatasets is limited to creation, writing to/loading from a file, and arithmetic manipulations.\n\nExample\n-------\n>>> tri_grid_points = PointDataArray(\n... [[0.0, 0.0], [1.0, 0.0], [0.0, 1.0], [1.0, 1.0]],\n... coords=dict(index=np.arange(4), axis=np.arange(2)),\n... )\n>>>\n>>> tri_grid_cells = CellDataArray(\n... [[0, 1, 2], [1, 2, 3]],\n... coords=dict(cell_index=np.arange(2), vertex_index=np.arange(3)),\n... )\n>>>\n>>> tri_grid_values = IndexedDataArray(\n... [1.0, 2.0, 3.0, 4.0], coords=dict(index=np.arange(4)),\n... )\n>>>\n>>> tri_grid = TriangularGridDataset(\n... normal_axis=1,\n... normal_pos=0,\n... points=tri_grid_points,\n... cells=tri_grid_cells,\n... values=tri_grid_values,\n... )", "type": "object", "properties": { "attrs": { @@ -3227,7 +3227,7 @@ }, "TetrahedralGridDataset": { "title": "TetrahedralGridDataset", - "description": "Dataset for storing tetrahedral grid data. Data values are associated with the nodes of\nthe grid.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\npoints : PointDataArray\n Coordinates of points composing the unstructured grid.\nvalues : Union[IndexedDataArray, IndexVoltageDataArray]\n Values stored at the grid points.\ncells : CellDataArray\n Cells composing the unstructured grid specified as connections between grid points.\n\nNote\n----\nTo use full functionality of unstructured datasets one must install ``vtk`` package (``pip\ninstall tidy3d[vtk]`` or ``pip install vtk``). Otherwise the functionality of unstructured\ndatasets is limited to creation, writing to/loading from a file, and arithmetic manipulations.\n\nExample\n-------\n>>> tet_grid_points = PointDataArray(\n... [[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]],\n... coords=dict(index=np.arange(4), axis=np.arange(3)),\n... )\n>>>\n>>> tet_grid_cells = CellDataArray(\n... [[0, 1, 2, 3]],\n... coords=dict(cell_index=np.arange(1), vertex_index=np.arange(4)),\n... )\n>>>\n>>> tet_grid_values = IndexedDataArray(\n... [1.0, 2.0, 3.0, 4.0], coords=dict(index=np.arange(4)),\n... )\n>>>\n>>> tet_grid = TetrahedralGridDataset(\n... points=tet_grid_points,\n... cells=tet_grid_cells,\n... values=tet_grid_values,\n... )", + "description": "Dataset for storing tetrahedral grid data. Data values are associated with the nodes of\nthe grid.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\npoints : PointDataArray\n Coordinates of points composing the unstructured grid.\nvalues : Union[IndexedDataArray, IndexedVoltageDataArray]\n Values stored at the grid points.\ncells : CellDataArray\n Cells composing the unstructured grid specified as connections between grid points.\n\nNote\n----\nTo use full functionality of unstructured datasets one must install ``vtk`` package (``pip\ninstall tidy3d[vtk]`` or ``pip install vtk``). Otherwise the functionality of unstructured\ndatasets is limited to creation, writing to/loading from a file, and arithmetic manipulations.\n\nExample\n-------\n>>> tet_grid_points = PointDataArray(\n... [[0.0, 0.0, 0.0], [1.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0, 1.0]],\n... coords=dict(index=np.arange(4), axis=np.arange(3)),\n... )\n>>>\n>>> tet_grid_cells = CellDataArray(\n... [[0, 1, 2, 3]],\n... coords=dict(cell_index=np.arange(1), vertex_index=np.arange(4)),\n... )\n>>>\n>>> tet_grid_values = IndexedDataArray(\n... [1.0, 2.0, 3.0, 4.0], coords=dict(index=np.arange(4)),\n... )\n>>>\n>>> tet_grid = TetrahedralGridDataset(\n... points=tet_grid_points,\n... cells=tet_grid_cells,\n... values=tet_grid_values,\n... )", "type": "object", "properties": { "attrs": { @@ -3314,7 +3314,7 @@ }, "CustomMedium": { "title": "CustomMedium", - "description": ":class:`.Medium` with user-supplied permittivity distribution.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\neps_dataset : Optional[PermittivityDataset] = None\n [To be deprecated] User-supplied dataset containing complex-valued permittivity as a function of space. Permittivity distribution over the Yee-grid will be interpolated based on ``interp_method``.\npermittivity : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})], NoneType] = None\n [units = None (relative permittivity)]. Spatial profile of relative permittivity.\nconductivity : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})], NoneType] = None\n [units = S/um]. Spatial profile Electric conductivity. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.\n\nExample\n-------\n>>> Nx, Ny, Nz = 10, 9, 8\n>>> X = np.linspace(-1, 1, Nx)\n>>> Y = np.linspace(-1, 1, Ny)\n>>> Z = np.linspace(-1, 1, Nz)\n>>> coords = dict(x=X, y=Y, z=Z)\n>>> permittivity= SpatialDataArray(np.ones((Nx, Ny, Nz)), coords=coords)\n>>> conductivity= SpatialDataArray(np.ones((Nx, Ny, Nz)), coords=coords)\n>>> dielectric = CustomMedium(permittivity=permittivity, conductivity=conductivity)\n>>> eps = dielectric.eps_model(200e12)", + "description": ":class:`.Medium` with user-supplied permittivity distribution.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\neps_dataset : Optional[PermittivityDataset] = None\n [To be deprecated] User-supplied dataset containing complex-valued permittivity as a function of space. Permittivity distribution over the Yee-grid will be interpolated based on ``interp_method``.\npermittivity : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})], NoneType] = None\n [units = None (relative permittivity)]. Spatial profile of relative permittivity.\nconductivity : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})], NoneType] = None\n [units = S/um]. Spatial profile Electric conductivity. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.\n\nExample\n-------\n>>> Nx, Ny, Nz = 10, 9, 8\n>>> X = np.linspace(-1, 1, Nx)\n>>> Y = np.linspace(-1, 1, Ny)\n>>> Z = np.linspace(-1, 1, Nz)\n>>> coords = dict(x=X, y=Y, z=Z)\n>>> permittivity= SpatialDataArray(np.ones((Nx, Ny, Nz)), coords=coords)\n>>> conductivity= SpatialDataArray(np.ones((Nx, Ny, Nz)), coords=coords)\n>>> dielectric = CustomMedium(permittivity=permittivity, conductivity=conductivity)\n>>> eps = dielectric.eps_model(200e12)", "type": "object", "properties": { "attrs": { @@ -3385,7 +3385,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -3508,7 +3508,7 @@ }, "CustomPoleResidue": { "title": "CustomPoleResidue", - "description": "A spatially varying dispersive medium described by the pole-residue pair model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\npoles : Tuple[Tuple[Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]], ...] = ()\n [units = (rad/sec, rad/sec)]. Tuple of complex-valued (:math:`a_i, c_i`) poles for the model.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\n\nNotes\n-----\n\n In this method, the frequency-dependent permittivity :math:`\\epsilon(\\omega)` is expressed as a sum of\n resonant material poles _`[1]`.\n\n .. math::\n\n \\epsilon(\\omega) = \\epsilon_\\infty - \\sum_i\n \\left[\\frac{c_i}{j \\omega + a_i} +\n \\frac{c_i^*}{j \\omega + a_i^*}\\right]\n\n For each of these resonant poles identified by the index :math:`i`, an auxiliary differential equation is\n used to relate the auxiliary current :math:`J_i(t)` to the applied electric field :math:`E(t)`.\n The sum of all these auxiliary current contributions describes the total dielectric response of the material.\n\n .. math::\n\n \\frac{d}{dt} J_i (t) - a_i J_i (t) = \\epsilon_0 c_i \\frac{d}{dt} E (t)\n\n Hence, the computational cost increases with the number of poles.\n\n **References**\n\n .. [1] M. Han, R.W. Dutton and S. Fan, IEEE Microwave and Wireless Component Letters, 16, 119 (2006).\n\n .. TODO add links to notebooks using this.\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 5)\n>>> y = np.linspace(-1, 1, 6)\n>>> z = np.linspace(-1, 1, 7)\n>>> coords = dict(x=x, y=y, z=z)\n>>> eps_inf = SpatialDataArray(np.ones((5, 6, 7)), coords=coords)\n>>> a1 = SpatialDataArray(-np.random.random((5, 6, 7)), coords=coords)\n>>> c1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> a2 = SpatialDataArray(-np.random.random((5, 6, 7)), coords=coords)\n>>> c2 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> pole_res = CustomPoleResidue(eps_inf=eps_inf, poles=[(a1, c1), (a2, c2)])\n>>> eps = pole_res.eps_model(200e12)\n\nSee Also\n--------\n\n**Notebooks**\n\n* `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n\n* `Modeling dispersive material in FDTD `_", + "description": "A spatially varying dispersive medium described by the pole-residue pair model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\npoles : Tuple[Tuple[Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]], ...] = ()\n [units = (rad/sec, rad/sec)]. Tuple of complex-valued (:math:`a_i, c_i`) poles for the model.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\n\nNotes\n-----\n\n In this method, the frequency-dependent permittivity :math:`\\epsilon(\\omega)` is expressed as a sum of\n resonant material poles _`[1]`.\n\n .. math::\n\n \\epsilon(\\omega) = \\epsilon_\\infty - \\sum_i\n \\left[\\frac{c_i}{j \\omega + a_i} +\n \\frac{c_i^*}{j \\omega + a_i^*}\\right]\n\n For each of these resonant poles identified by the index :math:`i`, an auxiliary differential equation is\n used to relate the auxiliary current :math:`J_i(t)` to the applied electric field :math:`E(t)`.\n The sum of all these auxiliary current contributions describes the total dielectric response of the material.\n\n .. math::\n\n \\frac{d}{dt} J_i (t) - a_i J_i (t) = \\epsilon_0 c_i \\frac{d}{dt} E (t)\n\n Hence, the computational cost increases with the number of poles.\n\n **References**\n\n .. [1] M. Han, R.W. Dutton and S. Fan, IEEE Microwave and Wireless Component Letters, 16, 119 (2006).\n\n .. TODO add links to notebooks using this.\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 5)\n>>> y = np.linspace(-1, 1, 6)\n>>> z = np.linspace(-1, 1, 7)\n>>> coords = dict(x=x, y=y, z=z)\n>>> eps_inf = SpatialDataArray(np.ones((5, 6, 7)), coords=coords)\n>>> a1 = SpatialDataArray(-np.random.random((5, 6, 7)), coords=coords)\n>>> c1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> a2 = SpatialDataArray(-np.random.random((5, 6, 7)), coords=coords)\n>>> c2 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> pole_res = CustomPoleResidue(eps_inf=eps_inf, poles=[(a1, c1), (a2, c2)])\n>>> eps = pole_res.eps_model(200e12)\n\nSee Also\n--------\n\n**Notebooks**\n\n* `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n\n* `Modeling dispersive material in FDTD `_", "type": "object", "properties": { "attrs": { @@ -3579,7 +3579,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -3737,7 +3737,7 @@ }, "CustomSellmeier": { "title": "CustomSellmeier", - "description": "A spatially varying dispersive medium described by the Sellmeier model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\ncoeffs : Tuple[Tuple[Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]], ...]\n [units = (None, um^2)]. List of Sellmeier (:math:`B_i, C_i`) coefficients.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\n\nNotes\n-----\n\n The frequency-dependence of the refractive index is described by:\n\n .. math::\n\n n(\\lambda)^2 = 1 + \\sum_i \\frac{B_i \\lambda^2}{\\lambda^2 - C_i}\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 5)\n>>> y = np.linspace(-1, 1, 6)\n>>> z = np.linspace(-1, 1, 7)\n>>> coords = dict(x=x, y=y, z=z)\n>>> b1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> c1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> sellmeier_medium = CustomSellmeier(coeffs=[(b1,c1),])\n>>> eps = sellmeier_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`Sellmeier`\n A dispersive medium described by the Sellmeier model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", + "description": "A spatially varying dispersive medium described by the Sellmeier model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\ncoeffs : Tuple[Tuple[Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]], ...]\n [units = (None, um^2)]. List of Sellmeier (:math:`B_i, C_i`) coefficients.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\n\nNotes\n-----\n\n The frequency-dependence of the refractive index is described by:\n\n .. math::\n\n n(\\lambda)^2 = 1 + \\sum_i \\frac{B_i \\lambda^2}{\\lambda^2 - C_i}\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 5)\n>>> y = np.linspace(-1, 1, 6)\n>>> z = np.linspace(-1, 1, 7)\n>>> coords = dict(x=x, y=y, z=z)\n>>> b1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> c1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> sellmeier_medium = CustomSellmeier(coeffs=[(b1,c1),])\n>>> eps = sellmeier_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`Sellmeier`\n A dispersive medium described by the Sellmeier model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", "type": "object", "properties": { "attrs": { @@ -3808,7 +3808,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -3935,7 +3935,7 @@ }, "CustomLorentz": { "title": "CustomLorentz", - "description": "A spatially varying dispersive medium described by the Lorentz model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]], ...]\n [units = (None (relative permittivity), Hz, Hz)]. List of (:math:`\\Delta\\epsilon_i, f_i, \\delta_i`) values for model.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty + \\sum_i\n \\frac{\\Delta\\epsilon_i f_i^2}{f_i^2 - 2jf\\delta_i - f^2}\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 5)\n>>> y = np.linspace(-1, 1, 6)\n>>> z = np.linspace(-1, 1, 7)\n>>> coords = dict(x=x, y=y, z=z)\n>>> eps_inf = SpatialDataArray(np.ones((5, 6, 7)), coords=coords)\n>>> d_epsilon = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> f = SpatialDataArray(1+np.random.random((5, 6, 7)), coords=coords)\n>>> delta = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> lorentz_medium = CustomLorentz(eps_inf=eps_inf, coeffs=[(d_epsilon,f,delta),])\n>>> eps = lorentz_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`CustomPoleResidue`:\n A spatially varying dispersive medium described by the pole-residue pair model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", + "description": "A spatially varying dispersive medium described by the Lorentz model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]], ...]\n [units = (None (relative permittivity), Hz, Hz)]. List of (:math:`\\Delta\\epsilon_i, f_i, \\delta_i`) values for model.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty + \\sum_i\n \\frac{\\Delta\\epsilon_i f_i^2}{f_i^2 - 2jf\\delta_i - f^2}\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 5)\n>>> y = np.linspace(-1, 1, 6)\n>>> z = np.linspace(-1, 1, 7)\n>>> coords = dict(x=x, y=y, z=z)\n>>> eps_inf = SpatialDataArray(np.ones((5, 6, 7)), coords=coords)\n>>> d_epsilon = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> f = SpatialDataArray(1+np.random.random((5, 6, 7)), coords=coords)\n>>> delta = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> lorentz_medium = CustomLorentz(eps_inf=eps_inf, coeffs=[(d_epsilon,f,delta),])\n>>> eps = lorentz_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`CustomPoleResidue`:\n A spatially varying dispersive medium described by the pole-residue pair model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", "type": "object", "properties": { "attrs": { @@ -4006,7 +4006,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -4192,7 +4192,7 @@ }, "CustomDebye": { "title": "CustomDebye", - "description": "A spatially varying dispersive medium described by the Debye model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]], ...]\n [units = (None (relative permittivity), sec)]. List of (:math:`\\Delta\\epsilon_i, \\tau_i`) values for model.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty + \\sum_i\n \\frac{\\Delta\\epsilon_i}{1 - jf\\tau_i}\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 5)\n>>> y = np.linspace(-1, 1, 6)\n>>> z = np.linspace(-1, 1, 7)\n>>> coords = dict(x=x, y=y, z=z)\n>>> eps_inf = SpatialDataArray(1+np.random.random((5, 6, 7)), coords=coords)\n>>> eps1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> tau1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> debye_medium = CustomDebye(eps_inf=eps_inf, coeffs=[(eps1,tau1),])\n>>> eps = debye_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`Debye`\n A dispersive medium described by the Debye model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", + "description": "A spatially varying dispersive medium described by the Debye model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]], ...]\n [units = (None (relative permittivity), sec)]. List of (:math:`\\Delta\\epsilon_i, \\tau_i`) values for model.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty + \\sum_i\n \\frac{\\Delta\\epsilon_i}{1 - jf\\tau_i}\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 5)\n>>> y = np.linspace(-1, 1, 6)\n>>> z = np.linspace(-1, 1, 7)\n>>> coords = dict(x=x, y=y, z=z)\n>>> eps_inf = SpatialDataArray(1+np.random.random((5, 6, 7)), coords=coords)\n>>> eps1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> tau1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> debye_medium = CustomDebye(eps_inf=eps_inf, coeffs=[(eps1,tau1),])\n>>> eps = debye_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`Debye`\n A dispersive medium described by the Debye model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", "type": "object", "properties": { "attrs": { @@ -4263,7 +4263,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -4421,7 +4421,7 @@ }, "CustomDrude": { "title": "CustomDrude", - "description": "A spatially varying dispersive medium described by the Drude model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]], ...]\n [units = (Hz, Hz)]. List of (:math:`f_i, \\delta_i`) values for model.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\n\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty - \\sum_i\n \\frac{ f_i^2}{f^2 + jf\\delta_i}\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 5)\n>>> y = np.linspace(-1, 1, 6)\n>>> z = np.linspace(-1, 1, 7)\n>>> coords = dict(x=x, y=y, z=z)\n>>> eps_inf = SpatialDataArray(np.ones((5, 6, 7)), coords=coords)\n>>> f1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> delta1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> drude_medium = CustomDrude(eps_inf=eps_inf, coeffs=[(f1,delta1),])\n>>> eps = drude_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`Drude`:\n A dispersive medium described by the Drude model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", + "description": "A spatially varying dispersive medium described by the Drude model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\ncoeffs : Tuple[Tuple[Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]], Union[tidy3d.components.data.data_array.SpatialDataArray, Annotated[Union[tidy3d.components.data.unstructured.triangular.TriangularGridDataset, tidy3d.components.data.unstructured.tetrahedral.TetrahedralGridDataset], FieldInfo(default=PydanticUndefined, discriminator='type', extra={})]]], ...]\n [units = (Hz, Hz)]. List of (:math:`f_i, \\delta_i`) values for model.\ninterp_method : Literal['nearest', 'linear'] = nearest\n Interpolation method to obtain permittivity values that are not supplied at the Yee grids; For grids outside the range of the supplied data, extrapolation will be applied. When the extrapolated value is smaller (greater) than the minimal (maximal) of the supplied data, the extrapolated value will take the minimal (maximal) of the supplied data.\nsubpixel : bool = False\n If ``True``, apply the subpixel averaging method specified by ``Simulation``'s field ``subpixel`` for this type of material on the interface of the structure, including exterior boundary and intersection interfaces with other structures.\n\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(f) = \\epsilon_\\infty - \\sum_i\n \\frac{ f_i^2}{f^2 + jf\\delta_i}\n\nExample\n-------\n>>> x = np.linspace(-1, 1, 5)\n>>> y = np.linspace(-1, 1, 6)\n>>> z = np.linspace(-1, 1, 7)\n>>> coords = dict(x=x, y=y, z=z)\n>>> eps_inf = SpatialDataArray(np.ones((5, 6, 7)), coords=coords)\n>>> f1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> delta1 = SpatialDataArray(np.random.random((5, 6, 7)), coords=coords)\n>>> drude_medium = CustomDrude(eps_inf=eps_inf, coeffs=[(f1,delta1),])\n>>> eps = drude_medium.eps_model(200e12)\n\nSee Also\n--------\n\n:class:`Drude`:\n A dispersive medium described by the Drude model.\n\n**Notebooks**\n * `Fitting dispersive material models <../../notebooks/Fitting.html>`_\n\n**Lectures**\n * `Modeling dispersive material in FDTD `_", "type": "object", "properties": { "attrs": { @@ -4492,7 +4492,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -4650,7 +4650,7 @@ }, "CustomAnisotropicMedium": { "title": "CustomAnisotropicMedium", - "description": "Diagonally anisotropic medium with spatially varying permittivity in each component.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : Optional[bool] = None\n This field is ignored. Please set ``allow_gain`` in each component\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\nxx : Union[CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomMedium]\n Medium describing the xx-component of the diagonal permittivity tensor.\nyy : Union[CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomMedium]\n Medium describing the yy-component of the diagonal permittivity tensor.\nzz : Union[CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomMedium]\n Medium describing the zz-component of the diagonal permittivity tensor.\ninterp_method : Optional[Literal['nearest', 'linear']] = None\n When the value is 'None', each component will follow its own interpolation method. When the value is other than 'None', the interpolation method specified by this field will override the one in each component.\nsubpixel : Optional[bool] = None\n This field is ignored. Please set ``subpixel`` in each component\n\nNote\n----\n Only diagonal anisotropy is currently supported.\n\nExample\n-------\n>>> Nx, Ny, Nz = 10, 9, 8\n>>> x = np.linspace(-1, 1, Nx)\n>>> y = np.linspace(-1, 1, Ny)\n>>> z = np.linspace(-1, 1, Nz)\n>>> coords = dict(x=x, y=y, z=z)\n>>> permittivity= SpatialDataArray(np.ones((Nx, Ny, Nz)), coords=coords)\n>>> conductivity= SpatialDataArray(np.ones((Nx, Ny, Nz)), coords=coords)\n>>> medium_xx = CustomMedium(permittivity=permittivity, conductivity=conductivity)\n>>> medium_yy = CustomMedium(permittivity=permittivity, conductivity=conductivity)\n>>> d_epsilon = SpatialDataArray(np.random.random((Nx, Ny, Nz)), coords=coords)\n>>> f = SpatialDataArray(1+np.random.random((Nx, Ny, Nz)), coords=coords)\n>>> delta = SpatialDataArray(np.random.random((Nx, Ny, Nz)), coords=coords)\n>>> medium_zz = CustomLorentz(eps_inf=permittivity, coeffs=[(d_epsilon,f,delta),])\n>>> anisotropic_dielectric = CustomAnisotropicMedium(xx=medium_xx, yy=medium_yy, zz=medium_zz)\n\nSee Also\n--------\n\n:class:`AnisotropicMedium`\n Diagonally anisotropic medium.\n\n**Notebooks**\n * `Broadband polarizer assisted by anisotropic metamaterial <../../notebooks/SWGBroadbandPolarizer.html>`_\n * `Thin film lithium niobate adiabatic waveguide coupler <../../notebooks/AdiabaticCouplerLN.html>`_\n * `Defining fully anisotropic materials <../../notebooks/FullyAnisotropic.html>`_", + "description": "Diagonally anisotropic medium with spatially varying permittivity in each component.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : Optional[bool] = None\n This field is ignored. Please set ``allow_gain`` in each component\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\nxx : Union[CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomMedium]\n Medium describing the xx-component of the diagonal permittivity tensor.\nyy : Union[CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomMedium]\n Medium describing the yy-component of the diagonal permittivity tensor.\nzz : Union[CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomMedium]\n Medium describing the zz-component of the diagonal permittivity tensor.\ninterp_method : Optional[Literal['nearest', 'linear']] = None\n When the value is 'None', each component will follow its own interpolation method. When the value is other than 'None', the interpolation method specified by this field will override the one in each component.\nsubpixel : Optional[bool] = None\n This field is ignored. Please set ``subpixel`` in each component\n\nNote\n----\n Only diagonal anisotropy is currently supported.\n\nExample\n-------\n>>> Nx, Ny, Nz = 10, 9, 8\n>>> x = np.linspace(-1, 1, Nx)\n>>> y = np.linspace(-1, 1, Ny)\n>>> z = np.linspace(-1, 1, Nz)\n>>> coords = dict(x=x, y=y, z=z)\n>>> permittivity= SpatialDataArray(np.ones((Nx, Ny, Nz)), coords=coords)\n>>> conductivity= SpatialDataArray(np.ones((Nx, Ny, Nz)), coords=coords)\n>>> medium_xx = CustomMedium(permittivity=permittivity, conductivity=conductivity)\n>>> medium_yy = CustomMedium(permittivity=permittivity, conductivity=conductivity)\n>>> d_epsilon = SpatialDataArray(np.random.random((Nx, Ny, Nz)), coords=coords)\n>>> f = SpatialDataArray(1+np.random.random((Nx, Ny, Nz)), coords=coords)\n>>> delta = SpatialDataArray(np.random.random((Nx, Ny, Nz)), coords=coords)\n>>> medium_zz = CustomLorentz(eps_inf=permittivity, coeffs=[(d_epsilon,f,delta),])\n>>> anisotropic_dielectric = CustomAnisotropicMedium(xx=medium_xx, yy=medium_yy, zz=medium_zz)\n\nSee Also\n--------\n\n:class:`AnisotropicMedium`\n Diagonally anisotropic medium.\n\n**Notebooks**\n * `Broadband polarizer assisted by anisotropic metamaterial <../../notebooks/SWGBroadbandPolarizer.html>`_\n * `Thin film lithium niobate adiabatic waveguide coupler <../../notebooks/AdiabaticCouplerLN.html>`_\n * `Defining fully anisotropic materials <../../notebooks/FullyAnisotropic.html>`_", "type": "object", "properties": { "attrs": { @@ -4720,7 +4720,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -5365,7 +5365,7 @@ }, "PerturbationMedium": { "title": "PerturbationMedium", - "description": "Dispersionless medium with perturbations. Perturbation model can be defined either directly\nthrough providing ``permittivity_perturbation`` and ``conductivity_perturbation`` or via\nproviding a specific perturbation model (:class:`PermittivityPerturbation`,\n:class:`IndexPerturbation`) as ``perturbaiton_spec``.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nsubpixel : bool = True\n This value will be transferred to the resulting custom medium. That is, if ``True``, the subpixel averaging will be applied to the custom medium. The type of subpixel averaging method applied is specified in ``Simulation``'s field ``subpixel``. If the resulting medium is not a custom medium (no perturbations), this field does not have an effect.\nperturbation_spec : Union[PermittivityPerturbation, IndexPerturbation, NoneType] = None\n Specification of medium perturbation as one of predefined types.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\npermittivity : Union[ConstrainedFloatValue, Box] = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\nconductivity : Union[float, Box] = 0.0\n [units = S/um]. Electric conductivity. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.\npermittivity_perturbation : Optional[ParameterPerturbation] = None\n [units = None (relative permittivity)]. List of heat and/or charge perturbations to permittivity.\nconductivity_perturbation : Optional[ParameterPerturbation] = None\n [units = S/um]. List of heat and/or charge perturbations to permittivity.\n\nExample\n-------\n>>> from tidy3d import ParameterPerturbation, LinearHeatPerturbation\n>>> dielectric = PerturbationMedium(\n... permittivity=4.0,\n... permittivity_perturbation=ParameterPerturbation(\n... heat=LinearHeatPerturbation(temperature_ref=300, coeff=0.0001),\n... ),\n... name='my_medium',\n... )", + "description": "Dispersionless medium with perturbations. Perturbation model can be defined either directly\nthrough providing ``permittivity_perturbation`` and ``conductivity_perturbation`` or via\nproviding a specific perturbation model (:class:`PermittivityPerturbation`,\n:class:`IndexPerturbation`) as ``perturbaiton_spec``.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nsubpixel : bool = True\n This value will be transferred to the resulting custom medium. That is, if ``True``, the subpixel averaging will be applied to the custom medium. The type of subpixel averaging method applied is specified in ``Simulation``'s field ``subpixel``. If the resulting medium is not a custom medium (no perturbations), this field does not have an effect.\nperturbation_spec : Union[PermittivityPerturbation, IndexPerturbation, NoneType] = None\n Specification of medium perturbation as one of predefined types.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\npermittivity : Union[ConstrainedFloatValue, Box] = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\nconductivity : Union[float, Box] = 0.0\n [units = S/um]. Electric conductivity. Defined such that the imaginary part of the complex permittivity at angular frequency omega is given by conductivity/omega.\npermittivity_perturbation : Optional[ParameterPerturbation] = None\n [units = None (relative permittivity)]. List of heat and/or charge perturbations to permittivity.\nconductivity_perturbation : Optional[ParameterPerturbation] = None\n [units = S/um]. List of heat and/or charge perturbations to permittivity.\n\nExample\n-------\n>>> from tidy3d import ParameterPerturbation, LinearHeatPerturbation\n>>> dielectric = PerturbationMedium(\n... permittivity=4.0,\n... permittivity_perturbation=ParameterPerturbation(\n... heat=LinearHeatPerturbation(temperature_ref=300, coeff=0.0001),\n... ),\n... name='my_medium',\n... )", "type": "object", "properties": { "attrs": { @@ -5469,7 +5469,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -5550,7 +5550,7 @@ }, "PerturbationPoleResidue": { "title": "PerturbationPoleResidue", - "description": "A dispersive medium described by the pole-residue pair model with perturbations.\nPerturbation model can be defined either directly\nthrough providing ``eps_inf_perturbation`` and ``poles_perturbation`` or via\nproviding a specific perturbation model (:class:`PermittivityPerturbation`,\n:class:`IndexPerturbation`) as ``perturbaiton_spec``.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nsubpixel : bool = True\n This value will be transferred to the resulting custom medium. That is, if ``True``, the subpixel averaging will be applied to the custom medium. The type of subpixel averaging method applied is specified in ``Simulation``'s field ``subpixel``. If the resulting medium is not a custom medium (no perturbations), this field does not have an effect.\nperturbation_spec : Union[PermittivityPerturbation, IndexPerturbation, NoneType] = None\n Specification of medium perturbation as one of predefined types.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[PositiveFloat, Box] = 1.0\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\npoles : Tuple[Tuple[Union[tidy3d.components.types.tidycomplex, tidy3d.components.types.ComplexNumber, autograd.tracer.Box], Union[tidy3d.components.types.tidycomplex, tidy3d.components.types.ComplexNumber, autograd.tracer.Box]], ...] = ()\n [units = (rad/sec, rad/sec)]. Tuple of complex-valued (:math:`a_i, c_i`) poles for the model.\neps_inf_perturbation : Optional[ParameterPerturbation] = None\n [units = None (relative permittivity)]. Perturbations to relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\npoles_perturbation : Optional[Tuple[Tuple[Optional[tidy3d.components.parameter_perturbation.ParameterPerturbation], Optional[tidy3d.components.parameter_perturbation.ParameterPerturbation]], ...]] = None\n [units = (rad/sec, rad/sec)]. Perturbations to poles of the model.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(\\omega) = \\epsilon_\\infty - \\sum_i\n \\left[\\frac{c_i}{j \\omega + a_i} +\n \\frac{c_i^*}{j \\omega + a_i^*}\\right]\n\nExample\n-------\n>>> from tidy3d import ParameterPerturbation, LinearHeatPerturbation\n>>> c0_perturbation = ParameterPerturbation(\n... heat=LinearHeatPerturbation(temperature_ref=300, coeff=0.0001),\n... )\n>>> pole_res = PerturbationPoleResidue(\n... eps_inf=2.0,\n... poles=[((-1+2j), (3+4j)), ((-5+6j), (7+8j))],\n... poles_perturbation=[(None, c0_perturbation), (None, None)],\n... )", + "description": "A dispersive medium described by the pole-residue pair model with perturbations.\nPerturbation model can be defined either directly\nthrough providing ``eps_inf_perturbation`` and ``poles_perturbation`` or via\nproviding a specific perturbation model (:class:`PermittivityPerturbation`,\n:class:`IndexPerturbation`) as ``perturbaiton_spec``.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nsubpixel : bool = True\n This value will be transferred to the resulting custom medium. That is, if ``True``, the subpixel averaging will be applied to the custom medium. The type of subpixel averaging method applied is specified in ``Simulation``'s field ``subpixel``. If the resulting medium is not a custom medium (no perturbations), this field does not have an effect.\nperturbation_spec : Union[PermittivityPerturbation, IndexPerturbation, NoneType] = None\n Specification of medium perturbation as one of predefined types.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\neps_inf : Union[PositiveFloat, Box] = 1.0\n [units = None (relative permittivity)]. Relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\npoles : Tuple[Tuple[Union[tidy3d.components.types.tidycomplex, tidy3d.components.types.ComplexNumber, autograd.tracer.Box], Union[tidy3d.components.types.tidycomplex, tidy3d.components.types.ComplexNumber, autograd.tracer.Box]], ...] = ()\n [units = (rad/sec, rad/sec)]. Tuple of complex-valued (:math:`a_i, c_i`) poles for the model.\neps_inf_perturbation : Optional[ParameterPerturbation] = None\n [units = None (relative permittivity)]. Perturbations to relative permittivity at infinite frequency (:math:`\\epsilon_\\infty`).\npoles_perturbation : Optional[Tuple[Tuple[Optional[tidy3d.components.parameter_perturbation.ParameterPerturbation], Optional[tidy3d.components.parameter_perturbation.ParameterPerturbation]], ...]] = None\n [units = (rad/sec, rad/sec)]. Perturbations to poles of the model.\n\nNotes\n-----\n\n The frequency-dependence of the complex-valued permittivity is described by:\n\n .. math::\n\n \\epsilon(\\omega) = \\epsilon_\\infty - \\sum_i\n \\left[\\frac{c_i}{j \\omega + a_i} +\n \\frac{c_i^*}{j \\omega + a_i^*}\\right]\n\nExample\n-------\n>>> from tidy3d import ParameterPerturbation, LinearHeatPerturbation\n>>> c0_perturbation = ParameterPerturbation(\n... heat=LinearHeatPerturbation(temperature_ref=300, coeff=0.0001),\n... )\n>>> pole_res = PerturbationPoleResidue(\n... eps_inf=2.0,\n... poles=[((-1+2j), (3+4j)), ((-5+6j), (7+8j))],\n... poles_perturbation=[(None, c0_perturbation), (None, None)],\n... )", "type": "object", "properties": { "attrs": { @@ -5654,7 +5654,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -6032,7 +6032,7 @@ }, "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----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\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>> c = Cylinder(center=(1,2,3), radius=2, length=5, axis=2)\n\nSee Also\n--------\n\n**Notebooks**\n\n* `THz integrated demultiplexer/filter based on a ring resonator <../../../notebooks/THzDemultiplexerFilter.html>`_\n* `Photonic crystal waveguide polarization filter <../../../notebooks/PhotonicCrystalWaveguidePolarizationFilter.html>`_", + "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----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\naxis : Literal[0, 1, 2] = 2\n Specifies dimension of the planar axis (0,1,2) -> (x,y,z).\nsidewall_angle : float = 0.0\n [units = rad]. Angle of the sidewall. ``sidewall_angle=0`` (default) specifies a vertical wall; ``0>> c = Cylinder(center=(1,2,3), radius=2, length=5, axis=2)\n\nSee Also\n--------\n\n**Notebooks**\n\n* `THz integrated demultiplexer/filter based on a ring resonator <../../../notebooks/THzDemultiplexerFilter.html>`_\n* `Photonic crystal waveguide polarization filter <../../../notebooks/PhotonicCrystalWaveguidePolarizationFilter.html>`_", "type": "object", "properties": { "attrs": { @@ -6064,8 +6064,6 @@ "title": "Sidewall angle", "description": "Angle of the sidewall. ``sidewall_angle=0`` (default) specifies a vertical wall; ``0 (x,y,z).\nsidewall_angle : ConstrainedFloatValue = 0.0\n [units = rad]. Angle of the sidewall. ``sidewall_angle=0`` (default) specifies a vertical wall; ``0>> vertices = np.array([(0,0), (1,0), (1,1)])\n>>> p = PolySlab(vertices=vertices, axis=2, slab_bounds=(-1, 1))", + "description": "Polygon extruded with optional sidewall angle along axis direction.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\naxis : Literal[0, 1, 2] = 2\n Specifies dimension of the planar axis (0,1,2) -> (x,y,z).\nsidewall_angle : float = 0.0\n [units = rad]. Angle of the sidewall. ``sidewall_angle=0`` (default) specifies a vertical wall; ``0>> vertices = np.array([(0,0), (1,0), (1,1)])\n>>> p = PolySlab(vertices=vertices, axis=2, slab_bounds=(-1, 1))", "type": "object", "properties": { "attrs": { @@ -6207,8 +6205,6 @@ "title": "Sidewall angle", "description": "Angle of the sidewall. ``sidewall_angle=0`` (default) specifies a vertical wall; ``0 (x,y,z).\nsidewall_angle : ConstrainedFloatValue = 0.0\n [units = rad]. Angle of the sidewall. ``sidewall_angle=0`` (default) specifies a vertical wall; ``0 (x,y,z).\nsidewall_angle : float = 0.0\n [units = rad]. Angle of the sidewall. ``sidewall_angle=0`` (default) specifies a vertical wall; ``0>> drude_medium = Drude(eps_inf=2.0, coeffs=[(1,2), (3,4)])\n>>> medium2d = Medium2D(ss=drude_medium, tt=drude_medium)", + "description": "2D diagonally anisotropic medium.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\nss : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the ss-component of the diagonal permittivity tensor. The ss-component refers to the in-plane dimension of the medium that is the first component in order of 'x', 'y', 'z'. If the 2D material is normal to the y-axis, for example, then this determines the xx-component of the corresponding 3D medium.\ntt : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the tt-component of the diagonal permittivity tensor. The tt-component refers to the in-plane dimension of the medium that is the second component in order of 'x', 'y', 'z'. If the 2D material is normal to the y-axis, for example, then this determines the zz-component of the corresponding 3D medium.\n\nNotes\n-----\n\n Only diagonal anisotropy is currently supported.\n\nExample\n-------\n>>> drude_medium = Drude(eps_inf=2.0, coeffs=[(1,2), (3,4)])\n>>> medium2d = Medium2D(ss=drude_medium, tt=drude_medium)", "type": "object", "properties": { "attrs": { @@ -6807,7 +6801,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -6935,7 +6929,7 @@ }, "AnisotropicMediumFromMedium2D": { "title": "AnisotropicMediumFromMedium2D", - "description": "The same as ``AnisotropicMedium``, but converted from Medium2D.\n(This class is for internal use only)\n\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : Optional[bool] = None\n This field is ignored. Please set ``allow_gain`` in each component\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\nxx : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the xx-component of the diagonal permittivity tensor.\nyy : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the yy-component of the diagonal permittivity tensor.\nzz : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the zz-component of the diagonal permittivity tensor.", + "description": "The same as ``AnisotropicMedium``, but converted from Medium2D.\n(This class is for internal use only)\n\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : Optional[bool] = None\n This field is ignored. Please set ``allow_gain`` in each component\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\nxx : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the xx-component of the diagonal permittivity tensor.\nyy : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the yy-component of the diagonal permittivity tensor.\nzz : Union[Medium, LossyMetalMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, PECMedium]\n Medium describing the zz-component of the diagonal permittivity tensor.", "type": "object", "properties": { "attrs": { @@ -7005,7 +6999,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -7177,7 +7171,7 @@ }, "ChargeConductorMedium": { "title": "ChargeConductorMedium", - "description": "Conductor medium for conduction simulations.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\nconductivity : PositiveFloat = 1\n [units = S/um]. Electric conductivity of material in units of S/um.\npermittivity : ConstrainedFloatValue = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\n\nExample\n-------\n>>> import tidy3d as td\n>>> solid = td.ChargeConductorMedium(conductivity=3)\n\nNote\n----\n A relative permittivity will be assumed 1 if no value is specified.", + "description": "Conductor medium for conduction simulations.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\npermittivity : ConstrainedFloatValue = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\nconductivity : PositiveFloat\n [units = S/um]. Electric conductivity of material in units of S/um.\n\nExample\n-------\n>>> import tidy3d as td\n>>> solid = td.ChargeConductorMedium(conductivity=3)\n\nNote\n----\n A relative permittivity will be assumed 1 if no value is specified.", "type": "object", "properties": { "attrs": { @@ -7248,7 +7242,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -7281,14 +7275,6 @@ ], "type": "string" }, - "conductivity": { - "title": "Electric conductivity", - "description": "Electric conductivity of material in units of S/um.", - "default": 1, - "units": "S/um", - "exclusiveMinimum": 0, - "type": "number" - }, "permittivity": { "title": "Permittivity", "description": "Relative permittivity.", @@ -7296,13 +7282,23 @@ "minimum": 1.0, "units": "None (relative permittivity)", "type": "number" + }, + "conductivity": { + "title": "Electric conductivity", + "description": "Electric conductivity of material in units of S/um.", + "units": "S/um", + "exclusiveMinimum": 0, + "type": "number" } }, + "required": [ + "conductivity" + ], "additionalProperties": false }, "ChargeInsulatorMedium": { "title": "ChargeInsulatorMedium", - "description": "Insulating medium. Conduction simulations will not solve for electric\npotential in a structure that has a medium with this 'charge'.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\nconductivity : PositiveFloat = 1\n [units = S/um]. Electric conductivity of material in units of S/um.\npermittivity : ConstrainedFloatValue = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\n\nExample\n-------\n>>> import tidy3d as td\n>>> solid = td.ChargeInsulatorMedium()\n>>> solid2 = td.ChargeInsulatorMedium(permittivity=1.1)\n\nNote\n----\n A relative permittivity :math:`\\varepsilon` will be assumed 1 if no value is specified.", + "description": "Insulating medium. Conduction simulations will not solve for electric\npotential in a structure that has a medium with this 'charge'.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\npermittivity : ConstrainedFloatValue = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\n\nExample\n-------\n>>> import tidy3d as td\n>>> solid = td.ChargeInsulatorMedium()\n>>> solid2 = td.ChargeInsulatorMedium(permittivity=1.1)\n\nNote\n----\n A relative permittivity :math:`\\varepsilon` will be assumed 1 if no value is specified.", "type": "object", "properties": { "attrs": { @@ -7373,7 +7369,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -7406,14 +7402,6 @@ ], "type": "string" }, - "conductivity": { - "title": "TODO MARC DECIDE VALUE conductivity", - "description": "Electric conductivity of material in units of S/um.", - "default": 1, - "units": "S/um", - "exclusiveMinimum": 0, - "type": "number" - }, "permittivity": { "title": "Permittivity", "description": "Relative permittivity.", @@ -7427,7 +7415,7 @@ }, "CaugheyThomasMobility": { "title": "CaugheyThomasMobility", - "description": "The Caughey-Thomas temperature-depedent carrier mobility model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nmu_n_min : PositiveFloat = 52.2\n Minimum electron mobility at reference temperature (300K) in cm^2/V-s. \nmu_n : PositiveFloat = 1471.0\n Reference electron mobility at reference temperature (300K) in cm^2/V-s\nmu_p_min : PositiveFloat = 44.9\n Minimum hole mobility at reference temperature (300K) in cm^2/V-s. \nmu_p : PositiveFloat = 470.5\n Reference hole mobility at reference temperature (300K) in cm^2/V-s\nexp_t_mu : float = -2.33\n exp_d_n : PositiveFloat = 0.68\n Exponent for doping dependence of electron mobility at reference temperature (300K).\nexp_d_p : PositiveFloat = 0.719\n Exponent for doping dependence of hole mobility at reference temperature (300K).\nref_N : PositiveFloat = 2.23e+17\n Reference doping at reference temperature (300K) in #/cm^3.\nexp_t_mu_min : float = -0.57\n Exponent of thermal dependence of minimum mobility.\nexp_t_d : float = 2.4\n Exponent of thermal dependence of reference doping.\nexp_t_d_exp : float = -0.146\n Exponent of thermal dependence of the doping exponent effect.\n\nNotes\n-----\n The general form of the Caughey-Thomas mobility model [1]_ is of the form:\n\n .. math::\n\n \\mu_0 = \\frac{\\mu_{max} - \\mu_{min}}{1 + \\left(N/N_{ref}\\right)^z} + \\mu_{min}\n\nwhere :math:`\\mu_0` represents the low-field mobility and :math:`N` is the total doping (acceptors + donors).\n:math:`\\mu_{max}`, :math:`\\mu_{min}`, :math:`z`, and :math:`N_{ref}` are temperature dependent,\nthe dependence being of the form\n\n.. math::\n\n \\phi = \\phi_{ref} \\left( \\frac{T}{T_{ref}}\\right)^\\alpha\n\nand :math:`T_{ref}` is taken to be 300K.\n\nThe complete form (with temperature effects) for the low-field mobility can be written as\n\n.. math::\n\n \\mu_0 = \\frac{\\mu_{max}(\\frac{T}{T_{ref}})^{\\alpha_2} - \\mu_{min}(\\frac{T}{T_{ref}})^{\\alpha_1}}{1 + \\left(N/N_{ref}(\\frac{T}{T_{ref}})^{\\alpha_3}\\right)^{\\alpha_{n,p}(\\frac{T}{T_{ref}})^{\\alpha_4}}} + \\mu_{min}(\\frac{T}{T_{ref}})^{\\alpha_1}\n\nThe following table maps the symbols used in the equations above with the names used in the code:\n\n.. list-table::\n :widths: 25 25 75\n :header-rows: 1\n\n * - Symbol\n - Parameter Name\n - Description\n * - :math:`\\mu_{min}`\n - ``mu_n_min``, ``mu_p_min``\n - Minimum low-field mobility for :math:`n` and :math:`p`\n * - :math:`\\mu_{max}`\n - ``mu_n``, ``mu_p``\n - Maximum low-field mobility for :math:`n` and :math:`p`\n * - :math:`\\alpha_1`\n - ``exp_t_mu_min``\n - Exponent for temperature dependence of the minimum mobility coefficient\n * - :math:`\\alpha_2`\n - ``exp_t_mu``\n - Exponent for temperature dependence of the maximum mobility coefficient\n * - :math:`\\alpha_{n,p}`\n - ``exp_d_p``, ``exp_d_n``\n - Exponent for doping dependence of hole mobility.\n * - :math:`\\alpha_4`\n - ``exp_t_d_exp``\n - Exponent for the temperature dependence of the exponent :math:`\\alpha_n` and :math:`\\alpha_p`\n * - :math:`N_{ref}`\n - ``ref_N``\n - Reference doping parameter\n\n\n.. [1] M. Caughey and R.E. Thomas. Carrier mobilities in silicon empirically related to doping\n and field. Proceedings of the IEEE, 55(12):2192\u20132193, December 1967\n\nWarning\n-------\nThere are some current limitations of this model:\n\n- High electric field effects not yet supported.\n- Default values are those appropriate for Silicon.", + "description": "The Caughey-Thomas temperature-dependent carrier mobility model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nmu_n_min : PositiveFloat\n Minimum electron mobility at reference temperature (300K) in cm^2/V-s. \nmu_n : PositiveFloat\n Reference electron mobility at reference temperature (300K) in cm^2/V-s\nmu_p_min : PositiveFloat\n Minimum hole mobility at reference temperature (300K) in cm^2/V-s. \nmu_p : PositiveFloat\n Reference hole mobility at reference temperature (300K) in cm^2/V-s\nexp_t_mu : float\n exp_d_n : PositiveFloat\n Exponent for doping dependence of electron mobility at reference temperature (300K).\nexp_d_p : PositiveFloat\n Exponent for doping dependence of hole mobility at reference temperature (300K).\nref_N : PositiveFloat\n Reference doping at reference temperature (300K) in #/cm^3.\nexp_t_mu_min : float\n Exponent of thermal dependence of minimum mobility.\nexp_t_d : float\n Exponent of thermal dependence of reference doping.\nexp_t_d_exp : float\n Exponent of thermal dependence of the doping exponent effect.\n\nNotes\n-----\n The general form of the Caughey-Thomas mobility model [1]_ is of the form:\n\n .. math::\n\n \\mu_0 = \\frac{\\mu_{max} - \\mu_{min}}{1 + \\left(N/N_{ref}\\right)^z} + \\mu_{min}\n\nwhere :math:`\\mu_0` represents the low-field mobility and :math:`N` is the total doping (acceptors + donors).\n:math:`\\mu_{max}`, :math:`\\mu_{min}`, :math:`z`, and :math:`N_{ref}` are temperature dependent,\nthe dependence being of the form\n\n.. math::\n\n \\phi = \\phi_{ref} \\left( \\frac{T}{T_{ref}}\\right)^\\alpha\n\nand :math:`T_{ref}` is taken to be 300K.\n\nThe complete form (with temperature effects) for the low-field mobility can be written as\n\n.. math::\n\n \\mu_0 = \\frac{\\mu_{max}(\\frac{T}{T_{ref}})^{\\alpha_2} - \\mu_{min}(\\frac{T}{T_{ref}})^{\\alpha_1}}{1 + \\left(N/N_{ref}(\\frac{T}{T_{ref}})^{\\alpha_3}\\right)^{\\alpha_{n,p}(\\frac{T}{T_{ref}})^{\\alpha_4}}} + \\mu_{min}(\\frac{T}{T_{ref}})^{\\alpha_1}\n\nThe following table maps the symbols used in the equations above with the names used in the code:\n\n.. list-table::\n :widths: 25 25 75\n :header-rows: 1\n\n * - Symbol\n - Parameter Name\n - Description\n * - :math:`\\mu_{min}`\n - ``mu_n_min``, ``mu_p_min``\n - Minimum low-field mobility for :math:`n` and :math:`p`\n * - :math:`\\mu_{max}`\n - ``mu_n``, ``mu_p``\n - Maximum low-field mobility for :math:`n` and :math:`p`\n * - :math:`\\alpha_1`\n - ``exp_t_mu_min``\n - Exponent for temperature dependence of the minimum mobility coefficient\n * - :math:`\\alpha_2`\n - ``exp_t_mu``\n - Exponent for temperature dependence of the maximum mobility coefficient\n * - :math:`\\alpha_{n,p}`\n - ``exp_d_p``, ``exp_d_n``\n - Exponent for doping dependence of hole mobility.\n * - :math:`\\alpha_4`\n - ``exp_t_d_exp``\n - Exponent for the temperature dependence of the exponent :math:`\\alpha_n` and :math:`\\alpha_p`\n * - :math:`N_{ref}`\n - ``ref_N``\n - Reference doping parameter\n\n\n.. [1] M. Caughey and R.E. Thomas. Carrier mobilities in silicon empirically related to doping\n and field. Proceedings of the IEEE, 55(12):2192\u20132193, December 1967\n\nExample\n-------\n >>> import tidy3d as td\n >>> default_Si = td.CaugheyThomasMobility(\n ... mu_n_min=52.2,\n ... mu_n=1471.0,\n ... mu_p_min=44.9,\n ... mu_p=470.5,\n ... exp_t_mu=-2.33,\n ... exp_d_n=0.68,\n ... exp_d_p=0.719,\n ... ref_N=2.23e17,\n ... exp_t_mu_min=-0.57,\n ... exp_t_d=2.4,\n ... exp_t_d_exp=-0.146,\n ... )\n\n\nWarning\n-------\nThere are some current limitations of this model:\n\n- High electric field effects not yet supported.", "type": "object", "properties": { "attrs": { @@ -7439,73 +7427,62 @@ "mu_n_min": { "title": "$\\mu_{min}$ Minimum electron mobility", "description": "Minimum electron mobility at reference temperature (300K) in cm^2/V-s. ", - "default": 52.2, "exclusiveMinimum": 0, "type": "number" }, "mu_n": { "title": "Electron reference mobility", "description": "Reference electron mobility at reference temperature (300K) in cm^2/V-s", - "default": 1471.0, "exclusiveMinimum": 0, "type": "number" }, "mu_p_min": { "title": "Minimum hole mobility", "description": "Minimum hole mobility at reference temperature (300K) in cm^2/V-s. ", - "default": 44.9, "exclusiveMinimum": 0, "type": "number" }, "mu_p": { "title": "Hole reference mobility", "description": "Reference hole mobility at reference temperature (300K) in cm^2/V-s", - "default": 470.5, "exclusiveMinimum": 0, "type": "number" }, "exp_t_mu": { "title": "Exponent for temperature dependent behavior of reference mobility", - "default": -2.33, "type": "number" }, "exp_d_n": { "title": "Exponent for doping dependence of electron mobility.", "description": "Exponent for doping dependence of electron mobility at reference temperature (300K).", - "default": 0.68, "exclusiveMinimum": 0, "type": "number" }, "exp_d_p": { "title": "Exponent for doping dependence of hole mobility.", "description": "Exponent for doping dependence of hole mobility at reference temperature (300K).", - "default": 0.719, "exclusiveMinimum": 0, "type": "number" }, "ref_N": { "title": "Reference doping", "description": "Reference doping at reference temperature (300K) in #/cm^3.", - "default": 2.23e+17, "exclusiveMinimum": 0, "type": "number" }, "exp_t_mu_min": { "title": "Exponent of thermal dependence of minimum mobility.", "description": "Exponent of thermal dependence of minimum mobility.", - "default": -0.57, "type": "number" }, "exp_t_d": { "title": "Exponent of thermal dependence of reference doping.", "description": "Exponent of thermal dependence of reference doping.", - "default": 2.4, "type": "number" }, "exp_t_d_exp": { "title": "Exponent of thermal dependence of the doping exponent effect.", "description": "Exponent of thermal dependence of the doping exponent effect.", - "default": -0.146, "type": "number" }, "type": { @@ -7517,11 +7494,64 @@ "type": "string" } }, + "required": [ + "mu_n_min", + "mu_n", + "mu_p_min", + "mu_p", + "exp_t_mu", + "exp_d_n", + "exp_d_p", + "ref_N", + "exp_t_mu_min", + "exp_t_d", + "exp_t_d_exp" + ], + "additionalProperties": false + }, + "ConstantMobilityModel": { + "title": "ConstantMobilityModel", + "description": "Constant mobility model\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nmu_n : NonNegativeFloat\n [units = cm\u00b2/V-s]. Electron mobility\nmu_p : NonNegativeFloat\n [units = cm\u00b2/V-s]. Hole mobility\n\nExample\n-------\n>>> import tidy3d as td\n>>> mobility_model = td.ConstantMobilityModel(mu_n=1500, mu_p=500)", + "type": "object", + "properties": { + "attrs": { + "title": "Attributes", + "description": "Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.", + "default": {}, + "type": "object" + }, + "mu_n": { + "title": "Electron mobility", + "description": "Electron mobility", + "units": "cm\u00b2/V-s", + "minimum": 0, + "type": "number" + }, + "mu_p": { + "title": "Hole mobility", + "description": "Hole mobility", + "units": "cm\u00b2/V-s", + "minimum": 0, + "type": "number" + }, + "type": { + "title": "Type", + "default": "ConstantMobilityModel", + "enum": [ + "ConstantMobilityModel" + ], + "type": "string" + } + }, + "required": [ + "mu_n", + "mu_p" + ], "additionalProperties": false }, "AugerRecombination": { "title": "AugerRecombination", - "description": "This class defines the parameters for the Auger recombination model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nc_n : PositiveFloat = 2.8e-31\n Constant for electrons in cm^6/s\nc_p : PositiveFloat = 9.9e-32\n Constant for holes in cm^6/s\n\nNotes\n-----\n\n The Auger recombination rate ``R_A`` is primarily defined by the electrons and holes Auger recombination\n coefficients, :math:`C_n` and :math:`C_p`, respectively.\n\n .. math::\n\n R_A = \\left( C_n n + C_p p \\right) \\left( np - n_0 p_0 \\right)\n\nNote\n-----\n The default parameters are those appropriate for Silicon.", + "description": "Parameters for the Auger recombination model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nc_n : PositiveFloat\n Constant for electrons in cm^6/s\nc_p : PositiveFloat\n Constant for holes in cm^6/s\n\nNotes\n-----\n\n The Auger recombination rate ``R_A`` is primarily defined by the electrons and holes Auger recombination\n coefficients, :math:`C_n` and :math:`C_p`, respectively.\n\n .. math::\n\n R_A = \\left( C_n n + C_p p \\right) \\left( np - n_0 p_0 \\right)\n\nExample\n-------\n >>> import tidy3d as td\n >>> default_Si = td.AugerRecombination(\n ... c_n=2.8e-31,\n ... c_p=9.9e-32,\n ... )", "type": "object", "properties": { "attrs": { @@ -7533,14 +7563,12 @@ "c_n": { "title": "Constant for electrons", "description": "Constant for electrons in cm^6/s", - "default": 2.8e-31, "exclusiveMinimum": 0, "type": "number" }, "c_p": { "title": "Constant for holes", "description": "Constant for holes in cm^6/s", - "default": 9.9e-32, "exclusiveMinimum": 0, "type": "number" }, @@ -7553,11 +7581,15 @@ "type": "string" } }, + "required": [ + "c_n", + "c_p" + ], "additionalProperties": false }, "RadiativeRecombination": { "title": "RadiativeRecombination", - "description": "This class is used to define the parameters for the radiative recombination model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nr_const : float = 1.6e-14\n Radiation constant in cm^3/s\n\nNotes\n-----\n\n This is a direct recombination model primarily defined by a radiative recombination coefficient :math:`R_{\\text{rad}}`.\n\n .. math::\n\n R_{\\text{rad}} = C \\left( np - n_0 p_0 \\right)\n\nNote\n----\n The default values are those appropriate for Silicon.", + "description": "Defines the parameters for the radiative recombination model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nr_const : float\n Radiation constant in cm^3/s\n\nNotes\n-----\n\n This is a direct recombination model primarily defined by a radiative recombination coefficient :math:`R_{\\text{rad}}`.\n\n .. math::\n\n R_{\\text{rad}} = C \\left( np - n_0 p_0 \\right)\n\nExample\n-------\n >>> import tidy3d as td\n >>> default_Si = td.RadiativeRecombination(\n ... r_const=1.6e-14\n ... )", "type": "object", "properties": { "attrs": { @@ -7569,7 +7601,6 @@ "r_const": { "title": "Radiation constant in cm^3/s", "description": "Radiation constant in cm^3/s", - "default": 1.6e-14, "type": "number" }, "type": { @@ -7581,11 +7612,14 @@ "type": "string" } }, + "required": [ + "r_const" + ], "additionalProperties": false }, "ShockleyReedHallRecombination": { "title": "ShockleyReedHallRecombination", - "description": "This class defines the parameters for the Shockley-Reed-Hall (SRH) recombination model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\ntau_n : PositiveFloat = 3.3e-06\n Electron lifetime.\ntau_p : PositiveFloat = 4e-06\n Hole lifetime.\n\nNotes\n-----\n\n The recombination rate parameter from this model is defined from [1]_ as follows:\n\n .. math::\n\n R_{SRH} = \\frac{n p - n_0 p_0}{\\tau_p \\left(n + \\sqrt{n_0 p_0}\\right) + \\tau_n \\left(p + \\sqrt{n_0 p_0}\\right)}.\n\n Note that the electron and holes densities are defined within the :class:`SemiconductorMedium`. The electron\n lifetime :math:`\\tau_n` and hole lifetimes :math:`\\tau_p` need to be defined.\n\n\n .. [1] Schenk. A model for the field and temperature dependence of shockley-read-hall\n lifetimes in silicon. Solid-State Electronics, 35:1585\u20131596, 1992.\n\n\nNote\n----\nImportant considerations when using this model:\n\n- Currently, lifetimes are considered constant (not dependent on temperature or doping).\n- This model represents mid-gap traps Shockley-Reed-Hall recombination.\n- Default values are those appropriate for Silicon.", + "description": "Defines the parameters for the Shockley-Reed-Hall (SRH) recombination model.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\ntau_n : PositiveFloat\n Electron lifetime in seconds. TODOMARCCHECK\ntau_p : PositiveFloat\n Hole lifetime in seconds. TODOMARCCHECK.\n\nNotes\n-----\n\n The recombination rate parameter from this model is defined from [1]_ as follows:\n\n .. math::\n\n R_{SRH} = \\frac{n p - n_0 p_0}{\\tau_p \\left(n + \\sqrt{n_0 p_0}\\right) + \\tau_n \\left(p + \\sqrt{n_0 p_0}\\right)}.\n\n Note that the electron and holes densities are defined within the :class:`SemiconductorMedium`. The electron\n lifetime :math:`\\tau_n` and hole lifetimes :math:`\\tau_p` need to be defined.\n\n\n .. [1] Schenk. A model for the field and temperature dependence of shockley-read-hall\n lifetimes in silicon. Solid-State Electronics, 35:1585\u20131596, 1992.\n\nExample\n-------\n >>> import tidy3d as td\n >>> default_Si = td.ShockleyReedHallRecombination(\n ... tau_n=3.3e-6,\n ... tau_p=4e-6,\n ... )\n\nNote\n----\nImportant considerations when using this model:\n\n- Currently, lifetimes are considered constant (not dependent on temperature or doping).\n- This model represents mid-gap traps Shockley-Reed-Hall recombination.", "type": "object", "properties": { "attrs": { @@ -7595,16 +7629,14 @@ "type": "object" }, "tau_n": { - "title": "Electron lifetime.", - "description": "Electron lifetime.", - "default": 3.3e-06, + "title": "Electron lifetime", + "description": "Electron lifetime in seconds. TODOMARCCHECK", "exclusiveMinimum": 0, "type": "number" }, "tau_p": { - "title": "Hole lifetime.", - "description": "Hole lifetime.", - "default": 4e-06, + "title": "Hole lifetime", + "description": "Hole lifetime in seconds. TODOMARCCHECK.", "exclusiveMinimum": 0, "type": "number" }, @@ -7617,11 +7649,15 @@ "type": "string" } }, + "required": [ + "tau_n", + "tau_p" + ], "additionalProperties": false }, "SlotboomBandGapNarrowing": { "title": "SlotboomBandGapNarrowing", - "description": "This class specifies the parameters for the Slotboom model for band-gap narrowing.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nv1 : PositiveFloat = 0.00692\n [units = V]. V1 parameter in V\nn2 : PositiveFloat = 1.3e+17\n n2 parameter in cm^(-3)\nc2 : float = 0.5\n c2 parameter\n\nNotes\n------\n The Slotboom band-gap narrowing model :math:`\\Delta E_G` is discussed in [1]_ as follows:\n\n .. math::\n\n \\Delta E_G = V_{1,bgn} \\left( \\ln \\left( \\frac{N_{tot}}{N_{2,bgn}} \\right)\n + \\sqrt{\\left( \\ln \\left( \\frac{N_{tot}}{N_{2,bgn}} \\right) \\right)^2 + C_{2,bgn}} \\right)\n \\quad \\text{if} \\quad N_{tot} \\geq 10^{15} \\text{cm}^{-3},\n\n \\Delta E_G = 0 \\quad \\text{if} \\quad N_{tot} < 10^{15} \\text{cm}^{-3}.\n\n Note that :math:`N_{tot}` is the total doping as defined within a :class:`SemiconductorMedium`.\n\n TODO define are the other parameters\n\n .. [1] 'UNIFIED APPARENT BANDGAP NARROWING IN n- AND p-TYPE SILICON'\n Solid-State Electronics Vol. 35, No. 2, pp. 125-129, 1992", + "description": "Parameters for the Slotboom model for band-gap narrowing.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nv1 : PositiveFloat\n [units = V]. $V_{1,bgn}$ parameter\nn2 : PositiveFloat\n [units = 1/cm^3]. $N_{2,bgn}$ parameter\nc2 : float\n $C_{2,bgn}$ parameter\nmin_N : NonNegativeFloat\n [units = 1/cm^3]. Bandgap narrowing is applied at location where total doping is higher than 'min_N'.\n\nNotes\n------\n The Slotboom band-gap narrowing :math:`\\Delta E_G` model is discussed in [1]_ as follows:\n\n .. math::\n\n \\Delta E_G = V_{1,bgn} \\left( \\ln \\left( \\frac{N_{tot}}{N_{2,bgn}} \\right)\n + \\sqrt{\\left( \\ln \\left( \\frac{N_{tot}}{N_{2,bgn}} \\right) \\right)^2 + C_{2,bgn}} \\right)\n \\quad \\text{if} \\quad N_{tot} \\geq 10^{15} \\text{cm}^{-3},\n\n \\Delta E_G = 0 \\quad \\text{if} \\quad N_{tot} < 10^{15} \\text{cm}^{-3}.\n\n Note that :math:`N_{tot}` is the total doping as defined within a :class:`SemiconductorMedium`.\n\n Example\n -------\n >>> import tidy3d as td\n >>> default_Si = td.SlotboomBandGapNarrowing(\n ... v1=6.92 * 1e-3,\n ... n2=1.3e17,\n ... c2=0.5,\n ... )\n\n .. [1] 'UNIFIED APPARENT BANDGAP NARROWING IN n- AND p-TYPE SILICON' Solid-State Electronics Vol. 35, No. 2, pp. 125-129, 1992", "type": "object", "properties": { "attrs": { @@ -7631,24 +7667,29 @@ "type": "object" }, "v1": { - "title": "V1 parameter", - "description": "V1 parameter in V", - "default": 0.00692, + "title": "$V_{1,bgn}$ parameter", + "description": "$V_{1,bgn}$ parameter", "units": "V", "exclusiveMinimum": 0, "type": "number" }, "n2": { - "title": "n2 parameter", - "description": "n2 parameter in cm^(-3)", - "default": 1.3e+17, + "title": "$N_{2,bgn}$ parameter", + "description": "$N_{2,bgn}$ parameter", + "units": "1/cm^3", "exclusiveMinimum": 0, "type": "number" }, "c2": { - "title": "c2 parameter", - "description": "c2 parameter", - "default": 0.5, + "title": "$C_{2,bgn}$ parameter", + "description": "$C_{2,bgn}$ parameter", + "type": "number" + }, + "min_N": { + "title": "Minimum total doping", + "description": "Bandgap narrowing is applied at location where total doping is higher than 'min_N'.", + "units": "1/cm^3", + "minimum": 0, "type": "number" }, "type": { @@ -7660,11 +7701,17 @@ "type": "string" } }, + "required": [ + "v1", + "n2", + "c2", + "min_N" + ], "additionalProperties": false }, "ConstantDoping": { "title": "ConstantDoping", - "description": "This class sets constant doping :math:`N` in the specified box with a :parameter`size` and :parameter:`concentration`.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\ncenter : Union[tuple[Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box]], Box] = (0.0, 0.0, 0.0)\n [units = um]. Center of object in x, y, and z.\nsize : Union[tuple[Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box]], Box] = (1, 1, 1)\n [units = um]. Size in x, y, and z directions.\nbox_coords : Optional[Tuple[Tuple[float, float, float], Tuple[float, float, float]]] = None\n \nconcentration : NonNegativeFloat = 0\n Doping concentration density in #/cm^3.\n\nExample\n-------\n>>> import tidy3d as td\n>>> box_coords = [\n... [-1, -1, -1],\n... [1, 1, 1]\n... ]\n>>> constant_box1 = td.ConstantDoping(center=(0, 0, 0), size(2, 2, 2), concentration=1e18)\n>>> constant_box2 = td.ConstantDoping(box_coords=box_coords, concentration=1e18)", + "description": "Sets constant doping :math:`N` in the specified box with a :parameter`size` and :parameter:`concentration`.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\ncenter : Union[tuple[Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box]], Box] = (0.0, 0.0, 0.0)\n [units = um]. Center of object in x, y, and z.\nsize : Union[tuple[Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box]], Box]\n [units = um]. Size in x, y, and z directions.\nconcentration : NonNegativeFloat = 0\n [units = 1/cm^3]. Doping concentration density in #/cm^3.\n\nFor translationally invariant behavior in one dimension, the box must have infinite size in the\nhomogenous (invariant) direction.\n\nExample\n-------\n>>> import tidy3d as td\n>>> box_coords = [\n... [-1, -1, -1],\n... [1, 1, 1]\n... ]\n>>> constant_box1 = td.ConstantDoping(center=(0, 0, 0), size=(2, 2, 2), concentration=1e18)\n>>> constant_box2 = td.ConstantDoping.from_bounds(rmin=box_coords[0], rmax=box_coords[1], concentration=1e18)", "type": "object", "properties": { "attrs": { @@ -7740,11 +7787,6 @@ "size": { "title": "Size", "description": "Size in x, y, and z directions.", - "default": [ - 1, - 1, - 1 - ], "units": "um", "anyOf": [ { @@ -7796,59 +7838,23 @@ } ] }, - "box_coords": { - "title": "Doping box coordinates", - "type": "array", - "minItems": 2, - "maxItems": 2, - "items": [ - { - "type": "array", - "minItems": 3, - "maxItems": 3, - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ] - }, - { - "type": "array", - "minItems": 3, - "maxItems": 3, - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ] - } - ] - }, "concentration": { "title": "Doping concentration density.", "description": "Doping concentration density in #/cm^3.", "default": 0, + "units": "1/cm^3", "minimum": 0, "type": "number" } }, + "required": [ + "size" + ], "additionalProperties": false }, "GaussianDoping": { "title": "GaussianDoping", - "description": "This class sets a gaussian doping in the specified box.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\ncenter : Union[tuple[Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box]], Box] = (0.0, 0.0, 0.0)\n [units = um]. Center of object in x, y, and z.\nsize : Union[tuple[Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box]], Box] = (1, 1, 1)\n [units = um]. Size in x, y, and z directions.\nbox_coords : Optional[Tuple[Tuple[float, float, float], Tuple[float, float, float]]] = None\n \nref_con : PositiveFloat = 1000000000000000.0\n Reference concentration. This is the minimum concentration in the box and it is attained at the edges/faces of the box.\nconcentration : PositiveFloat\n The concentration at the center of the box.\nwidth : PositiveFloat\n Width of the gaussian. The concentration will transition from 'concentration' at the center of the box to 'ref_con' at the edge/face of the box in a distance equal to 'width'. \nsource : str = xmin\n Specifies the side of the box acting as the source, i.e., the face specified does not have a gaussian evolution normal to it, instead the concentration is constant from this face. Accepted values for 'source' are ['xmin', 'xmax', 'ymin', 'ymax', 'zmin', 'zmax']\n\nNotes\n-----\nThe Gaussian doping concentration :math:`N` is defined in the following manner:\n- :math:`N=:math:`N_{\\text{max}` at locations more than :math:`width` um away from the sides of the box.\n- :math:`N=N_{\\text{ref}` at location on the box sides.\n- a Gaussian variation between :math:`N_{\\text{max}` and :math:`N_{\\text{ref}` at locations less than ``width`` um away from the sides.\n\nBy definition, all sides of the box will have concentration :math:`N_{\\text{ref}` (except the side specified\nas source) and the center of the box (``width`` away from the box sides) will have a concentration\n:math:`N_{\\text{max}`.\n\n.. math::\n\n N = \\{N_{\\text{max}}\\} \\exp \\left[\n - \\ln \\left( \\frac{\\{N_{\\text{max}}\\}}{\\{N_{\\text{ref}}\\}} \\right)\n \\left( \\frac{(x|y|z) - \\{(x|y|z)_{\\text{box}}\\}}{\\{\\text{width}\\}} \\right)^2\n \\right]\n\nExample\n-------\n>>> import tidy3d as td\n>>> box_coords = [\n... [-1, -1, -1],\n... [1, 1, 1]\n... ]\n>>> gaussian_box1 = td.GaussianDoping(\n... center=(0, 0, 0),\n... size(2, 2, 2),\n... concentration=1e18,\n... width=0.1,\n... source=\"xmin\"\n... )\n>>> gaussian_box2 = td.GaussianDoping(\n... box_coords=box_coords,\n... concentration=1e18,\n... width=0.1,\n... source=\"xmin\"\n... )", + "description": "Sets a gaussian doping in the specified box.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\ncenter : Union[tuple[Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box], Union[float, autograd.tracer.Box]], Box] = (0.0, 0.0, 0.0)\n [units = um]. Center of object in x, y, and z.\nsize : Union[tuple[Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box], Union[pydantic.v1.types.NonNegativeFloat, autograd.tracer.Box]], Box]\n [units = um]. Size in x, y, and z directions.\nref_con : PositiveFloat\n Reference concentration. This is the minimum concentration in the box and it is attained at the edges/faces of the box.\nconcentration : PositiveFloat\n The concentration at the center of the box.\nwidth : PositiveFloat\n Width of the gaussian. The concentration will transition from 'concentration' at the center of the box to 'ref_con' at the edge/face of the box in a distance equal to 'width'. \nsource : str = xmin\n Specifies the side of the box acting as the source, i.e., the face specified does not have a gaussian evolution normal to it, instead the concentration is constant from this face. Accepted values for 'source' are ['xmin', 'xmax', 'ymin', 'ymax', 'zmin', 'zmax']\n\nFor translationally invariant behavior in one dimension, the box must have infinite size in the\nhomogenous (invariant) direction.\n\nNotes\n-----\nThe Gaussian doping concentration :math:`N` is defined in the following manner:\n\n- :math:`N=N_{\\text{max}}` at locations more than :math:``width`` um away from the sides of the box.\n- :math:`N=N_{\\text{ref}}` at location on the box sides.\n- a Gaussian variation between :math:`N_{\\text{max}}` and :math:`N_{\\text{ref}}` at locations less than ``width``\num away from the sides.\n\nBy definition, all sides of the box will have concentration :math:`N_{\\text{ref}}` (except the side specified\nas source) and the center of the box (``width`` away from the box sides) will have a concentration\n:math:`N_{\\text{max}}`.\n\n.. math::\n\n N = \\{N_{\\text{max}}\\} \\exp \\left[\n - \\ln \\left( \\frac{\\{N_{\\text{max}}\\}}{\\{N_{\\text{ref}}\\}} \\right)\n \\left( \\frac{(x|y|z) - \\{(x|y|z)_{\\text{box}}\\}}{\\text{width}} \\right)^2\n \\right]\n\nExample\n-------\n>>> import tidy3d as td\n>>> box_coords = [\n... [-1, -1, -1],\n... [1, 1, 1]\n... ]\n>>> gaussian_box1 = td.GaussianDoping(\n... center=(0, 0, 0),\n... size=(2, 2, 2),\n... ref_con=1e15,\n... concentration=1e18,\n... width=0.1,\n... source=\"xmin\"\n... )\n>>> gaussian_box2 = td.GaussianDoping.from_bounds(\n... rmin=box_coords[0],\n... rmax=box_coords[1],\n... ref_con=1e15,\n... concentration=1e18,\n... width=0.1,\n... source=\"xmin\"\n... )", "type": "object", "properties": { "attrs": { @@ -7924,11 +7930,6 @@ "size": { "title": "Size", "description": "Size in x, y, and z directions.", - "default": [ - 1, - 1, - 1 - ], "units": "um", "anyOf": [ { @@ -7980,50 +7981,9 @@ } ] }, - "box_coords": { - "title": "Doping box coordinates", - "type": "array", - "minItems": 2, - "maxItems": 2, - "items": [ - { - "type": "array", - "minItems": 3, - "maxItems": 3, - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ] - }, - { - "type": "array", - "minItems": 3, - "maxItems": 3, - "items": [ - { - "type": "number" - }, - { - "type": "number" - }, - { - "type": "number" - } - ] - } - ] - }, "ref_con": { "title": "Reference concentration.", "description": "Reference concentration. This is the minimum concentration in the box and it is attained at the edges/faces of the box.", - "default": 1000000000000000.0, "exclusiveMinimum": 0, "type": "number" }, @@ -8047,6 +8007,8 @@ } }, "required": [ + "size", + "ref_con", "concentration", "width" ], @@ -8054,7 +8016,7 @@ }, "SemiconductorMedium": { "title": "SemiconductorMedium", - "description": "This class is used to define semiconductors.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\nconductivity : PositiveFloat = 1\n [units = S/um]. Electric conductivity of material in units of S/um.\npermittivity : ConstrainedFloatValue = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\nN_c : PositiveFloat = 2.86e+19\n [units = cm^(-3)]. $N_c$ Effective density of states in the conduction band.\nN_v : PositiveFloat = 3.1e+19\n [units = cm^(-3)]. $N_v$ Effective density of states in the valence band.\nE_g : PositiveFloat = 1.11\n [units = eV]. Band-gap energy\nmobility : CaugheyThomasMobility = CaugheyThomasMobility(attrs={}, mu_n_min=52.2, mu_n=1471.0, mu_p_min=44.9, mu_p=470.5, exp_t_mu=-2.33, exp_d_n=0.68, exp_d_p=0.719, ref_N=2.23e+17, exp_t_mu_min=-0.57, exp_t_d=2.4, exp_t_d_exp=-0.146, type='CaugheyThomasMobility')\n Mobility model\nR : Tuple[Union[AugerRecombination, RadiativeRecombination, ShockleyReedHallRecombination], ...] = tuple((ShockleyReedHallRecombination(attrs={},, tau_n=3.3e-06,, tau_p=4e-06,, type='ShockleyReedHallRecombination'),, AugerRecombination(attrs={},, c_n=2.8e-31,, c_p=9.9e-32,, type='AugerRecombination'),, RadiativeRecombination(attrs={},, r_const=1.6e-14,, type='RadiativeRecombination')))\n Array containing the R models to be applied to the material.\ndelta_E_g : SlotboomBandGapNarrowing = SlotboomBandGapNarrowing(attrs={}, v1=0.00692, n2=1.3e+17, c2=0.5, type='SlotboomBandGapNarrowing')\n Bandgap narrowing model.\nN_a : Union[NonNegativeFloat, SpatialDataArray, Tuple[Union[tidy3d.components.tcad.doping.ConstantDoping, tidy3d.components.tcad.doping.GaussianDoping], ...]] = 0\n [units = 1/cm^3]. Units of 1/cm^3\nN_d : Union[NonNegativeFloat, SpatialDataArray, Tuple[Union[tidy3d.components.tcad.doping.ConstantDoping, tidy3d.components.tcad.doping.GaussianDoping], ...]] = 0\n [units = 1/cm^3]. Units of 1/cm^3\n\nNotes\n-----\nSemiconductors are associated with ``CHARGE`` simulations. During these simulations\nthe Drift-Diffusion (DD) equations will be solved in semiconductors. In what follows, a\ndescription of the assumptions taken and its limitations is put forward.\n\nThe iso-thermal DD equations are summarized here\n\n.. math::\n\n \\begin{equation}\n - \\nabla \\cdot \\left( \\varepsilon_0 \\varepsilon_r \\nabla \\psi \\right) = q\n \\left( p - n + N_d^+ - N_a^- \\right)\n \\end{equation}\n\n.. math::\n\n \\begin{equation}\n q \\frac{\\partial n}{\\partial t} = \\nabla \\cdot \\mathbf{J_n} - qR\n \\end{equation}\n\n.. math::\n\n \\begin{equation}\n q \\frac{\\partial p}{\\partial t} = -\\nabla \\cdot \\mathbf{J_p} - qR\n \\end{equation}\n\nAs well as iso-thermal, the system is considered to be at :math:`T=300`. This restriction will\nbe removed in future releases.\n\nThe above system requires the definition of the flux functions (free carrier current density), :math:`\\mathbf{J_n}` and\n:math:`\\mathbf{J_p}`. We consider the usual form\n\n.. math::\n\n \\begin{equation}\n \\mathbf{J_n} = q \\mu_n \\mathbf{F_{n}} + q D_n \\nabla n\n \\end{equation}\n\n\n.. math::\n\n \\begin{equation}\n \\mathbf{J_p} = q \\mu_p \\mathbf{F_{p}} - q D_p \\nabla p\n \\end{equation}\n\n\nwhere we simplify the effective field defined in [1]_ to\n\n.. math::\n\n \\begin{equation}\n \\mathbf{F_{n,p}} = \\nabla \\psi\n \\end{equation}\n\ni.e., we are not considering the effect of band-gab narrowing and degeneracy on the effective\nelectric field :math:`\\mathbf{F_{n,p}}`. This is a good approximation for non-degenerate semiconductors.\n\nLet's explore how material properties are defined as class parameters or other classes.\n\n .. list-table::\n :widths: 25 25 75\n :header-rows: 1\n\n * - Symbol\n - Parameter Name\n - Description\n * - :math:`N_a`\n - ``N_a``\n - Ionized acceptors density\n * - :math:`N_d`\n - ``N_d``\n - Ionized donors density\n * - :math:`N_c`\n - ``N_c``\n - Effective density of states in the conduction band.\n * - :math:`N_v`\n - ``N_v``\n - Effective density of states in valence band.\n * - :math:`R`\n - ``R``\n - Generation-Recombination term.\n * - :math:`E_g`\n - ``E_g``\n - Bandgap Energy.\n * - :math:`\\Delta E_g`\n - ``delta_E_g``\n - Bandgap Narrowing.\n * - :math:`\\sigma`\n - ``conductivity``\n - Electrical conductivity.\n * - :math:`\\varepsilon_r`\n - ``permittivity``\n - Relative permittivity.\n * - :math:`q`\n - ``tidy3d.constants.Q_e``\n - Fundamental electron charge.\n\nWarning\n-------\n Current limitations of the formulation include:\n\n - Boltzmann statistics are supported\n - Iso-thermal equations with :math:`T=300K`\n - Steady state only\n - Dopants are considered to be fully ionized\n\nNote\n----\n - Both :math:`N_a` and :math:`N_d` can be either a positive number or an ``xarray.DataArray``.\n - Default values for parameters and models are those appropriate for Silicon.\n\n\n.. [1] Schroeder, D., T. Ostermann, and O. Kalz. \"Comparison of transport models far the simulation of degenerate semiconductors.\" Semiconductor science and technology 9.4 (1994): 364.", + "description": "This class is used to define semiconductors.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Optional unique name for medium.\nfrequency_range : Optional[Tuple[float, float]] = None\n [units = (Hz, Hz)]. Optional range of validity for the medium.\nallow_gain : bool = False\n Allow the medium to be active. Caution: simulations with a gain medium are unstable, and are likely to diverge.Simulations where 'allow_gain' is set to 'True' will still be charged even if diverged. Monitor data up to the divergence point will still be returned and can be useful in some cases.\nnonlinear_spec : Union[NonlinearSpec, NonlinearSusceptibility] = None\n Nonlinear spec applied on top of the base medium properties.\nmodulation_spec : Optional[ModulationSpec] = None\n Modulation spec applied on top of the base medium properties.\nviz_spec : Optional[VisualizationSpec] = None\n Plotting specification for visualizing medium.\nheat_spec : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.\npermittivity : ConstrainedFloatValue = 1.0\n [units = None (relative permittivity)]. Relative permittivity.\nN_c : PositiveFloat\n [units = cm^(-3)]. $N_c$ Effective density of states in the conduction band.\nN_v : PositiveFloat\n [units = cm^(-3)]. $N_v$ Effective density of states in the valence band.\nE_g : PositiveFloat\n [units = eV]. Band-gap energy\nmobility : Union[CaugheyThomasMobility, ConstantMobilityModel]\n Mobility model\nR : Tuple[Union[AugerRecombination, RadiativeRecombination, ShockleyReedHallRecombination], ...]\n Array containing the R models to be applied to the material.\ndelta_E_g : SlotboomBandGapNarrowing\n Bandgap narrowing model.\nN_a : Union[NonNegativeFloat, SpatialDataArray, Tuple[Union[tidy3d.components.tcad.doping.ConstantDoping, tidy3d.components.tcad.doping.GaussianDoping], ...]] = 0\n [units = 1/cm^3]. Units of 1/cm^3\nN_d : Union[NonNegativeFloat, SpatialDataArray, Tuple[Union[tidy3d.components.tcad.doping.ConstantDoping, tidy3d.components.tcad.doping.GaussianDoping], ...]] = 0\n [units = 1/cm^3]. Units of 1/cm^3\n\nNotes\n-----\nSemiconductors are associated with ``Charge`` simulations. During these simulations\nthe Drift-Diffusion (DD) equations will be solved in semiconductors. In what follows, a\ndescription of the assumptions taken and its limitations is put forward.\n\nThe iso-thermal DD equations are summarized here\n\n.. math::\n\n \\begin{equation}\n - \\nabla \\cdot \\left( \\varepsilon_0 \\varepsilon_r \\nabla \\psi \\right) = q\n \\left( p - n + N_d^+ - N_a^- \\right)\n \\end{equation}\n\n.. math::\n\n \\begin{equation}\n q \\frac{\\partial n}{\\partial t} = \\nabla \\cdot \\mathbf{J_n} - qR\n \\end{equation}\n\n.. math::\n\n \\begin{equation}\n q \\frac{\\partial p}{\\partial t} = -\\nabla \\cdot \\mathbf{J_p} - qR\n \\end{equation}\n\nAs well as iso-thermal, the system is considered to be at :math:`T=300`. This restriction will\nbe removed in future releases.\n\nThe above system requires the definition of the flux functions (free carrier current density), :math:`\\mathbf{J_n}` and\n:math:`\\mathbf{J_p}`. We consider the usual form\n\n.. math::\n\n \\begin{equation}\n \\mathbf{J_n} = q \\mu_n \\mathbf{F_{n}} + q D_n \\nabla n\n \\end{equation}\n\n\n.. math::\n\n \\begin{equation}\n \\mathbf{J_p} = q \\mu_p \\mathbf{F_{p}} - q D_p \\nabla p\n \\end{equation}\n\n\nwhere we simplify the effective field defined in [1]_ to\n\n.. math::\n\n \\begin{equation}\n \\mathbf{F_{n,p}} = \\nabla \\psi\n \\end{equation}\n\ni.e., we are not considering the effect of band-gab narrowing and degeneracy on the effective\nelectric field :math:`\\mathbf{F_{n,p}}`. This is a good approximation for non-degenerate semiconductors.\n\nLet's explore how material properties are defined as class parameters or other classes.\n\n .. list-table::\n :widths: 25 25 75\n :header-rows: 1\n\n * - Symbol\n - Parameter Name\n - Description\n * - :math:`N_a`\n - ``N_a``\n - Ionized acceptors density\n * - :math:`N_d`\n - ``N_d``\n - Ionized donors density\n * - :math:`N_c`\n - ``N_c``\n - Effective density of states in the conduction band.\n * - :math:`N_v`\n - ``N_v``\n - Effective density of states in valence band.\n * - :math:`R`\n - ``R``\n - Generation-Recombination term.\n * - :math:`E_g`\n - ``E_g``\n - Bandgap Energy.\n * - :math:`\\Delta E_g`\n - ``delta_E_g``\n - Bandgap Narrowing.\n * - :math:`\\sigma`\n - ``conductivity``\n - Electrical conductivity.\n * - :math:`\\varepsilon_r`\n - ``permittivity``\n - Relative permittivity.\n * - :math:`q`\n - ``tidy3d.constants.Q_e``\n - Fundamental electron charge.\n\nExample\n-------\n >>> import tidy3d as td\n >>> default_Si = td.SemiconductorMedium(\n ... N_c=2.86e19,\n ... N_v=3.1e19,\n ... E_g=1.11,\n ... mobility=td.CaugheyThomasMobility(\n ... mu_n_min=52.2,\n ... mu_n=1471.0,\n ... mu_p_min=44.9,\n ... mu_p=470.5,\n ... exp_t_mu=-2.33,\n ... exp_d_n=0.68,\n ... exp_d_p=0.719,\n ... ref_N=2.23e17,\n ... exp_t_mu_min=-0.57,\n ... exp_t_d=2.4,\n ... exp_t_d_exp=-0.146,\n ... ),\n ... R=([\n ... td.ShockleyReedHallRecombination(\n ... tau_n=3.3e-6,\n ... tau_p=4e-6\n ... ),\n ... td.RadiativeRecombination(\n ... r_const=1.6e-14\n ... ),\n ... td.AugerRecombination(\n ... c_n=2.8e-31,\n ... c_p=9.9e-32\n ... ),\n ... ]),\n ... delta_E_g=td.SlotboomBandGapNarrowing(\n ... v1=6.92 * 1e-3,\n ... n2=1.3e17,\n ... c2=0.5,\n ... ),\n ... N_a=0,\n ... N_d=0\n ... )\n\n\nWarning\n-------\n Current limitations of the formulation include:\n\n - Boltzmann statistics are supported\n - Iso-thermal equations with :math:`T=300K`\n - Steady state only\n - Dopants are considered to be fully ionized\n\nNote\n----\n - Both :math:`N_a` and :math:`N_d` can be either a positive number or an ``xarray.DataArray``.\n - Default values for parameters and models are those appropriate for Silicon.\n - The current implementation is a good approximation for non-degenerate semiconductors.\n\n\n.. [1] Schroeder, D., T. Ostermann, and O. Kalz. \"Comparison of transport models far the simulation of degenerate semiconductors.\" Semiconductor science and technology 9.4 (1994): 364.", "type": "object", "properties": { "attrs": { @@ -8125,7 +8087,7 @@ }, "heat_spec": { "title": "Heat Specification", - "description": "DEPRECIATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", + "description": "DEPRECATED: Use `td.MultiPhysicsMedium`. Specification of the medium heat properties. They are used for solving the heat equation via the ``HeatSimulation`` interface. Such simulations can beused for investigating the influence of heat propagation on the properties of optical systems. Once the temperature distribution in the system is found using ``HeatSimulation`` object, ``Simulation.perturbed_mediums_copy()`` can be used to convert mediums with perturbation models defined into spatially dependent custom mediums. Otherwise, the ``heat_spec`` does not directly affect the running of an optical ``Simulation``.", "discriminator": { "propertyName": "type", "mapping": { @@ -8158,14 +8120,6 @@ ], "type": "string" }, - "conductivity": { - "title": "TODO MARC DECIDE VALUE conductivity", - "description": "Electric conductivity of material in units of S/um.", - "default": 1, - "units": "S/um", - "exclusiveMinimum": 0, - "type": "number" - }, "permittivity": { "title": "Permittivity", "description": "Relative permittivity.", @@ -8177,7 +8131,6 @@ "N_c": { "title": "Effective density of electron states", "description": "$N_c$ Effective density of states in the conduction band.", - "default": 2.86e+19, "units": "cm^(-3)", "exclusiveMinimum": 0, "type": "number" @@ -8185,7 +8138,6 @@ "N_v": { "title": "Effective density of hole states", "description": "$N_v$ Effective density of states in the valence band.", - "default": 3.1e+19, "units": "cm^(-3)", "exclusiveMinimum": 0, "type": "number" @@ -8193,7 +8145,6 @@ "E_g": { "title": "Band-gap energy", "description": "Band-gap energy", - "default": 1.11, "units": "eV", "exclusiveMinimum": 0, "type": "number" @@ -8201,49 +8152,18 @@ "mobility": { "title": "Mobility model", "description": "Mobility model", - "default": { - "attrs": {}, - "mu_n_min": 52.2, - "mu_n": 1471.0, - "mu_p_min": 44.9, - "mu_p": 470.5, - "exp_t_mu": -2.33, - "exp_d_n": 0.68, - "exp_d_p": 0.719, - "ref_N": 2.23e+17, - "exp_t_mu_min": -0.57, - "exp_t_d": 2.4, - "exp_t_d_exp": -0.146, - "type": "CaugheyThomasMobility" - }, - "allOf": [ + "anyOf": [ { "$ref": "#/definitions/CaugheyThomasMobility" + }, + { + "$ref": "#/definitions/ConstantMobilityModel" } ] }, "R": { "title": "Generation-Recombination models", "description": "Array containing the R models to be applied to the material.", - "default": [ - { - "attrs": {}, - "tau_n": 3.3e-06, - "tau_p": 4e-06, - "type": "ShockleyReedHallRecombination" - }, - { - "attrs": {}, - "c_n": 2.8e-31, - "c_p": 9.9e-32, - "type": "AugerRecombination" - }, - { - "attrs": {}, - "r_const": 1.6e-14, - "type": "RadiativeRecombination" - } - ], "type": "array", "items": { "anyOf": [ @@ -8262,13 +8182,6 @@ "delta_E_g": { "title": "$\\Delta E_g$ Bandgap narrowing model.", "description": "Bandgap narrowing model.", - "default": { - "attrs": {}, - "v1": 0.00692, - "n2": 1.3e+17, - "c2": 0.5, - "type": "SlotboomBandGapNarrowing" - }, "allOf": [ { "$ref": "#/definitions/SlotboomBandGapNarrowing" @@ -8352,11 +8265,19 @@ ] } }, + "required": [ + "N_c", + "N_v", + "E_g", + "mobility", + "R", + "delta_E_g" + ], "additionalProperties": false }, "MultiPhysicsMedium": { "title": "MultiPhysicsMedium", - "description": "A multi-physics medium may contain multiple multi-physical properties, defined for each solver medium.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n optical : Union[Medium, AnisotropicMedium, PECMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, FullyAnisotropicMedium, CustomMedium, CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomAnisotropicMedium, PerturbationMedium, PerturbationPoleResidue, LossyMetalMedium, Medium2D, AnisotropicMediumFromMedium2D, NoneType] = None\n electrical : Union[Medium, AnisotropicMedium, PECMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, FullyAnisotropicMedium, CustomMedium, CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomAnisotropicMedium, PerturbationMedium, PerturbationPoleResidue, LossyMetalMedium, Medium2D, AnisotropicMediumFromMedium2D, NoneType] = None\n heat : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n charge : Union[ChargeConductorMedium, ChargeInsulatorMedium, SemiconductorMedium, NoneType] = None\n \nExamples\n--------\n>>> import tidy3d as td\n>>> SiO2 = td.MultiPhysicsMedium(\n... optical=td.Medium(permittivity=3.9),\n... charge=td.ChargeInsulatorMedium(permittivity=3.9), # redefining permittivity\n... name=\"SiO2\",\n... )", + "description": "Contains multiple multi-physical properties as defined for each solver medium.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\nname : Optional[str] = None\n Medium name\noptical : Union[Medium, AnisotropicMedium, PECMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, FullyAnisotropicMedium, CustomMedium, CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomAnisotropicMedium, PerturbationMedium, PerturbationPoleResidue, LossyMetalMedium, Medium2D, AnisotropicMediumFromMedium2D, NoneType] = None\n Specifies optical properties.\nheat : Union[FluidSpec, SolidSpec, SolidMedium, FluidMedium, NoneType] = None\n Specifies properties for Heat simulations.\ncharge : Union[ChargeConductorMedium, ChargeInsulatorMedium, SemiconductorMedium, NoneType] = None\n Specifies properties for Charge simulations.\n\nExamples\n--------\nFor *silica* (:math:`SiO_2`):\n >>> import tidy3d as td\n >>> SiO2 = td.MultiPhysicsMedium(\n ... optical=td.Medium(permittivity=3.9),\n ... charge=td.ChargeInsulatorMedium(permittivity=3.9), # redefining permittivity\n ... name=\"SiO2\",\n ... )\n\nFor a silicon ``MultiPhysicsMedium`` composed of an optical model\nfrom the material library and custom charge :class:`SemiconductorMedium`:\n >>> import tidy3d as td\n >>> default_multiphysics_Si = td.MultiPhysicsMedium(\n ... optical=td.material_library['cSi']['Green2008'],\n ... charge=td.SemiconductorMedium(\n ... N_c=2.86e19,\n ... N_v=3.1e19,\n ... E_g=1.11,\n ... mobility=td.CaugheyThomasMobility(\n ... mu_n_min=52.2,\n ... mu_n=1471.0,\n ... mu_p_min=44.9,\n ... mu_p=470.5,\n ... exp_t_mu=-2.33,\n ... exp_d_n=0.68,\n ... exp_d_p=0.719,\n ... ref_N=2.23e17,\n ... exp_t_mu_min=-0.57,\n ... exp_t_d=2.4,\n ... exp_t_d_exp=-0.146,\n ... ),\n ... R=[\n ... td.ShockleyReedHallRecombination(\n ... tau_n=3.3e-6,\n ... tau_p=4e-6\n ... ),\n ... td.RadiativeRecombination(\n ... r_const=1.6e-14\n ... ),\n ... td.AugerRecombination(\n ... c_n=2.8e-31,\n ... c_p=9.9e-32\n ... ),\n ... ],\n ... delta_E_g=td.SlotboomBandGapNarrowing(\n ... v1=6.92 * 1e-3,\n ... n2=1.3e17,\n ... c2=0.5,\n ... ),\n ... N_a=0,\n ... N_d=0\n ... )\n ... )", "type": "object", "properties": { "attrs": { @@ -8367,78 +8288,12 @@ }, "name": { "title": "Name", + "description": "Medium name", "type": "string" }, "optical": { - "title": "Optical", - "anyOf": [ - { - "$ref": "#/definitions/Medium" - }, - { - "$ref": "#/definitions/AnisotropicMedium" - }, - { - "$ref": "#/definitions/PECMedium" - }, - { - "$ref": "#/definitions/PoleResidue" - }, - { - "$ref": "#/definitions/Sellmeier" - }, - { - "$ref": "#/definitions/Lorentz" - }, - { - "$ref": "#/definitions/Debye" - }, - { - "$ref": "#/definitions/Drude" - }, - { - "$ref": "#/definitions/FullyAnisotropicMedium" - }, - { - "$ref": "#/definitions/CustomMedium" - }, - { - "$ref": "#/definitions/CustomPoleResidue" - }, - { - "$ref": "#/definitions/CustomSellmeier" - }, - { - "$ref": "#/definitions/CustomLorentz" - }, - { - "$ref": "#/definitions/CustomDebye" - }, - { - "$ref": "#/definitions/CustomDrude" - }, - { - "$ref": "#/definitions/CustomAnisotropicMedium" - }, - { - "$ref": "#/definitions/PerturbationMedium" - }, - { - "$ref": "#/definitions/PerturbationPoleResidue" - }, - { - "$ref": "#/definitions/LossyMetalMedium" - }, - { - "$ref": "#/definitions/Medium2D" - }, - { - "$ref": "#/definitions/AnisotropicMediumFromMedium2D" - } - ] - }, - "electrical": { - "title": "Electrical", + "title": "Optical properties", + "description": "Specifies optical properties.", "anyOf": [ { "$ref": "#/definitions/Medium" @@ -8506,7 +8361,8 @@ ] }, "heat": { - "title": "Heat", + "title": "Heat properties", + "description": "Specifies properties for Heat simulations.", "anyOf": [ { "$ref": "#/definitions/FluidSpec" @@ -8523,7 +8379,8 @@ ] }, "charge": { - "title": "Charge", + "title": "Charge properties", + "description": "Specifies properties for Charge simulations.", "anyOf": [ { "$ref": "#/definitions/ChargeConductorMedium" @@ -15688,7 +15545,7 @@ }, "MeshOverrideStructure": { "title": "MeshOverrideStructure", - "description": "Defines an object that is only used in the process of generating the mesh.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\ngeometry : Union[Box, Transformed, ClipOperation, GeometryGroup, Sphere, Cylinder, PolySlab, ComplexPolySlabBase, TriangleMesh]\n Defines geometric properties of the structure.\nname : Optional[str] = None\n Optional name for the structure.\nbackground_permittivity : Optional[ConstrainedFloatValue] = None\n DEPRECATED: Use ``Structure.background_medium``. Relative permittivity used for the background of this structure when performing shape optimization with autograd.\nbackground_medium : Union[MultiPhysicsMedium, Medium, AnisotropicMedium, PECMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, FullyAnisotropicMedium, CustomMedium, CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomAnisotropicMedium, PerturbationMedium, PerturbationPoleResidue, LossyMetalMedium, Medium2D, AnisotropicMediumFromMedium2D, FluidSpec, SolidSpec, SolidMedium, FluidMedium, ChargeConductorMedium, ChargeInsulatorMedium, SemiconductorMedium] = None\n Medium used for the background of this structure when performing shape optimization with autograd. This is required when the structure is embedded in another structure as autograd will use the permittivity of the ``Simulation`` by default to compute the shape derivatives.\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\nNotes\n-----\n\n A :class:`MeshOverrideStructure` is a combination of geometry :class:`Geometry`,\n grid size along ``x``, ``y``, ``z`` directions, and a boolean on whether the override\n will be enforced.\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')", + "description": "Defines an object that is only used in the process of generating the mesh.\n\nParameters\n----------\nattrs : dict = {}\n Dictionary storing arbitrary metadata for a Tidy3D object. This dictionary can be freely used by the user for storing data without affecting the operation of Tidy3D as it is not used internally. Note that, unlike regular Tidy3D fields, ``attrs`` are mutable. For example, the following is allowed for setting an ``attr`` ``obj.attrs['foo'] = bar``. Also note that `Tidy3D`` will raise a ``TypeError`` if ``attrs`` contain objects that can not be serialized. One can check if ``attrs`` are serializable by calling ``obj.json()``.\ngeometry : Union[Box, Transformed, ClipOperation, GeometryGroup, Sphere, Cylinder, PolySlab, ComplexPolySlabBase, TriangleMesh]\n Defines geometric properties of the structure.\nname : Optional[str] = None\n Optional name for the structure.\nbackground_permittivity : Optional[ConstrainedFloatValue] = None\n DEPRECATED: Use ``Structure.background_medium``. Relative permittivity used for the background of this structure when performing shape optimization with autograd.\nbackground_medium : Union[MultiPhysicsMedium, Medium, AnisotropicMedium, PECMedium, PoleResidue, Sellmeier, Lorentz, Debye, Drude, FullyAnisotropicMedium, CustomMedium, CustomPoleResidue, CustomSellmeier, CustomLorentz, CustomDebye, CustomDrude, CustomAnisotropicMedium, PerturbationMedium, PerturbationPoleResidue, LossyMetalMedium, Medium2D, AnisotropicMediumFromMedium2D, FluidSpec, SolidSpec, SolidMedium, FluidMedium, ChargeConductorMedium, ChargeInsulatorMedium, SemiconductorMedium] = None\n Medium used for the background of this structure when performing shape optimization with autograd. This is required when the structure is embedded in another structure as autograd will use the permittivity of the ``Simulation`` by default to compute the shape derivatives.\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``.\nshadow : bool = True\n In structure intersection region, grid size is decided by the latter added structure in the structure list when ``shadow=True``; or the structure of smaller grid size when ``shadow=False``.\n\nNotes\n-----\n\n A :class:`MeshOverrideStructure` is a combination of geometry :class:`Geometry`,\n grid size along ``x``, ``y``, ``z`` directions, and a boolean on whether the override\n will be enforced.\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": { "attrs": { @@ -15879,10 +15736,16 @@ ] }, "enforce": { - "title": "Enforce grid size", + "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" + }, + "shadow": { + "title": "Grid Size Choice In Structure Overlapping Region", + "description": "In structure intersection region, grid size is decided by the latter added structure in the structure list when ``shadow=True``; or the structure of smaller grid size when ``shadow=False``.", + "default": true, + "type": "boolean" } }, "required": [