You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+80-15Lines changed: 80 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -3,9 +3,74 @@ All notable changes to this project will be documented in this file.
3
3
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
4
4
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5
5
6
-
7
6
## [Unreleased]
8
7
8
+
## [2.5.0] - 2023-12-13
9
+
10
+
### Added
11
+
- Ability to mix regular mediums and geometries with differentiable analogues in `JaxStructure`. Enables support for shape optimization with dispersive mediums. New classes `JaxStructureStaticGeometry` and `JaxStructureStaticMedium` accept regular `Tidy3D` geometry and medium classes, respectively.
12
+
- Warning if nonlinear mediums are used in an `adjoint` simulation. In this case, the gradients will not be accurate, but may be approximately correct if the nonlinearity is weak.
13
+
- Validator for surface field projection monitors that warns if projecting backwards relative to the monitor's normal direction.
14
+
- Validator for field projection monitors when far field approximation is enabled but the projection distance is small relative to the near field domain.
15
+
- Ability to manually specify a medium through which to project fields, when using field projection monitors.
16
+
- Added support for two-photon absorption via `TwoPhotonAbsorption` class. Added `KerrNonlinearity` that implements Kerr effect without third-harmonic generation.
17
+
- Can create `PoleResidue` from LO-TO form via `PoleResidue.from_lo_to`.
18
+
- Added `TriangularGridDataset` and `TehrahedralGridDataset` for storing and manipulating unstructured data.
19
+
- Support for an anisotropic medium containing PEC components.
20
+
-`SimulationData.mnt_data_from_file()` method to load only a single monitor data object from a simulation data `.hdf5` file.
21
+
-`_hash_self` to base model, uses `hashlib` to hash a Tidy3D component the same way every session.
22
+
-`ComponentModeler.plot_sim_eps()` method to plot the simulation permittivity and ports.
23
+
- Support for 2D PEC materials.
24
+
- Ability to downsample recorded near fields to speed up server-side far field projections.
25
+
-`FieldData.apply_phase(phase)` to multiply field data by a phase.
26
+
- Optional `phase` argument to `SimulationData.plot_field` that applies a phase to complex-valued fields.
27
+
- Ability to window near fields for spatial filtering of far fields for both client- and server-side field projections.
28
+
- Support for multiple frequencies in `output_monitors` in `adjoint` plugin.
29
+
- GDSII export functions `to_gds_file`, `to_gds`, `to_gdspy`, and `to_gdstk` to `Simulation`, `Structure`, and `Geometry`.
30
+
-`verbose` argument to `estimate_cost` and `real_cost` functions such that the cost is logged if `verbose==True` (default). Additional helpful messages may also be logged.
31
+
- Support for space-time modulation of permittivity and electric conductivity via `ModulationSpec` class. The modulation function must be separable in space and time. Modulations with user-supplied distributions in space and harmonic modulation in time are supported.
32
+
-`Geometry.intersections_tilted_plane` calculates intersections with any plane, not only axis-aligned ones.
33
+
-`Transformed` class to support geometry transformations.
34
+
- Methods `Geometry.translated`, `Geometry.scaled`, and `Geometry.rotated` can be used to create transformed copies of any geometry.
35
+
- Time zone in webAPI logging output.
36
+
- Class `Scene` consisting of a background medium and structures for easier drafting and visualization of simulation setups as well as transferring such information between different simulations.
37
+
- Solver for thermal simulation (see `HeatSimulation` and related classes).
38
+
- Specification of material thermal properties in medium classes through an optional field `.heat_spec`.
39
+
40
+
### Changed
41
+
- Credit cost for remote mode solver has been modified to be defined in advance based on the mode solver details. Previously, the cost was based on elapsed runtime. On average, there should be little difference in the cost.
42
+
- Mode solves that are part of an FDTD simulation (i.e. for mode sources and monitors) are now charged at the same flex credit cost as a corresponding standalone mode solver call.
43
+
- Any `FreqMonitor.freqs` or `Source.source_time.freq0` smaller than `1e5` now raise an error as this must be incorrect setup that is outside the Tidy3D intended range (note default frequency is `Hz`).
44
+
- When using complex fields (e.g. with Bloch boundaries), FluxTimeMonitor and frequency-domain fields (including derived quantities like flux) now only use the real part of the time-domain electric field.
45
+
- Indent for the json string of Tidy3D models has been changed to `None` when used internally; kept as `indent=4` for writing to `json` and `yaml` files.
46
+
- API for specifying one or more nonlinear models via `NonlinearSpec.models`.
47
+
-`freqs` and `direction` are optional in `ModeSolver` methods converting to monitor and source, respectively. If not supplied, uses the values from the `ModeSolver` instance calling the method.
48
+
- Removed spurious ``-1`` factor in field amplitudes injected by field sources in some cases. The injected ``E``-field should now exactly match the analytic, mode, or custom fields that the source is expected to inject, both in the forward and in the backward direction.
49
+
- Restriction on the maximum memory that a monitor would need internally during the solver run, even if the final monitor data is smaller.
50
+
- Restriction on the maximum size of mode solver data produced by a `ModeSolver` server call.
51
+
- Updated versions of `boto3`, `requests`, and `click`.
52
+
- python 3.7 no longer tested nor supported.
53
+
- Removed warning that monitors now have `colocate=True` by default.
54
+
- If `PML` or any absorbing boundary condition is used along a direction where the `Simulation` size is zero, an error will be raised, rather than just a warning.
55
+
- Remove warning that monitors now have `colocate=True` by default.
56
+
- Internal refactor of Web API functionality.
57
+
-`Geometry.from_gds` doesn't create unnecessary groups of single elements.
58
+
59
+
### Fixed
60
+
- Fixed energy leakage in TFSF when using complex fields.
61
+
- Fixed the duplication of log messages in Jupyter when `set_logging_file` is used.
62
+
- If input to circular filters in adjoint have size smaller than the diameter, instead of erroring, warn user and truncate the filter kernel accordingly.
63
+
- When writing the json string of a model to an `hdf5` file, the string is split into chunks if it has more than a set (very large) number of characters. This fixes potential error if the string size is more than 4GB.
64
+
- Proper equality checking between `Tidy3dBaseModel` instances, which takes `DataArray` values and coords into account and handles `np.ndarray` types.
65
+
- Correctly set the contour length scale when exporting 2D (or 1D) structures with custom medium to GDSII.
66
+
- Improved error handling if file can not be downloaded from server.
67
+
- Fix for detection of file extensions for file names with dots.
68
+
- Restrict to `matplotlib` >= 3.5, avoiding bug in plotting `CustomMedium`.
69
+
- Fixes `ComponentModeler` batch file being different in different sessions by use of deterministic hash function for computing batch filename.
70
+
- Can pass `kwargs` to `ComponentModeler.plot_sim()` to use in `Simulation.plot()`.
71
+
- Ensure that mode solver fields are returned in single precision if `ModeSolver.ModeSpec.precision == "single"`.
72
+
- If there are no adjoint sources for a simulation involved in an objective function, make a mock source with zero amplitude and warn user.
73
+
9
74
## [2.4.3] - 2023-10-16
10
75
11
76
### Added
@@ -58,7 +123,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
58
123
- Bug in adjoint plugin when `JaxBox` is less than 1 grid cell thick.
59
124
- Bug in `adjoint` plugin where `JaxSimulation.structures` did not accept structures containing `td.PolySlab`.
60
125
61
-
62
126
## [2.4.0] - 2023-9-11
63
127
64
128
### Added
@@ -71,7 +135,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
71
135
Specifically, non-dispersive and dispersive mediums with heat and/or charge perturbation models can be defined through classes `PerturbationMedium` and `PerturbationPoleResidue`,
72
136
where perturbations to each parameter is specified using class `ParameterPerturbation`.
73
137
A convenience function `Simulation.perturbed_mediums_copy` is added to class `Simulation` which applies heat and/or charge fields to mediums containing perturbation models.
74
-
- Added `hlim` and `vlim` kwargs to `Simulation.plot()` and `Simulation.plot_eps()` for setting horizontal and veritcal plot limits.
138
+
- Added `hlim` and `vlim` kwargs to `Simulation.plot()` and `Simulation.plot_eps()` for setting horizontal and vertical plot limits.
75
139
- Added support for chi3 nonlinearity via `NonlinearSusceptibility` class.
76
140
- Spatial downsampling allowed in ``PermittivityMonitor`` through the ``interval_space`` argument.
77
141
-`ClipOperation` geometry type allows the construction of complex geometries through boolean operations.
@@ -268,7 +332,7 @@ that the fields match exactly except for a ``pi`` phase shift. This interpretati
268
332
-`JaxCustomMedium` accepts a maximum of 250,000 grid cells to avoid slow server-side processing.
269
333
-`PolySlab.inside` now uses `matplotlib.path.contains_points`.
270
334
-`JaxCustomMedium` accepts a maximum of 250,000 grid cells.
271
-
- Logging messages are supressed and summarized to avoid repetitions.
335
+
- Logging messages are suppressed and summarized to avoid repetitions.
272
336
273
337
### Fixed
274
338
- Log messages provide the correct caller origin (file name and line number).
@@ -367,7 +431,7 @@ that the fields match exactly except for a ``pi`` phase shift. This interpretati
367
431
- Validate `slab_bounds` for `PolySlab`.
368
432
369
433
### Changed
370
-
- Tidy3D account authentication done solely through API key. Migration option offered for useres with old username / password authentication.
434
+
- Tidy3D account authentication done solely through API key. Migration option offered for users with old username / password authentication.
371
435
-`export_matlib_to_file` in `material_library` exports material's full name in addition to abbreviation.
372
436
- Simpler progress bars for `run_async`.
373
437
- Medium property `n_cfl` added to adjust time step size according to CFL condition.
@@ -509,7 +573,7 @@ method for computing the overlap integral over two sets of frequency-domain fiel
509
573
510
574
### Changed
511
575
- Minimum flex unit charge reduced from `0.1` to `0.025`.
512
-
- Default courant factor was changed from `0.9` to `0.99`.
576
+
- Default Courant factor was changed from `0.9` to `0.99`.
513
577
- A point dipole source placed on a symmetry plane now always has twice the amplitude of the same source in a simulation without the
514
578
symmetry plane, as expected by continuity with the case when the dipole is slightly off the symmetry plane, in which case
515
579
there are effectively two dipoles, the original one and its mirror image. Previously, the amplitude was only doubled for dipoles polarized normal
@@ -597,7 +661,7 @@ which fields are to be projected is now determined automatically based on the me
597
661
598
662
### Added
599
663
- New classes of near-to-far monitors for server-side computation of the near field to far field projection.
600
-
- Option to exlude`DataArray` Fields from a `Tidy3dBaseModel` json.
664
+
- Option to exclude`DataArray` Fields from a `Tidy3dBaseModel` json.
601
665
- Option to save/load all models to/from `hdf5` format.
602
666
- Option to load base models without validation.
603
667
- Support negative sidewall angle for slanted `PolySlab`-s.
@@ -607,7 +671,7 @@ which fields are to be projected is now determined automatically based on the me
607
671
### Fixed
608
672
- Raise a more meaningful error if login failed after `MAX_ATTEMPTS`.
609
673
- Environment login credentials set to `""` are now ignored and credentials stored to file are still looked for.
610
-
- Improved subpixel coefficients computation around sharp edges, cornes, and three-structure intersections.
674
+
- Improved subpixel coefficients computation around sharp edges, corners, and three-structure intersections.
611
675
612
676
### Changed
613
677
- Major refactor of the way data structures are used internally.
@@ -649,7 +713,7 @@ which fields are to be projected is now determined automatically based on the me
649
713
## [1.4.1] - 2022-6-13
650
714
651
715
### Fixed
652
-
- Bug in plotting polarization of a nomral incidence source for some `angle_phi`.
716
+
- Bug in plotting polarization of a normal incidence source for some `angle_phi`.
653
717
- Bloch vector values required to be real rather than complex.
654
718
- Web security mitigation.
655
719
@@ -664,9 +728,9 @@ which fields are to be projected is now determined automatically based on the me
0 commit comments