From d427511497084d8a98d1da3dcc3b92d4b888d076 Mon Sep 17 00:00:00 2001 From: momchil Date: Thu, 10 Oct 2024 17:24:38 +0200 Subject: [PATCH] Version, changelog, schema, submodules for 2.7.5 --- CHANGELOG.md | 8 +++++++- docs/faq | 2 +- docs/notebooks | 2 +- pyproject.toml | 4 ++-- tests/sims/simulation_sample.h5 | Bin 464016 -> 464032 bytes tests/sims/simulation_sample.json | 3 ++- tidy3d/schema.json | 27 +++++++++++++++++++++++++-- tidy3d/version.py | 2 +- 8 files changed, 39 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 841bd3661..370f69647 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [2.7.5] - 2024-10-10 + ### Added - `TopologyDesignRegion` is now invariant in `z` by default and supports assigning dimensions along which a design should be uniform via `TopologyDesignRegion(uniform=(bool, bool, bool))`. - Support for arbitrary padding sizes for all padding modes in `tidy3d.plugins.autograd.functions.pad`. @@ -19,6 +21,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Some validation fixes for design region. - Bug in adjoint source creation that included empty sources for extraneous `FieldMonitor` objects, triggering unnecessary errors. - Correct sign in objective function history depending on `Optimizer.maximize`. +- Fix to batch mode solver run that could create multiple copies of the same folder. +- Fixed ``ModeSolver.plot`` method when the simulation is not at the origin. ## [2.7.4] - 2024-09-25 @@ -1331,7 +1335,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.7.3...develop +[Unreleased]: https://github.com/flexcompute/tidy3d/compare/v2.7.5...develop +[2.7.5]: https://github.com/flexcompute/tidy3d/compare/v2.7.4...v2.7.5 +[2.7.4]: https://github.com/flexcompute/tidy3d/compare/v2.7.3...v2.7.4 [2.7.3]: https://github.com/flexcompute/tidy3d/compare/v2.7.2...v2.7.3 [2.7.2]: https://github.com/flexcompute/tidy3d/compare/v2.7.1...v2.7.2 [2.7.1]: https://github.com/flexcompute/tidy3d/compare/v2.7.0...v2.7.1 diff --git a/docs/faq b/docs/faq index 1a74c4b7c..802f86188 160000 --- a/docs/faq +++ b/docs/faq @@ -1 +1 @@ -Subproject commit 1a74c4b7cb1a1721fb0490e4510c0e30f0d03ac3 +Subproject commit 802f8618852493bbb70e437d02ef6a33594ca6bd diff --git a/docs/notebooks b/docs/notebooks index d1b1cbe27..dbfc67aed 160000 --- a/docs/notebooks +++ b/docs/notebooks @@ -1 +1 @@ -Subproject commit d1b1cbe270e0969c05598f3c4d9742f4cb6eb50b +Subproject commit dbfc67aed533cb656ab2eeb3c1fad2e54e7ca906 diff --git a/pyproject.toml b/pyproject.toml index 0081fae51..83363d94c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "tidy3d" -version = "2.7.4" +version = "2.7.5" description = "A fast FDTD solver" authors = ["Tyler Hughes "] license = "LGPLv2+" @@ -272,7 +272,7 @@ testpaths = ["tidy3d", "tests", "docs"] python_files = "*.py" [tool.bumpversion] -current_version = "2.7.4" +current_version = "2.7.5" parse = """(?x) (?P0|[1-9]\\d*)\\. (?P0|[1-9]\\d*)\\. diff --git a/tests/sims/simulation_sample.h5 b/tests/sims/simulation_sample.h5 index 0f537d9fb50cee5427d1a4660008ea1bcfc4f5c8..e0f014f24fc5b89d2c7fde93de0f1413e1f482c9 100644 GIT binary patch delta 15758 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 iAj!VRNK7Se`_. ``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] = Medium(attrs={}, name=None, frequency_range=None, allow_gain=False, nonlinear_spec=None, modulation_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.UniformCurrentSource, tidy3d.components.source.PointDipole, tidy3d.components.source.GaussianBeam, tidy3d.components.source.AstigmaticGaussianBeam, tidy3d.components.source.ModeSource, tidy3d.components.source.PlaneWave, tidy3d.components.source.CustomFieldSource, tidy3d.components.source.CustomCurrentSource, tidy3d.components.source.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], 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',, min_steps_per_wvl=10.0,, max_scale=1.4,, dl_min=0.0,, mesher=GradedMesher(attrs={},, type='GradedMesher')), grid_y=AutoGrid(attrs={},, type='AutoGrid',, min_steps_per_wvl=10.0,, max_scale=1.4,, dl_min=0.0,, mesher=GradedMesher(attrs={},, type='GradedMesher')), grid_z=AutoGrid(attrs={},, type='AutoGrid',, min_steps_per_wvl=10.0,, max_scale=1.4,, dl_min=0.0,, mesher=GradedMesher(attrs={},, type='GradedMesher')), wavelength=None, override_structures=(), snapping_points=(), type='GridSpec')\n Specifications for the simulation grid along each of the three directions.\nversion : str = 2.7.5\n String specifying the front end version number.\nlumped_elements : Tuple[Union[LumpedResistor, CoaxialLumpedResistor], ...] = ()\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), 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', None]] = None\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": { @@ -570,7 +570,7 @@ "version": { "title": "Version", "description": "String specifying the front end version number.", - "default": "2.7.4", + "default": "2.7.5", "type": "string" }, "lumped_elements": { @@ -627,6 +627,29 @@ ], "type": "string" }, + "post_norm": { + "title": "Post Normalization Values", + "description": "Factor to multiply the fields by after running, given the adjoint source pipeline used. Note: this is used internally only.", + "default": 1.0, + "anyOf": [ + { + "type": "number" + }, + { + "title": "DataArray", + "type": "xr.DataArray", + "properties": { + "_dims": { + "title": "_dims", + "type": "Tuple[str, ...]" + } + }, + "required": [ + "_dims" + ] + } + ] + }, "courant": { "title": "Normalized Courant Factor", "description": "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.", diff --git a/tidy3d/version.py b/tidy3d/version.py index 8a78b425a..c5db37ce4 100644 --- a/tidy3d/version.py +++ b/tidy3d/version.py @@ -1,3 +1,3 @@ """DO NOT EDIT: Modified automatically with .bump2version.cfg""" -__version__ = "2.7.4" +__version__ = "2.7.5"