tidy3d 2.11.2__tar.gz → 2.12.0.dev0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1671) hide show
  1. tidy3d-2.12.0.dev0/CHANGELOG.md +2266 -0
  2. tidy3d-2.12.0.dev0/PKG-INFO +339 -0
  3. tidy3d-2.12.0.dev0/README.md +151 -0
  4. tidy3d-2.12.0.dev0/REVIEW.md +83 -0
  5. tidy3d-2.12.0.dev0/changelog.d/5535.fixed.md +1 -0
  6. tidy3d-2.12.0.dev0/docs/_static/css/custom.css +138 -0
  7. tidy3d-2.12.0.dev0/docs/ai/flex_agent.rst +233 -0
  8. tidy3d-2.12.0.dev0/docs/ai/index.rst +94 -0
  9. tidy3d-2.12.0.dev0/docs/api/boundary_conditions.rst +173 -0
  10. tidy3d-2.12.0.dev0/docs/api/charge/analysis.rst +24 -0
  11. tidy3d-2.12.0.dev0/docs/api/charge/boundary_conditions.rst +57 -0
  12. tidy3d-2.12.0.dev0/docs/api/charge/convergence.rst +140 -0
  13. tidy3d-2.12.0.dev0/docs/api/charge/index.rst +43 -0
  14. tidy3d-2.12.0.dev0/docs/api/charge/mediums.rst +118 -0
  15. tidy3d-2.12.0.dev0/docs/api/charge/monitor.rst +28 -0
  16. tidy3d-2.12.0.dev0/docs/api/charge/output_data.rst +66 -0
  17. tidy3d-2.12.0.dev0/docs/api/configuration.rst +40 -0
  18. tidy3d-2.12.0.dev0/docs/api/discretization/layer.rst +57 -0
  19. tidy3d-2.12.0.dev0/docs/api/geometry.rst +332 -0
  20. tidy3d-2.12.0.dev0/docs/api/heat/index.rst +24 -0
  21. tidy3d-2.12.0.dev0/docs/api/material_library.rst +1374 -0
  22. tidy3d-2.12.0.dev0/docs/api/mediums.rst +424 -0
  23. tidy3d-2.12.0.dev0/docs/api/microwave/component_modeler.rst +108 -0
  24. tidy3d-2.12.0.dev0/docs/api/microwave/impedance_calculator.rst +165 -0
  25. tidy3d-2.12.0.dev0/docs/api/microwave/material.rst +66 -0
  26. tidy3d-2.12.0.dev0/docs/api/microwave/mode_solver.rst +168 -0
  27. tidy3d-2.12.0.dev0/docs/api/microwave/output_data.rst +95 -0
  28. tidy3d-2.12.0.dev0/docs/api/microwave/path_integrals.rst +241 -0
  29. tidy3d-2.12.0.dev0/docs/api/microwave/ports/lumped.rst +104 -0
  30. tidy3d-2.12.0.dev0/docs/api/microwave/ports/wave.rst +148 -0
  31. tidy3d-2.12.0.dev0/docs/api/microwave/radiation_scattering.rst +102 -0
  32. tidy3d-2.12.0.dev0/docs/api/plugins/autograd.rst +105 -0
  33. tidy3d-2.12.0.dev0/docs/api/plugins/design.rst +28 -0
  34. tidy3d-2.12.0.dev0/docs/api/plugins/index.rst +17 -0
  35. tidy3d-2.12.0.dev0/docs/api/plugins/invdes.rst +29 -0
  36. tidy3d-2.12.0.dev0/docs/api/plugins/klayout.rst +65 -0
  37. tidy3d-2.12.0.dev0/docs/api/plugins/pytorch.rst +8 -0
  38. tidy3d-2.12.0.dev0/docs/api/plugins/smatrix.rst +77 -0
  39. tidy3d-2.12.0.dev0/docs/api/simulation.rst +66 -0
  40. tidy3d-2.12.0.dev0/docs/api/sources.rst +234 -0
  41. tidy3d-2.12.0.dev0/docs/api/spice.rst +28 -0
  42. tidy3d-2.12.0.dev0/docs/api/structure_and_scene.rst +90 -0
  43. tidy3d-2.12.0.dev0/docs/conf.py +609 -0
  44. tidy3d-2.12.0.dev0/docs/configuration/index.rst +176 -0
  45. tidy3d-2.12.0.dev0/docs/configuration/nexus.rst +538 -0
  46. tidy3d-2.12.0.dev0/docs/configuration/reference.rst +337 -0
  47. tidy3d-2.12.0.dev0/docs/index.rst +274 -0
  48. tidy3d-2.12.0.dev0/docs/install.rst +246 -0
  49. tidy3d-2.12.0.dev0/docs/versions/README.md +8 -0
  50. tidy3d-2.12.0.dev0/notebooks/.binder/requirements.txt +4 -0
  51. tidy3d-2.12.0.dev0/notebooks/8ChannelDemultiplexer.qmd +719 -0
  52. tidy3d-2.12.0.dev0/notebooks/90BendPolarizationSplitterRotator.qmd +435 -0
  53. tidy3d-2.12.0.dev0/notebooks/90OpticalHybrid.qmd +413 -0
  54. tidy3d-2.12.0.dev0/notebooks/AbsorbingBoundaryReflection.qmd +353 -0
  55. tidy3d-2.12.0.dev0/notebooks/AdiabaticCouplerLN.qmd +281 -0
  56. tidy3d-2.12.0.dev0/notebooks/AdvancedGaussianSources.qmd +1230 -0
  57. tidy3d-2.12.0.dev0/notebooks/AllDielectricStructuralColor.qmd +328 -0
  58. tidy3d-2.12.0.dev0/notebooks/AndersonLocalization.qmd +496 -0
  59. tidy3d-2.12.0.dev0/notebooks/AnimationTutorial.qmd +259 -0
  60. tidy3d-2.12.0.dev0/notebooks/AnisotropicMetamaterialBroadbandPBS.qmd +617 -0
  61. tidy3d-2.12.0.dev0/notebooks/AntiResonantHollowCoreFiber.qmd +176 -0
  62. tidy3d-2.12.0.dev0/notebooks/AutoGrid.qmd +441 -0
  63. tidy3d-2.12.0.dev0/notebooks/Autograd0Overview.qmd +91 -0
  64. tidy3d-2.12.0.dev0/notebooks/Autograd0Quickstart.qmd +129 -0
  65. tidy3d-2.12.0.dev0/notebooks/Autograd0QuickstartII.qmd +188 -0
  66. tidy3d-2.12.0.dev0/notebooks/Autograd10YBranchLevelSet.qmd +1030 -0
  67. tidy3d-2.12.0.dev0/notebooks/Autograd12LightExtractor.qmd +755 -0
  68. tidy3d-2.12.0.dev0/notebooks/Autograd13Metasurface.qmd +569 -0
  69. tidy3d-2.12.0.dev0/notebooks/Autograd15Antenna.qmd +625 -0
  70. tidy3d-2.12.0.dev0/notebooks/Autograd16BilayerCoupler.qmd +644 -0
  71. tidy3d-2.12.0.dev0/notebooks/Autograd17BandPassFilter.qmd +612 -0
  72. tidy3d-2.12.0.dev0/notebooks/Autograd18TopologyBend.qmd +467 -0
  73. tidy3d-2.12.0.dev0/notebooks/Autograd19ApodizedCoupler.qmd +603 -0
  74. tidy3d-2.12.0.dev0/notebooks/Autograd1Intro.qmd +378 -0
  75. tidy3d-2.12.0.dev0/notebooks/Autograd20MetalensWaveguideTaper.qmd +522 -0
  76. tidy3d-2.12.0.dev0/notebooks/Autograd21GaPLightExtractor.qmd +481 -0
  77. tidy3d-2.12.0.dev0/notebooks/Autograd22PhotonicCrystal.qmd +479 -0
  78. tidy3d-2.12.0.dev0/notebooks/Autograd23FabricationAwareInvdes.qmd +938 -0
  79. tidy3d-2.12.0.dev0/notebooks/Autograd24DigitalSplitter.qmd +576 -0
  80. tidy3d-2.12.0.dev0/notebooks/Autograd25WaveguideCrossing.qmd +433 -0
  81. tidy3d-2.12.0.dev0/notebooks/Autograd26DiffractiveBeamSplitter.qmd +624 -0
  82. tidy3d-2.12.0.dev0/notebooks/Autograd27Smatrix.qmd +487 -0
  83. tidy3d-2.12.0.dev0/notebooks/Autograd28FiberLens.qmd +451 -0
  84. tidy3d-2.12.0.dev0/notebooks/Autograd29SourceGradients.qmd +880 -0
  85. tidy3d-2.12.0.dev0/notebooks/Autograd2GradientChecking.qmd +358 -0
  86. tidy3d-2.12.0.dev0/notebooks/Autograd30ParallelAdjoint.qmd +389 -0
  87. tidy3d-2.12.0.dev0/notebooks/Autograd3InverseDesign.qmd +524 -0
  88. tidy3d-2.12.0.dev0/notebooks/Autograd4MultiObjective.qmd +190 -0
  89. tidy3d-2.12.0.dev0/notebooks/Autograd5BoundaryGradients.qmd +412 -0
  90. tidy3d-2.12.0.dev0/notebooks/Autograd6GratingCoupler.qmd +602 -0
  91. tidy3d-2.12.0.dev0/notebooks/Autograd7Metalens.qmd +465 -0
  92. tidy3d-2.12.0.dev0/notebooks/Autograd8WaveguideBend.qmd +546 -0
  93. tidy3d-2.12.0.dev0/notebooks/Autograd9WDM.qmd +728 -0
  94. tidy3d-2.12.0.dev0/notebooks/AvalanchePhotodiode.qmd +713 -0
  95. tidy3d-2.12.0.dev0/notebooks/Bandstructure.qmd +370 -0
  96. tidy3d-2.12.0.dev0/notebooks/BatchModeSolver.qmd +117 -0
  97. tidy3d-2.12.0.dev0/notebooks/BayesianOptimizationYJunction.qmd +401 -0
  98. tidy3d-2.12.0.dev0/notebooks/BeerLambert.qmd +237 -0
  99. tidy3d-2.12.0.dev0/notebooks/BilayerSiNEdgeCoupler.qmd +289 -0
  100. tidy3d-2.12.0.dev0/notebooks/BilayerSiNSiGC.qmd +689 -0
  101. tidy3d-2.12.0.dev0/notebooks/BilevelPSR.qmd +399 -0
  102. tidy3d-2.12.0.dev0/notebooks/BiosensorGrating.qmd +252 -0
  103. tidy3d-2.12.0.dev0/notebooks/BistablePCCavity.qmd +676 -0
  104. tidy3d-2.12.0.dev0/notebooks/BlueMicroLED.qmd +359 -0
  105. tidy3d-2.12.0.dev0/notebooks/BoundaryConditions.qmd +393 -0
  106. tidy3d-2.12.0.dev0/notebooks/BraggGratings.qmd +354 -0
  107. tidy3d-2.12.0.dev0/notebooks/BroadbandDirectionalCoupler.qmd +615 -0
  108. tidy3d-2.12.0.dev0/notebooks/BroadbandPlaneWaveWithConstantObliqueIncidentAngle.qmd +390 -0
  109. tidy3d-2.12.0.dev0/notebooks/BullseyeCavityPSO.qmd +534 -0
  110. tidy3d-2.12.0.dev0/notebooks/CMOSRGBSensor.qmd +602 -0
  111. tidy3d-2.12.0.dev0/notebooks/CPOHeat.qmd +724 -0
  112. tidy3d-2.12.0.dev0/notebooks/CavityFOM.qmd +372 -0
  113. tidy3d-2.12.0.dev0/notebooks/ChargeSolver.qmd +934 -0
  114. tidy3d-2.12.0.dev0/notebooks/CreatingGeometryUsingTrimesh.qmd +374 -0
  115. tidy3d-2.12.0.dev0/notebooks/CustomFieldSource.qmd +342 -0
  116. tidy3d-2.12.0.dev0/notebooks/CustomMediumTutorial.qmd +380 -0
  117. tidy3d-2.12.0.dev0/notebooks/Design.qmd +451 -0
  118. tidy3d-2.12.0.dev0/notebooks/DielectricMetasurfaceAbsorber.qmd +293 -0
  119. tidy3d-2.12.0.dev0/notebooks/DirectionalCoupler.qmd +363 -0
  120. tidy3d-2.12.0.dev0/notebooks/DirectionalCouplerSurrogate.qmd +858 -0
  121. tidy3d-2.12.0.dev0/notebooks/DirectionalScatteringNanodisks.qmd +531 -0
  122. tidy3d-2.12.0.dev0/notebooks/DisorderedPlasmonicColor.qmd +391 -0
  123. tidy3d-2.12.0.dev0/notebooks/Dispersion.qmd +294 -0
  124. tidy3d-2.12.0.dev0/notebooks/DistributedBraggReflectorCavity.qmd +365 -0
  125. tidy3d-2.12.0.dev0/notebooks/DivergedFDTDSimulation.qmd +57 -0
  126. tidy3d-2.12.0.dev0/notebooks/EMEBends.qmd +837 -0
  127. tidy3d-2.12.0.dev0/notebooks/EMESolver.qmd +356 -0
  128. tidy3d-2.12.0.dev0/notebooks/EdgeCoupler.qmd +468 -0
  129. tidy3d-2.12.0.dev0/notebooks/EffectiveIndexApproximation.qmd +730 -0
  130. tidy3d-2.12.0.dev0/notebooks/EulerWaveguideBend.qmd +358 -0
  131. tidy3d-2.12.0.dev0/notebooks/FarFieldProjectionNonDecayingField.qmd +253 -0
  132. tidy3d-2.12.0.dev0/notebooks/FieldProjections.qmd +1003 -0
  133. tidy3d-2.12.0.dev0/notebooks/Fitting.qmd +168 -0
  134. tidy3d-2.12.0.dev0/notebooks/FocusedApodGC.qmd +852 -0
  135. tidy3d-2.12.0.dev0/notebooks/FreeFormCoupler.qmd +238 -0
  136. tidy3d-2.12.0.dev0/notebooks/FresnelLens.qmd +306 -0
  137. tidy3d-2.12.0.dev0/notebooks/FullyAnisotropic.qmd +303 -0
  138. tidy3d-2.12.0.dev0/notebooks/GDSCreation.qmd +270 -0
  139. tidy3d-2.12.0.dev0/notebooks/GDSExport.qmd +358 -0
  140. tidy3d-2.12.0.dev0/notebooks/GDSImport.qmd +177 -0
  141. tidy3d-2.12.0.dev0/notebooks/GUIDataTutorial.qmd +462 -0
  142. tidy3d-2.12.0.dev0/notebooks/GeneticAlgorithmReflector.qmd +380 -0
  143. tidy3d-2.12.0.dev0/notebooks/GeometryTransformations.qmd +309 -0
  144. tidy3d-2.12.0.dev0/notebooks/GradientMetasurfaceReflector.qmd +347 -0
  145. tidy3d-2.12.0.dev0/notebooks/GrapheneMetamaterial.qmd +302 -0
  146. tidy3d-2.12.0.dev0/notebooks/GratingCoupler.qmd +432 -0
  147. tidy3d-2.12.0.dev0/notebooks/GratingEfficiency.qmd +759 -0
  148. tidy3d-2.12.0.dev0/notebooks/GroupDelayCalculation.qmd +225 -0
  149. tidy3d-2.12.0.dev0/notebooks/Gyrotropic.qmd +283 -0
  150. tidy3d-2.12.0.dev0/notebooks/HeatDissipationSOI.qmd +449 -0
  151. tidy3d-2.12.0.dev0/notebooks/HeatSolver.qmd +563 -0
  152. tidy3d-2.12.0.dev0/notebooks/HexagonalLatticeBands.qmd +460 -0
  153. tidy3d-2.12.0.dev0/notebooks/HighQGe.qmd +228 -0
  154. tidy3d-2.12.0.dev0/notebooks/HighQSi.qmd +279 -0
  155. tidy3d-2.12.0.dev0/notebooks/IntegratedVivaldiAntenna.qmd +698 -0
  156. tidy3d-2.12.0.dev0/notebooks/InverseDesign.qmd +594 -0
  157. tidy3d-2.12.0.dev0/notebooks/KLayoutPlugin_DRCQuickstart.qmd +91 -0
  158. tidy3d-2.12.0.dev0/notebooks/KerrSidebands.qmd +550 -0
  159. tidy3d-2.12.0.dev0/notebooks/LNOIPolarizationSplitterRotator.qmd +897 -0
  160. tidy3d-2.12.0.dev0/notebooks/LayerRefinement.qmd +407 -0
  161. tidy3d-2.12.0.dev0/notebooks/LedLEECalculation.qmd +759 -0
  162. tidy3d-2.12.0.dev0/notebooks/LocalSubpixel.qmd +302 -0
  163. tidy3d-2.12.0.dev0/notebooks/LowContrastWaveguide.qmd +280 -0
  164. tidy3d-2.12.0.dev0/notebooks/MIMResonator.qmd +254 -0
  165. tidy3d-2.12.0.dev0/notebooks/MMI1x4.qmd +394 -0
  166. tidy3d-2.12.0.dev0/notebooks/MMIMeepBenchmark.qmd +267 -0
  167. tidy3d-2.12.0.dev0/notebooks/MMIPowerSplitter2x2.qmd +352 -0
  168. tidy3d-2.12.0.dev0/notebooks/MachZehnderModulator.qmd +1147 -0
  169. tidy3d-2.12.0.dev0/notebooks/MaxwellStressTensor.qmd +672 -0
  170. tidy3d-2.12.0.dev0/notebooks/MetalHeaterPhaseShifter.qmd +428 -0
  171. tidy3d-2.12.0.dev0/notebooks/MetalOxideSunscreen.qmd +288 -0
  172. tidy3d-2.12.0.dev0/notebooks/Metalens.qmd +714 -0
  173. tidy3d-2.12.0.dev0/notebooks/MetasurfaceBIC.qmd +356 -0
  174. tidy3d-2.12.0.dev0/notebooks/MicrowaveFrequencySelectiveSurface.qmd +233 -0
  175. tidy3d-2.12.0.dev0/notebooks/MidIRMetalens.qmd +339 -0
  176. tidy3d-2.12.0.dev0/notebooks/MoS2Waveguide.qmd +202 -0
  177. tidy3d-2.12.0.dev0/notebooks/ModalSourcesMonitors.qmd +492 -0
  178. tidy3d-2.12.0.dev0/notebooks/ModeOverlap.qmd +210 -0
  179. tidy3d-2.12.0.dev0/notebooks/ModeSimulation.qmd +631 -0
  180. tidy3d-2.12.0.dev0/notebooks/ModeSolver.qmd +558 -0
  181. tidy3d-2.12.0.dev0/notebooks/ModesBentAngled.qmd +393 -0
  182. tidy3d-2.12.0.dev0/notebooks/MultiplexingMMI.qmd +420 -0
  183. tidy3d-2.12.0.dev0/notebooks/MultipoleExpansion.qmd +534 -0
  184. tidy3d-2.12.0.dev0/notebooks/NanobeamCavity.qmd +966 -0
  185. tidy3d-2.12.0.dev0/notebooks/NanostructuredBoronNitride.qmd +298 -0
  186. tidy3d-2.12.0.dev0/notebooks/Near2FarSphereRCS.qmd +397 -0
  187. tidy3d-2.12.0.dev0/notebooks/NonHermitianMetagratings.qmd +289 -0
  188. tidy3d-2.12.0.dev0/notebooks/OpticalLuneburgLens.qmd +353 -0
  189. tidy3d-2.12.0.dev0/notebooks/OpticalSwitchDBS.qmd +402 -0
  190. tidy3d-2.12.0.dev0/notebooks/OptimizedL3.qmd +251 -0
  191. tidy3d-2.12.0.dev0/notebooks/PCMBraggGratingFilter.qmd +353 -0
  192. tidy3d-2.12.0.dev0/notebooks/PECSphereRCS.qmd +209 -0
  193. tidy3d-2.12.0.dev0/notebooks/PICComponents.qmd +701 -0
  194. tidy3d-2.12.0.dev0/notebooks/PINMachZehnder.qmd +810 -0
  195. tidy3d-2.12.0.dev0/notebooks/ParameterScan.qmd +656 -0
  196. tidy3d-2.12.0.dev0/notebooks/ParameterScanWebRun.qmd +569 -0
  197. tidy3d-2.12.0.dev0/notebooks/ParticleSwarmOptimizedPBS.qmd +406 -0
  198. tidy3d-2.12.0.dev0/notebooks/PhaseChangeAntennas.qmd +415 -0
  199. tidy3d-2.12.0.dev0/notebooks/PhotoThermalWaveguides.qmd +626 -0
  200. tidy3d-2.12.0.dev0/notebooks/PhotonicCrystalWaveguidePolarizationFilter.qmd +280 -0
  201. tidy3d-2.12.0.dev0/notebooks/PhotonicCrystalsComponents.qmd +770 -0
  202. tidy3d-2.12.0.dev0/notebooks/PhotonicSpinSelector.qmd +479 -0
  203. tidy3d-2.12.0.dev0/notebooks/PlasmonicNanoparticle.qmd +430 -0
  204. tidy3d-2.12.0.dev0/notebooks/PlasmonicNanorodArray.qmd +293 -0
  205. tidy3d-2.12.0.dev0/notebooks/PlasmonicPhotothermalHeating.qmd +763 -0
  206. tidy3d-2.12.0.dev0/notebooks/PlasmonicWaveguideCO2Sensor.qmd +272 -0
  207. tidy3d-2.12.0.dev0/notebooks/PlasmonicYagiUdaNanoantenna.qmd +515 -0
  208. tidy3d-2.12.0.dev0/notebooks/PolarizationSplitterRotator.qmd +338 -0
  209. tidy3d-2.12.0.dev0/notebooks/Primer.qmd +700 -0
  210. tidy3d-2.12.0.dev0/notebooks/RFAutograd1RectangularPatchAntenna.qmd +1011 -0
  211. tidy3d-2.12.0.dev0/notebooks/RadiativeCoolingGlass.qmd +267 -0
  212. tidy3d-2.12.0.dev0/notebooks/RadiativeLossesModeSolver.qmd +853 -0
  213. tidy3d-2.12.0.dev0/notebooks/ResonanceFinder.qmd +267 -0
  214. tidy3d-2.12.0.dev0/notebooks/RingResonator.qmd +265 -0
  215. tidy3d-2.12.0.dev0/notebooks/SMatrix.qmd +485 -0
  216. tidy3d-2.12.0.dev0/notebooks/STLImport.qmd +383 -0
  217. tidy3d-2.12.0.dev0/notebooks/SWGBroadbandPolarizer.qmd +341 -0
  218. tidy3d-2.12.0.dev0/notebooks/SWGWaveguideCrossing.qmd +420 -0
  219. tidy3d-2.12.0.dev0/notebooks/SbendCMAES.qmd +386 -0
  220. tidy3d-2.12.0.dev0/notebooks/ScaleInvariantWaveguide.qmd +283 -0
  221. tidy3d-2.12.0.dev0/notebooks/SelfIntersectingPolyslab.qmd +225 -0
  222. tidy3d-2.12.0.dev0/notebooks/SiNToAlOxVerticalCoupler.qmd +446 -0
  223. tidy3d-2.12.0.dev0/notebooks/SiWaveguideTPA.qmd +279 -0
  224. tidy3d-2.12.0.dev0/notebooks/SiliconOrganicHybrid.qmd +736 -0
  225. tidy3d-2.12.0.dev0/notebooks/SiliconToPlasmonicCoupler.qmd +254 -0
  226. tidy3d-2.12.0.dev0/notebooks/SimpleModeSolverGUI.qmd +701 -0
  227. tidy3d-2.12.0.dev0/notebooks/Simulation.qmd +313 -0
  228. tidy3d-2.12.0.dev0/notebooks/SourceNormalization.qmd +954 -0
  229. tidy3d-2.12.0.dev0/notebooks/StartHere.qmd +124 -0
  230. tidy3d-2.12.0.dev0/notebooks/StripToSlotConverters.qmd +441 -0
  231. tidy3d-2.12.0.dev0/notebooks/Symmetry.qmd +433 -0
  232. tidy3d-2.12.0.dev0/notebooks/TFLNTidy3d.qmd +764 -0
  233. tidy3d-2.12.0.dev0/notebooks/TFSF.qmd +575 -0
  234. tidy3d-2.12.0.dev0/notebooks/THzDemultiplexerFilter.qmd +300 -0
  235. tidy3d-2.12.0.dev0/notebooks/TaperedWgDispersion.qmd +264 -0
  236. tidy3d-2.12.0.dev0/notebooks/ThermallyTunedRingResonator.qmd +766 -0
  237. tidy3d-2.12.0.dev0/notebooks/ThermoOpticDopedModulator.qmd +796 -0
  238. tidy3d-2.12.0.dev0/notebooks/TidyFab0GC.qmd +599 -0
  239. tidy3d-2.12.0.dev0/notebooks/TimeModulationTutorial.qmd +364 -0
  240. tidy3d-2.12.0.dev0/notebooks/TopoQuantumPhC.qmd +327 -0
  241. tidy3d-2.12.0.dev0/notebooks/TransientThermoOpticShifter.qmd +621 -0
  242. tidy3d-2.12.0.dev0/notebooks/TunableChiralMetasurface.qmd +344 -0
  243. tidy3d-2.12.0.dev0/notebooks/UnstructuredData.qmd +302 -0
  244. tidy3d-2.12.0.dev0/notebooks/VerticalGratingCoupler.qmd +299 -0
  245. tidy3d-2.12.0.dev0/notebooks/VerticalPINSSAC.qmd +608 -0
  246. tidy3d-2.12.0.dev0/notebooks/VizData.qmd +550 -0
  247. tidy3d-2.12.0.dev0/notebooks/VizSimulation.qmd +379 -0
  248. tidy3d-2.12.0.dev0/notebooks/VortexMetasurface.qmd +423 -0
  249. tidy3d-2.12.0.dev0/notebooks/WaveguideBendSimulator.qmd +419 -0
  250. tidy3d-2.12.0.dev0/notebooks/WaveguideCrossing.qmd +240 -0
  251. tidy3d-2.12.0.dev0/notebooks/WaveguideGratingAntenna.qmd +377 -0
  252. tidy3d-2.12.0.dev0/notebooks/WaveguidePluginDemonstration.qmd +553 -0
  253. tidy3d-2.12.0.dev0/notebooks/WaveguideSizeConverter.qmd +549 -0
  254. tidy3d-2.12.0.dev0/notebooks/WaveguideToRingCoupling.qmd +508 -0
  255. tidy3d-2.12.0.dev0/notebooks/WebAPI.qmd +186 -0
  256. tidy3d-2.12.0.dev0/notebooks/XarrayTutorial.qmd +385 -0
  257. tidy3d-2.12.0.dev0/notebooks/YJunction.qmd +316 -0
  258. tidy3d-2.12.0.dev0/notebooks/ZeroCrossTalkTE.qmd +316 -0
  259. tidy3d-2.12.0.dev0/notebooks/ZonePlateFieldProjection.qmd +331 -0
  260. tidy3d-2.12.0.dev0/notebooks/_quarto.yml +216 -0
  261. tidy3d-2.12.0.dev0/notebooks/_replay-state/manifest.json +26 -0
  262. tidy3d-2.12.0.dev0/notebooks/docs/basics/index.rst +16 -0
  263. tidy3d-2.12.0.dev0/notebooks/docs/case_studies/fiber.rst +10 -0
  264. tidy3d-2.12.0.dev0/notebooks/docs/case_studies/index.rst +16 -0
  265. tidy3d-2.12.0.dev0/notebooks/docs/case_studies/lenses.rst +13 -0
  266. tidy3d-2.12.0.dev0/notebooks/docs/case_studies/metamaterials_gratings_periodic.rst +25 -0
  267. tidy3d-2.12.0.dev0/notebooks/docs/case_studies/nanophotonics.rst +21 -0
  268. tidy3d-2.12.0.dev0/notebooks/docs/case_studies/photonic_crystals.rst +15 -0
  269. tidy3d-2.12.0.dev0/notebooks/docs/case_studies/photonic_opt.rst +15 -0
  270. tidy3d-2.12.0.dev0/notebooks/docs/case_studies/pic.rst +54 -0
  271. tidy3d-2.12.0.dev0/notebooks/docs/case_studies/pic_active.rst +23 -0
  272. tidy3d-2.12.0.dev0/notebooks/docs/case_studies/scattering_far_field.rst +13 -0
  273. tidy3d-2.12.0.dev0/notebooks/docs/features/advanced.rst +15 -0
  274. tidy3d-2.12.0.dev0/notebooks/docs/features/autograd.rst +42 -0
  275. tidy3d-2.12.0.dev0/notebooks/docs/features/benchmark.rst +14 -0
  276. tidy3d-2.12.0.dev0/notebooks/docs/features/charge.rst +10 -0
  277. tidy3d-2.12.0.dev0/notebooks/docs/features/data_visualisation.rst +18 -0
  278. tidy3d-2.12.0.dev0/notebooks/docs/features/eme.rst +11 -0
  279. tidy3d-2.12.0.dev0/notebooks/docs/features/grid.rst +12 -0
  280. tidy3d-2.12.0.dev0/notebooks/docs/features/heat.rst +10 -0
  281. tidy3d-2.12.0.dev0/notebooks/docs/features/index.rst +23 -0
  282. tidy3d-2.12.0.dev0/notebooks/docs/features/medium.rst +16 -0
  283. tidy3d-2.12.0.dev0/notebooks/docs/features/mode.rst +15 -0
  284. tidy3d-2.12.0.dev0/notebooks/docs/features/parameter_sweep.rst +12 -0
  285. tidy3d-2.12.0.dev0/notebooks/docs/features/resonance.rst +11 -0
  286. tidy3d-2.12.0.dev0/notebooks/docs/features/scattering_matrix.rst +10 -0
  287. tidy3d-2.12.0.dev0/notebooks/docs/features/sources.rst +15 -0
  288. tidy3d-2.12.0.dev0/notebooks/docs/features/structures.rst +18 -0
  289. tidy3d-2.12.0.dev0/notebooks/docs/features/symmetry.rst +10 -0
  290. tidy3d-2.12.0.dev0/notebooks/docs/index.rst +9 -0
  291. tidy3d-2.12.0.dev0/notebooks/img/8_channel_demultiplexer_1.png +3 -0
  292. tidy3d-2.12.0.dev0/notebooks/img/8_channel_demultiplexer_2.png +3 -0
  293. tidy3d-2.12.0.dev0/notebooks/img/8_channel_demultiplexer_3.png +3 -0
  294. tidy3d-2.12.0.dev0/notebooks/img/8_channel_demultiplexer_4.png +3 -0
  295. tidy3d-2.12.0.dev0/notebooks/img/90_bend_PSR_1.png +3 -0
  296. tidy3d-2.12.0.dev0/notebooks/img/90_bend_PSR_2.png +3 -0
  297. tidy3d-2.12.0.dev0/notebooks/img/APD.png +3 -0
  298. tidy3d-2.12.0.dev0/notebooks/img/AdjointCircuit.png +3 -0
  299. tidy3d-2.12.0.dev0/notebooks/img/AdjointInvDes.png +3 -0
  300. tidy3d-2.12.0.dev0/notebooks/img/AdjointMMI.png +3 -0
  301. tidy3d-2.12.0.dev0/notebooks/img/AdjointMultilayer.png +3 -0
  302. tidy3d-2.12.0.dev0/notebooks/img/AdjointPipeline.png +3 -0
  303. tidy3d-2.12.0.dev0/notebooks/img/Adjoint_Quickstart.png +3 -0
  304. tidy3d-2.12.0.dev0/notebooks/img/Adjoint_Quickstart_2.png +3 -0
  305. tidy3d-2.12.0.dev0/notebooks/img/Adjoint_Quickstart_3.png +3 -0
  306. tidy3d-2.12.0.dev0/notebooks/img/Anderson_localization_feature_image.png +3 -0
  307. tidy3d-2.12.0.dev0/notebooks/img/CPO.png +3 -0
  308. tidy3d-2.12.0.dev0/notebooks/img/CPO2.png +3 -0
  309. tidy3d-2.12.0.dev0/notebooks/img/DirectionalCoupler.png +3 -0
  310. tidy3d-2.12.0.dev0/notebooks/img/EMEBends.png +3 -0
  311. tidy3d-2.12.0.dev0/notebooks/img/EdgeCoupler.png +3 -0
  312. tidy3d-2.12.0.dev0/notebooks/img/FocusedGC.png +3 -0
  313. tidy3d-2.12.0.dev0/notebooks/img/Ge_plot.png +3 -0
  314. tidy3d-2.12.0.dev0/notebooks/img/Ge_struct.png +3 -0
  315. tidy3d-2.12.0.dev0/notebooks/img/HexagonalSupercell.png +3 -0
  316. tidy3d-2.12.0.dev0/notebooks/img/HybridSiEOM.png +3 -0
  317. tidy3d-2.12.0.dev0/notebooks/img/LN_adiabatic_coupler.png +3 -0
  318. tidy3d-2.12.0.dev0/notebooks/img/MZI_modulator.png +3 -0
  319. tidy3d-2.12.0.dev0/notebooks/img/MeepMMIBenchmark.png +3 -0
  320. tidy3d-2.12.0.dev0/notebooks/img/MetalOxideSunscreen_1.png +3 -0
  321. tidy3d-2.12.0.dev0/notebooks/img/MoS2_waveguide.png +3 -0
  322. tidy3d-2.12.0.dev0/notebooks/img/NanobeamCavity_1.png +3 -0
  323. tidy3d-2.12.0.dev0/notebooks/img/PSR.png +3 -0
  324. tidy3d-2.12.0.dev0/notebooks/img/RadiativeLossesModeSolver.png +3 -0
  325. tidy3d-2.12.0.dev0/notebooks/img/Si_plot.png +3 -0
  326. tidy3d-2.12.0.dev0/notebooks/img/Si_struct.png +3 -0
  327. tidy3d-2.12.0.dev0/notebooks/img/TFLN_EOM_Tidy3D.png +3 -0
  328. tidy3d-2.12.0.dev0/notebooks/img/TPA_FCA.png +3 -0
  329. tidy3d-2.12.0.dev0/notebooks/img/adjoint_11.png +3 -0
  330. tidy3d-2.12.0.dev0/notebooks/img/adjoint_12.png +3 -0
  331. tidy3d-2.12.0.dev0/notebooks/img/adjoint_13.png +3 -0
  332. tidy3d-2.12.0.dev0/notebooks/img/adjoint_15.png +3 -0
  333. tidy3d-2.12.0.dev0/notebooks/img/adjoint_16.png +3 -0
  334. tidy3d-2.12.0.dev0/notebooks/img/adjoint_17.png +3 -0
  335. tidy3d-2.12.0.dev0/notebooks/img/adjoint_18.png +3 -0
  336. tidy3d-2.12.0.dev0/notebooks/img/adjoint_21.png +3 -0
  337. tidy3d-2.12.0.dev0/notebooks/img/adjoint_25.png +3 -0
  338. tidy3d-2.12.0.dev0/notebooks/img/adjoint_26.png +3 -0
  339. tidy3d-2.12.0.dev0/notebooks/img/adjoint_27.png +3 -0
  340. tidy3d-2.12.0.dev0/notebooks/img/adjoint_3.png +3 -0
  341. tidy3d-2.12.0.dev0/notebooks/img/adjoint_30.png +3 -0
  342. tidy3d-2.12.0.dev0/notebooks/img/adjoint_5.png +3 -0
  343. tidy3d-2.12.0.dev0/notebooks/img/adjoint_6.png +3 -0
  344. tidy3d-2.12.0.dev0/notebooks/img/adjoint_7.png +3 -0
  345. tidy3d-2.12.0.dev0/notebooks/img/adjoint_8.png +3 -0
  346. tidy3d-2.12.0.dev0/notebooks/img/adjoint_9.png +3 -0
  347. tidy3d-2.12.0.dev0/notebooks/img/all_dielectric.png +3 -0
  348. tidy3d-2.12.0.dev0/notebooks/img/animation_wdm_adjoint.gif +3 -0
  349. tidy3d-2.12.0.dev0/notebooks/img/animation_wdm_adjoint2.gif +3 -0
  350. tidy3d-2.12.0.dev0/notebooks/img/animation_wdm_autograd.gif +3 -0
  351. tidy3d-2.12.0.dev0/notebooks/img/antenna_figure_of_merit.png +3 -0
  352. tidy3d-2.12.0.dev0/notebooks/img/apodized_grating_feature_image.png +3 -0
  353. tidy3d-2.12.0.dev0/notebooks/img/apodized_grating_feature_image_autograd.png +3 -0
  354. tidy3d-2.12.0.dev0/notebooks/img/autograd_overview_1.png +3 -0
  355. tidy3d-2.12.0.dev0/notebooks/img/autograd_overview_2.png +3 -0
  356. tidy3d-2.12.0.dev0/notebooks/img/band_structure.png +3 -0
  357. tidy3d-2.12.0.dev0/notebooks/img/bayesian_opt_y_junction.png +3 -0
  358. tidy3d-2.12.0.dev0/notebooks/img/bilayer_GC.png +3 -0
  359. tidy3d-2.12.0.dev0/notebooks/img/bilayer_GC_2.png +3 -0
  360. tidy3d-2.12.0.dev0/notebooks/img/bilayer_edge_coupler.png +3 -0
  361. tidy3d-2.12.0.dev0/notebooks/img/bilevel_PSR.png +3 -0
  362. tidy3d-2.12.0.dev0/notebooks/img/bilevel_PSR_2.png +3 -0
  363. tidy3d-2.12.0.dev0/notebooks/img/biosensor_grating.png +3 -0
  364. tidy3d-2.12.0.dev0/notebooks/img/bistability.png +3 -0
  365. tidy3d-2.12.0.dev0/notebooks/img/blazed_grating.png +3 -0
  366. tidy3d-2.12.0.dev0/notebooks/img/box_with_hole.png +3 -0
  367. tidy3d-2.12.0.dev0/notebooks/img/box_with_indent.png +3 -0
  368. tidy3d-2.12.0.dev0/notebooks/img/bragg_waveguide.png +3 -0
  369. tidy3d-2.12.0.dev0/notebooks/img/broadband_DC_1.png +3 -0
  370. tidy3d-2.12.0.dev0/notebooks/img/broadband_DC_2.png +3 -0
  371. tidy3d-2.12.0.dev0/notebooks/img/bullseye_psa_diagram.png +3 -0
  372. tidy3d-2.12.0.dev0/notebooks/img/bullseye_psa_thumb.png +3 -0
  373. tidy3d-2.12.0.dev0/notebooks/img/charge_modulator.png +3 -0
  374. tidy3d-2.12.0.dev0/notebooks/img/cylinder.png +3 -0
  375. tidy3d-2.12.0.dev0/notebooks/img/dbr_schematic.png +3 -0
  376. tidy3d-2.12.0.dev0/notebooks/img/design.png +3 -0
  377. tidy3d-2.12.0.dev0/notebooks/img/digital_splitter_invdes.png +3 -0
  378. tidy3d-2.12.0.dev0/notebooks/img/directional_coupler_surrogate.svg +3 -0
  379. tidy3d-2.12.0.dev0/notebooks/img/disordered_plasmonic_system.png +3 -0
  380. tidy3d-2.12.0.dev0/notebooks/img/diverged-fdtd-simulation.png +3 -0
  381. tidy3d-2.12.0.dev0/notebooks/img/diverged-fdtd-simulation1.png +3 -0
  382. tidy3d-2.12.0.dev0/notebooks/img/diverged-fdtd-slanted-wg-35deg-eps.png +3 -0
  383. tidy3d-2.12.0.dev0/notebooks/img/diverged-fdtd-slanted-wg-35deg-reflection.png +3 -0
  384. tidy3d-2.12.0.dev0/notebooks/img/doped_silicon_heater.png +3 -0
  385. tidy3d-2.12.0.dev0/notebooks/img/effective_index_approximation.png +3 -0
  386. tidy3d-2.12.0.dev0/notebooks/img/eme_evanescent_coupler.png +3 -0
  387. tidy3d-2.12.0.dev0/notebooks/img/eme_taper.png +3 -0
  388. tidy3d-2.12.0.dev0/notebooks/img/errorAnalysisME.png +3 -0
  389. tidy3d-2.12.0.dev0/notebooks/img/euler_bend_schematic.png +3 -0
  390. tidy3d-2.12.0.dev0/notebooks/img/exceptional_coupling_te.png +3 -0
  391. tidy3d-2.12.0.dev0/notebooks/img/export_to_gds.png +3 -0
  392. tidy3d-2.12.0.dev0/notebooks/img/fano_metasurface.png +3 -0
  393. tidy3d-2.12.0.dev0/notebooks/img/far_field_aperture.png +3 -0
  394. tidy3d-2.12.0.dev0/notebooks/img/fiber_lens.png +3 -0
  395. tidy3d-2.12.0.dev0/notebooks/img/flux_ID_nopredict.png +3 -0
  396. tidy3d-2.12.0.dev0/notebooks/img/flux_ID_predict.png +3 -0
  397. tidy3d-2.12.0.dev0/notebooks/img/freeform_coupler.png +3 -0
  398. tidy3d-2.12.0.dev0/notebooks/img/frequency_selective_surface.png +3 -0
  399. tidy3d-2.12.0.dev0/notebooks/img/fresnel_lens.png +3 -0
  400. tidy3d-2.12.0.dev0/notebooks/img/fresnel_lens_2.png +3 -0
  401. tidy3d-2.12.0.dev0/notebooks/img/graded_index_lens.png +3 -0
  402. tidy3d-2.12.0.dev0/notebooks/img/gradient_metasurface_reflector_schematic.png +3 -0
  403. tidy3d-2.12.0.dev0/notebooks/img/graphene_metamaterial_schematic.png +3 -0
  404. tidy3d-2.12.0.dev0/notebooks/img/grating_coupler.png +3 -0
  405. tidy3d-2.12.0.dev0/notebooks/img/grating_coupler_schematic.png +3 -0
  406. tidy3d-2.12.0.dev0/notebooks/img/grating_schematic.png +3 -0
  407. tidy3d-2.12.0.dev0/notebooks/img/hBN_metamaterial.png +3 -0
  408. tidy3d-2.12.0.dev0/notebooks/img/heat_dissipation_SOI.png +3 -0
  409. tidy3d-2.12.0.dev0/notebooks/img/heat_solver_schematic.png +3 -0
  410. tidy3d-2.12.0.dev0/notebooks/img/hexagonal_lattice.png +3 -0
  411. tidy3d-2.12.0.dev0/notebooks/img/high_q_silicon_feature_image.png +3 -0
  412. tidy3d-2.12.0.dev0/notebooks/img/hollow_core_fiber.png +3 -0
  413. tidy3d-2.12.0.dev0/notebooks/img/icecream_nonunionized.png +3 -0
  414. tidy3d-2.12.0.dev0/notebooks/img/icecream_nonunionized_wire.png +3 -0
  415. tidy3d-2.12.0.dev0/notebooks/img/icecream_unionized.png +3 -0
  416. tidy3d-2.12.0.dev0/notebooks/img/integrated_antenna.png +3 -0
  417. tidy3d-2.12.0.dev0/notebooks/img/invdes.png +3 -0
  418. tidy3d-2.12.0.dev0/notebooks/img/invdes_phc.png +3 -0
  419. tidy3d-2.12.0.dev0/notebooks/img/ir_metalens.png +3 -0
  420. tidy3d-2.12.0.dev0/notebooks/img/kerrSideband.png +3 -0
  421. tidy3d-2.12.0.dev0/notebooks/img/l3_cavity.png +3 -0
  422. tidy3d-2.12.0.dev0/notebooks/img/linear_taper.png +3 -0
  423. tidy3d-2.12.0.dev0/notebooks/img/local_refinement.png +3 -0
  424. tidy3d-2.12.0.dev0/notebooks/img/luneburg_lens_taper.png +3 -0
  425. tidy3d-2.12.0.dev0/notebooks/img/metalens.png +3 -0
  426. tidy3d-2.12.0.dev0/notebooks/img/metalens_diagram.png +3 -0
  427. tidy3d-2.12.0.dev0/notebooks/img/metalens_gds.png +3 -0
  428. tidy3d-2.12.0.dev0/notebooks/img/metasurface.png +3 -0
  429. tidy3d-2.12.0.dev0/notebooks/img/metasurface_qbic.png +3 -0
  430. tidy3d-2.12.0.dev0/notebooks/img/microLED.png +3 -0
  431. tidy3d-2.12.0.dev0/notebooks/img/mim.png +3 -0
  432. tidy3d-2.12.0.dev0/notebooks/img/mim_co2_sensor.png +3 -0
  433. tidy3d-2.12.0.dev0/notebooks/img/mmi_mux.png +3 -0
  434. tidy3d-2.12.0.dev0/notebooks/img/mmi_power_splitter_2x2.png +3 -0
  435. tidy3d-2.12.0.dev0/notebooks/img/mmi_schematic.png +3 -0
  436. tidy3d-2.12.0.dev0/notebooks/img/mmi_schematic2.png +3 -0
  437. tidy3d-2.12.0.dev0/notebooks/img/mode_angled.png +3 -0
  438. tidy3d-2.12.0.dev0/notebooks/img/mode_solver_gui.png +3 -0
  439. tidy3d-2.12.0.dev0/notebooks/img/multi_patch_antenna.png +3 -0
  440. tidy3d-2.12.0.dev0/notebooks/img/multipoleExpansion.png +3 -0
  441. tidy3d-2.12.0.dev0/notebooks/img/n2f_diagram.png +3 -0
  442. tidy3d-2.12.0.dev0/notebooks/img/nanorod_array.png +3 -0
  443. tidy3d-2.12.0.dev0/notebooks/img/nonhermitian_metagrating.png +3 -0
  444. tidy3d-2.12.0.dev0/notebooks/img/on_chip_metalens.png +3 -0
  445. tidy3d-2.12.0.dev0/notebooks/img/opticalForces.png +3 -0
  446. tidy3d-2.12.0.dev0/notebooks/img/optical_hybrid_schematic.png +3 -0
  447. tidy3d-2.12.0.dev0/notebooks/img/optical_luneburg_lens_schematic.png +3 -0
  448. tidy3d-2.12.0.dev0/notebooks/img/optical_switch.png +3 -0
  449. tidy3d-2.12.0.dev0/notebooks/img/optimized_reflector.png +3 -0
  450. tidy3d-2.12.0.dev0/notebooks/img/optimized_sbend.png +3 -0
  451. tidy3d-2.12.0.dev0/notebooks/img/particle_swarm_optimization_pbs.png +3 -0
  452. tidy3d-2.12.0.dev0/notebooks/img/pbs_swg_am.png +3 -0
  453. tidy3d-2.12.0.dev0/notebooks/img/pbs_swg_am_top.png +3 -0
  454. tidy3d-2.12.0.dev0/notebooks/img/pec_optimization_workflow.png +3 -0
  455. tidy3d-2.12.0.dev0/notebooks/img/pec_pmc.png +3 -0
  456. tidy3d-2.12.0.dev0/notebooks/img/periodic_eme_grating.png +3 -0
  457. tidy3d-2.12.0.dev0/notebooks/img/phase_change_antennas.png +3 -0
  458. tidy3d-2.12.0.dev0/notebooks/img/phc_polarization_filter.png +3 -0
  459. tidy3d-2.12.0.dev0/notebooks/img/photothermal_waveguide.png +3 -0
  460. tidy3d-2.12.0.dev0/notebooks/img/pin_phase_shifter.png +3 -0
  461. tidy3d-2.12.0.dev0/notebooks/img/plasmonic_nanoparticle_feature_image.png +3 -0
  462. tidy3d-2.12.0.dev0/notebooks/img/plasmonic_phothotermal_heating.png +3 -0
  463. tidy3d-2.12.0.dev0/notebooks/img/pn_mzi_circuit.png +3 -0
  464. tidy3d-2.12.0.dev0/notebooks/img/pn_mzi_cross.png +3 -0
  465. tidy3d-2.12.0.dev0/notebooks/img/polarizer_rotator.png +3 -0
  466. tidy3d-2.12.0.dev0/notebooks/img/ppp_junction.png +3 -0
  467. tidy3d-2.12.0.dev0/notebooks/img/prefab_intro.png +3 -0
  468. tidy3d-2.12.0.dev0/notebooks/img/prefab_target.png +3 -0
  469. tidy3d-2.12.0.dev0/notebooks/img/prefab_wdm.png +3 -0
  470. tidy3d-2.12.0.dev0/notebooks/img/radiative_cooling_glass.png +3 -0
  471. tidy3d-2.12.0.dev0/notebooks/img/rf_autograd_1_patch_antenna_thumbnail.png +3 -0
  472. tidy3d-2.12.0.dev0/notebooks/img/rgb_cmos_sensor.png +3 -0
  473. tidy3d-2.12.0.dev0/notebooks/img/ring_modes.png +3 -0
  474. tidy3d-2.12.0.dev0/notebooks/img/ring_resonator.png +3 -0
  475. tidy3d-2.12.0.dev0/notebooks/img/scale_invariant_waveguide.png +3 -0
  476. tidy3d-2.12.0.dev0/notebooks/img/semi_lens_taper.png +3 -0
  477. tidy3d-2.12.0.dev0/notebooks/img/silicon_to_plasmonic.png +3 -0
  478. tidy3d-2.12.0.dev0/notebooks/img/single_patch_antenna.png +3 -0
  479. tidy3d-2.12.0.dev0/notebooks/img/sphere_rcs_feature_image.png +3 -0
  480. tidy3d-2.12.0.dev0/notebooks/img/spin_selector.png +3 -0
  481. tidy3d-2.12.0.dev0/notebooks/img/splitter.png +3 -0
  482. tidy3d-2.12.0.dev0/notebooks/img/squareLED.png +3 -0
  483. tidy3d-2.12.0.dev0/notebooks/img/strip_to_slot_1.png +3 -0
  484. tidy3d-2.12.0.dev0/notebooks/img/strip_to_slot_2.png +3 -0
  485. tidy3d-2.12.0.dev0/notebooks/img/strip_to_slot_3.png +3 -0
  486. tidy3d-2.12.0.dev0/notebooks/img/swg_crossing_1.png +3 -0
  487. tidy3d-2.12.0.dev0/notebooks/img/swg_crossing_2.png +3 -0
  488. tidy3d-2.12.0.dev0/notebooks/img/swg_crossing_feature_image.png +3 -0
  489. tidy3d-2.12.0.dev0/notebooks/img/swg_polarizer.png +3 -0
  490. tidy3d-2.12.0.dev0/notebooks/img/tapered_waveguide_dispersion.png +3 -0
  491. tidy3d-2.12.0.dev0/notebooks/img/thermally_tuned_ring.png +3 -0
  492. tidy3d-2.12.0.dev0/notebooks/img/thermally_tuned_waveguide.png +3 -0
  493. tidy3d-2.12.0.dev0/notebooks/img/thz_ring_resonator.png +3 -0
  494. tidy3d-2.12.0.dev0/notebooks/img/tidyfab0_workflow.png +3 -0
  495. tidy3d-2.12.0.dev0/notebooks/img/tkinter_gui.png +3 -0
  496. tidy3d-2.12.0.dev0/notebooks/img/topological_phc.png +3 -0
  497. tidy3d-2.12.0.dev0/notebooks/img/transient_thermooptic.png +3 -0
  498. tidy3d-2.12.0.dev0/notebooks/img/tunable_chiral_metasurface.png +3 -0
  499. tidy3d-2.12.0.dev0/notebooks/img/two_boxes.png +3 -0
  500. tidy3d-2.12.0.dev0/notebooks/img/two_level_metalens.jpg +3 -0
  501. tidy3d-2.12.0.dev0/notebooks/img/vertical_coupler.png +3 -0
  502. tidy3d-2.12.0.dev0/notebooks/img/vertical_grating_coupler.png +3 -0
  503. tidy3d-2.12.0.dev0/notebooks/img/vertical_pin.png +3 -0
  504. tidy3d-2.12.0.dev0/notebooks/img/vortexMetasurface_1.png +3 -0
  505. tidy3d-2.12.0.dev0/notebooks/img/waveguide_bend.png +3 -0
  506. tidy3d-2.12.0.dev0/notebooks/img/waveguide_crossing.png +3 -0
  507. tidy3d-2.12.0.dev0/notebooks/img/waveguide_to_ring.png +3 -0
  508. tidy3d-2.12.0.dev0/notebooks/img/wga_schematic.png +3 -0
  509. tidy3d-2.12.0.dev0/notebooks/img/wga_schematic_2.png +3 -0
  510. tidy3d-2.12.0.dev0/notebooks/img/y_branch_level_set.png +3 -0
  511. tidy3d-2.12.0.dev0/notebooks/img/y_junction_schematic.png +3 -0
  512. tidy3d-2.12.0.dev0/notebooks/img/yagi_uda_antenna_schematic_1.png +3 -0
  513. tidy3d-2.12.0.dev0/notebooks/img/yagi_uda_antenna_schematic_2.png +3 -0
  514. tidy3d-2.12.0.dev0/notebooks/img/zone_plate.png +3 -0
  515. tidy3d-2.12.0.dev0/notebooks/misc/8ChannelDemultiplexer.gds +3 -0
  516. tidy3d-2.12.0.dev0/notebooks/misc/Cr_Sytchkova.csv +3 -0
  517. tidy3d-2.12.0.dev0/notebooks/misc/Focusing_GC.gds +3 -0
  518. tidy3d-2.12.0.dev0/notebooks/misc/GST_A_nk.csv +3 -0
  519. tidy3d-2.12.0.dev0/notebooks/misc/GST_C_nk.csv +3 -0
  520. tidy3d-2.12.0.dev0/notebooks/misc/McPeak.csv +3 -0
  521. tidy3d-2.12.0.dev0/notebooks/misc/MeepMMI.txt +3 -0
  522. tidy3d-2.12.0.dev0/notebooks/misc/MoS2_nk.csv +3 -0
  523. tidy3d-2.12.0.dev0/notebooks/misc/amorphous_silicon_from_paper.txt +3 -0
  524. tidy3d-2.12.0.dev0/notebooks/misc/blue_eps.csv +3 -0
  525. tidy3d-2.12.0.dev0/notebooks/misc/box.stl +3 -0
  526. tidy3d-2.12.0.dev0/notebooks/misc/box_with_hole.stl +3 -0
  527. tidy3d-2.12.0.dev0/notebooks/misc/box_with_indent.stl +3 -0
  528. tidy3d-2.12.0.dev0/notebooks/misc/check_misc_references.py +284 -0
  529. tidy3d-2.12.0.dev0/notebooks/misc/chip_to_chip_coupler.stl +3 -0
  530. tidy3d-2.12.0.dev0/notebooks/misc/coupler.gds +3 -0
  531. tidy3d-2.12.0.dev0/notebooks/misc/drc_runset.drc +3 -0
  532. tidy3d-2.12.0.dev0/notebooks/misc/gaussian_beam_data.h5 +3 -0
  533. tidy3d-2.12.0.dev0/notebooks/misc/green_eps.csv +3 -0
  534. tidy3d-2.12.0.dev0/notebooks/misc/heat_dissipation_SOI.xlsx +3 -0
  535. tidy3d-2.12.0.dev0/notebooks/misc/icecream_nonunionized.stl +3 -0
  536. tidy3d-2.12.0.dev0/notebooks/misc/icecream_unionized.stl +3 -0
  537. tidy3d-2.12.0.dev0/notebooks/misc/import_file_mapping.json +3 -0
  538. tidy3d-2.12.0.dev0/notebooks/misc/inv_des_demo.gds +3 -0
  539. tidy3d-2.12.0.dev0/notebooks/misc/inv_des_diamond_light_extractor.gds +3 -0
  540. tidy3d-2.12.0.dev0/notebooks/misc/inv_des_light_extractor.gds +3 -0
  541. tidy3d-2.12.0.dev0/notebooks/misc/inv_des_light_extractor_autograd.gds +3 -0
  542. tidy3d-2.12.0.dev0/notebooks/misc/inv_des_mode_conv.gds +3 -0
  543. tidy3d-2.12.0.dev0/notebooks/misc/inv_des_taper.gds +3 -0
  544. tidy3d-2.12.0.dev0/notebooks/misc/inv_des_wdm.gds +3 -0
  545. tidy3d-2.12.0.dev0/notebooks/misc/inv_des_wdm_ag.gds +3 -0
  546. tidy3d-2.12.0.dev0/notebooks/misc/inv_des_ybranch.gds +3 -0
  547. tidy3d-2.12.0.dev0/notebooks/misc/invdes_bend.gds +3 -0
  548. tidy3d-2.12.0.dev0/notebooks/misc/inverse_des_wg_bend.gds +3 -0
  549. tidy3d-2.12.0.dev0/notebooks/misc/inverse_designed_gc.gds +3 -0
  550. tidy3d-2.12.0.dev0/notebooks/misc/logo.png +3 -0
  551. tidy3d-2.12.0.dev0/notebooks/misc/mat_Al2O3.csv +3 -0
  552. tidy3d-2.12.0.dev0/notebooks/misc/mat_SiO2.csv +3 -0
  553. tidy3d-2.12.0.dev0/notebooks/misc/mie_bRCS_phi0_2lambda_epsr4.txt +3 -0
  554. tidy3d-2.12.0.dev0/notebooks/misc/mie_bRCS_phi90_2lambda_epsr4.txt +3 -0
  555. tidy3d-2.12.0.dev0/notebooks/misc/mie_electric_dipole +3 -0
  556. tidy3d-2.12.0.dev0/notebooks/misc/mie_electric_quadrupole +3 -0
  557. tidy3d-2.12.0.dev0/notebooks/misc/mie_magnetic_dipole +3 -0
  558. tidy3d-2.12.0.dev0/notebooks/misc/mie_magnetic_quadrupole +3 -0
  559. tidy3d-2.12.0.dev0/notebooks/misc/mie_plasmonic_RCS.txt +3 -0
  560. tidy3d-2.12.0.dev0/notebooks/misc/mie_plasmonic_flux_abs.txt +3 -0
  561. tidy3d-2.12.0.dev0/notebooks/misc/mie_plasmonic_flux_scat.txt +3 -0
  562. tidy3d-2.12.0.dev0/notebooks/misc/mmi_simulation_data.h5 +3 -0
  563. tidy3d-2.12.0.dev0/notebooks/misc/mmi_stl.stl +3 -0
  564. tidy3d-2.12.0.dev0/notebooks/misc/my_medium.json +3 -0
  565. tidy3d-2.12.0.dev0/notebooks/misc/nk_data.csv +3 -0
  566. tidy3d-2.12.0.dev0/notebooks/misc/optical_hybrid_stl.stl +3 -0
  567. tidy3d-2.12.0.dev0/notebooks/misc/optimized_L3_holes.txt +3 -0
  568. tidy3d-2.12.0.dev0/notebooks/misc/optimized_reflector.gds +3 -0
  569. tidy3d-2.12.0.dev0/notebooks/misc/optimized_sbend.gds +3 -0
  570. tidy3d-2.12.0.dev0/notebooks/misc/optimized_spin_selector.gds +3 -0
  571. tidy3d-2.12.0.dev0/notebooks/misc/prefab_gc.gds +3 -0
  572. tidy3d-2.12.0.dev0/notebooks/misc/red_eps.csv +3 -0
  573. tidy3d-2.12.0.dev0/notebooks/misc/rf_autograd_1_patch_antenna_optimization.npy +3 -0
  574. tidy3d-2.12.0.dev0/notebooks/misc/two_boxes.stl +3 -0
  575. tidy3d-2.12.0.dev0/notebooks/misc/waveguide_mode_data.h5 +3 -0
  576. tidy3d-2.12.0.dev0/pyproject.toml +383 -0
  577. tidy3d-2.12.0.dev0/schemas/EMESimulation.json +14628 -0
  578. tidy3d-2.12.0.dev0/schemas/HeatChargeSimulation.json +11054 -0
  579. tidy3d-2.12.0.dev0/schemas/HeatSimulation.json +11054 -0
  580. tidy3d-2.12.0.dev0/schemas/ModeSimulation.json +14538 -0
  581. tidy3d-2.12.0.dev0/schemas/Simulation.json +19371 -0
  582. tidy3d-2.12.0.dev0/schemas/TerminalComponentModeler.json +20517 -0
  583. tidy3d-2.12.0.dev0/tests/config/test_loader.py +208 -0
  584. tidy3d-2.12.0.dev0/tests/config/test_manager.py +283 -0
  585. tidy3d-2.12.0.dev0/tests/config/test_nexus_config.py +375 -0
  586. tidy3d-2.12.0.dev0/tests/config/test_versioning.py +1270 -0
  587. tidy3d-2.12.0.dev0/tests/conftest.py +172 -0
  588. tidy3d-2.12.0.dev0/tests/sims/full_charge.h5 +3 -0
  589. tidy3d-2.12.0.dev0/tests/sims/full_charge.json +497 -0
  590. tidy3d-2.12.0.dev0/tests/sims/full_conduction.h5 +3 -0
  591. tidy3d-2.12.0.dev0/tests/sims/full_conduction.json +300 -0
  592. tidy3d-2.12.0.dev0/tests/sims/full_fdtd.h5 +3 -0
  593. tidy3d-2.12.0.dev0/tests/sims/full_fdtd.json +3002 -0
  594. tidy3d-2.12.0.dev0/tests/sims/full_fdtd_field_projection.h5 +3 -0
  595. tidy3d-2.12.0.dev0/tests/sims/full_fdtd_field_projection.json +3602 -0
  596. tidy3d-2.12.0.dev0/tests/sims/full_steady_heat.h5 +3 -0
  597. tidy3d-2.12.0.dev0/tests/sims/full_steady_heat.json +296 -0
  598. tidy3d-2.12.0.dev0/tests/sims/full_unsteady_heat.h5 +3 -0
  599. tidy3d-2.12.0.dev0/tests/sims/full_unsteady_heat.json +306 -0
  600. tidy3d-2.12.0.dev0/tests/test_cli/test_commands.py +26 -0
  601. tidy3d-2.12.0.dev0/tests/test_cli/test_mcp.py +41 -0
  602. tidy3d-2.12.0.dev0/tests/test_components/autograd/numerical/conftest.py +46 -0
  603. tidy3d-2.12.0.dev0/tests/test_components/autograd/numerical/numerical_derivative_helpers.py +55 -0
  604. tidy3d-2.12.0.dev0/tests/test_components/autograd/numerical/numerical_test_helpers.py +98 -0
  605. tidy3d-2.12.0.dev0/tests/test_components/autograd/numerical/result_models.py +100 -0
  606. tidy3d-2.12.0.dev0/tests/test_components/autograd/numerical/test_autograd_cm_custom_vjp_numerical_structures.py +411 -0
  607. tidy3d-2.12.0.dev0/tests/test_components/autograd/numerical/test_autograd_mode_clip_operation_numerical.py +620 -0
  608. tidy3d-2.12.0.dev0/tests/test_components/autograd/numerical/test_autograd_numerical.py +526 -0
  609. tidy3d-2.12.0.dev0/tests/test_components/autograd/numerical/test_autograd_numerical_structures.py +424 -0
  610. tidy3d-2.12.0.dev0/tests/test_components/autograd/numerical/test_autograd_sphere_trianglemesh_numerical.py +886 -0
  611. tidy3d-2.12.0.dev0/tests/test_components/autograd/numerical/test_clip_operation_consistency.py +360 -0
  612. tidy3d-2.12.0.dev0/tests/test_components/autograd/numerical/test_flexible_dielectric_pec_boundary.py +239 -0
  613. tidy3d-2.12.0.dev0/tests/test_components/autograd/performance/test_custom_medium_performance.py +557 -0
  614. tidy3d-2.12.0.dev0/tests/test_components/autograd/performance/test_shape_performance.py +114 -0
  615. tidy3d-2.12.0.dev0/tests/test_components/autograd/test_autograd.py +5383 -0
  616. tidy3d-2.12.0.dev0/tests/test_components/autograd/test_autograd_polyslab.py +879 -0
  617. tidy3d-2.12.0.dev0/tests/test_components/autograd/test_parallel_adjoint.py +1016 -0
  618. tidy3d-2.12.0.dev0/tests/test_components/test_absorbers.py +598 -0
  619. tidy3d-2.12.0.dev0/tests/test_components/test_base.py +720 -0
  620. tidy3d-2.12.0.dev0/tests/test_components/test_eme.py +4046 -0
  621. tidy3d-2.12.0.dev0/tests/test_components/test_field_projection.py +2209 -0
  622. tidy3d-2.12.0.dev0/tests/test_components/test_grid_spec.py +1031 -0
  623. tidy3d-2.12.0.dev0/tests/test_components/test_heat.py +814 -0
  624. tidy3d-2.12.0.dev0/tests/test_components/test_heat_charge.py +3487 -0
  625. tidy3d-2.12.0.dev0/tests/test_components/test_layerrefinement.py +1535 -0
  626. tidy3d-2.12.0.dev0/tests/test_components/test_lumped_element.py +1779 -0
  627. tidy3d-2.12.0.dev0/tests/test_components/test_medium.py +1159 -0
  628. tidy3d-2.12.0.dev0/tests/test_components/test_polyslab_set.py +1604 -0
  629. tidy3d-2.12.0.dev0/tests/test_components/test_relax_courant.py +202 -0
  630. tidy3d-2.12.0.dev0/tests/test_components/test_scene.py +759 -0
  631. tidy3d-2.12.0.dev0/tests/test_components/test_simulation.py +5239 -0
  632. tidy3d-2.12.0.dev0/tests/test_components/test_simulation_plot_3d.py +123 -0
  633. tidy3d-2.12.0.dev0/tests/test_components/test_source_frames.py +290 -0
  634. tidy3d-2.12.0.dev0/tests/test_components/test_structure.py +421 -0
  635. tidy3d-2.12.0.dev0/tests/test_components/test_types.py +378 -0
  636. tidy3d-2.12.0.dev0/tests/test_data/test_monitor_data.py +2324 -0
  637. tidy3d-2.12.0.dev0/tests/test_data/test_sim_data.py +671 -0
  638. tidy3d-2.12.0.dev0/tests/test_material_library/test_material_library.py +178 -0
  639. tidy3d-2.12.0.dev0/tests/test_package/test_config.py +26 -0
  640. tidy3d-2.12.0.dev0/tests/test_plugins/autograd/invdes/test_initialize_params_from_sim.py +353 -0
  641. tidy3d-2.12.0.dev0/tests/test_plugins/smatrix/terminal_component_modeler_def.py +749 -0
  642. tidy3d-2.12.0.dev0/tests/test_plugins/smatrix/test_component_modeler.py +575 -0
  643. tidy3d-2.12.0.dev0/tests/test_plugins/smatrix/test_component_modeler_autograd.py +494 -0
  644. tidy3d-2.12.0.dev0/tests/test_plugins/smatrix/test_terminal_component_modeler.py +4117 -0
  645. tidy3d-2.12.0.dev0/tests/test_plugins/smatrix/test_terminal_plot.py +472 -0
  646. tidy3d-2.12.0.dev0/tests/test_plugins/test_design.py +1262 -0
  647. tidy3d-2.12.0.dev0/tests/test_plugins/test_invdes.py +924 -0
  648. tidy3d-2.12.0.dev0/tests/test_plugins/test_mode_solver.py +2347 -0
  649. tidy3d-2.12.0.dev0/tests/test_web/conftest.py +19 -0
  650. tidy3d-2.12.0.dev0/tests/test_web/test_file_util.py +22 -0
  651. tidy3d-2.12.0.dev0/tests/test_web/test_local_cache.py +1256 -0
  652. tidy3d-2.12.0.dev0/tests/test_web/test_material_fitter.py +88 -0
  653. tidy3d-2.12.0.dev0/tests/test_web/test_mcp.py +339 -0
  654. tidy3d-2.12.0.dev0/tests/test_web/test_tidy3d_folder.py +72 -0
  655. tidy3d-2.12.0.dev0/tests/test_web/test_tidy3d_material_library.py +32 -0
  656. tidy3d-2.12.0.dev0/tests/test_web/test_tidy3d_stub.py +300 -0
  657. tidy3d-2.12.0.dev0/tests/test_web/test_tidy3d_task.py +475 -0
  658. tidy3d-2.12.0.dev0/tests/test_web/test_webapi.py +3126 -0
  659. tidy3d-2.12.0.dev0/tests/test_web/test_webapi_account.py +53 -0
  660. tidy3d-2.12.0.dev0/tests/test_web/test_webapi_eme.py +386 -0
  661. tidy3d-2.12.0.dev0/tests/test_web/test_webapi_heat.py +365 -0
  662. tidy3d-2.12.0.dev0/tests/test_web/test_webapi_mode.py +493 -0
  663. tidy3d-2.12.0.dev0/tests/test_web/test_webapi_mode_sim.py +425 -0
  664. tidy3d-2.12.0.dev0/tests/utils.py +1461 -0
  665. tidy3d-2.12.0.dev0/tidy3d/__init__.py +958 -0
  666. tidy3d-2.12.0.dev0/tidy3d/components/autograd/derivative_utils.py +1639 -0
  667. tidy3d-2.12.0.dev0/tidy3d/components/autograd/types.py +180 -0
  668. tidy3d-2.12.0.dev0/tidy3d/components/base.py +2278 -0
  669. tidy3d-2.12.0.dev0/tidy3d/components/base_sim/simulation.py +719 -0
  670. tidy3d-2.12.0.dev0/tidy3d/components/boundary.py +1613 -0
  671. tidy3d-2.12.0.dev0/tidy3d/components/data/data_array.py +2501 -0
  672. tidy3d-2.12.0.dev0/tidy3d/components/data/monitor_data.py +5307 -0
  673. tidy3d-2.12.0.dev0/tidy3d/components/data/sim_data.py +1692 -0
  674. tidy3d-2.12.0.dev0/tidy3d/components/dispersion_fitter.py +1051 -0
  675. tidy3d-2.12.0.dev0/tidy3d/components/eme/data/dataset.py +460 -0
  676. tidy3d-2.12.0.dev0/tidy3d/components/eme/data/sim_data.py +651 -0
  677. tidy3d-2.12.0.dev0/tidy3d/components/eme/data/stage.py +220 -0
  678. tidy3d-2.12.0.dev0/tidy3d/components/eme/grid.py +918 -0
  679. tidy3d-2.12.0.dev0/tidy3d/components/eme/simulation.py +3117 -0
  680. tidy3d-2.12.0.dev0/tidy3d/components/eme/sweep.py +231 -0
  681. tidy3d-2.12.0.dev0/tidy3d/components/field_projection/approximate_angle.py +181 -0
  682. tidy3d-2.12.0.dev0/tidy3d/components/field_projection/approximate_paired.py +395 -0
  683. tidy3d-2.12.0.dev0/tidy3d/components/field_projection/common.py +829 -0
  684. tidy3d-2.12.0.dev0/tidy3d/components/field_projection/exact.py +932 -0
  685. tidy3d-2.12.0.dev0/tidy3d/components/file_util.py +107 -0
  686. tidy3d-2.12.0.dev0/tidy3d/components/geometry/base.py +4371 -0
  687. tidy3d-2.12.0.dev0/tidy3d/components/geometry/polyslab.py +3449 -0
  688. tidy3d-2.12.0.dev0/tidy3d/components/geometry/vertex_utils.py +59 -0
  689. tidy3d-2.12.0.dev0/tidy3d/components/grid/corner_finder.py +627 -0
  690. tidy3d-2.12.0.dev0/tidy3d/components/grid/grid_spec.py +3847 -0
  691. tidy3d-2.12.0.dev0/tidy3d/components/lumped_element.py +2237 -0
  692. tidy3d-2.12.0.dev0/tidy3d/components/material/multi_physics.py +203 -0
  693. tidy3d-2.12.0.dev0/tidy3d/components/material/types.py +26 -0
  694. tidy3d-2.12.0.dev0/tidy3d/components/medium.py +7783 -0
  695. tidy3d-2.12.0.dev0/tidy3d/components/mode/simulation.py +683 -0
  696. tidy3d-2.12.0.dev0/tidy3d/components/mode/solver.py +1403 -0
  697. tidy3d-2.12.0.dev0/tidy3d/components/monitor.py +2232 -0
  698. tidy3d-2.12.0.dev0/tidy3d/components/nonlinear.py +422 -0
  699. tidy3d-2.12.0.dev0/tidy3d/components/parameter_perturbation.py +1785 -0
  700. tidy3d-2.12.0.dev0/tidy3d/components/scene.py +2112 -0
  701. tidy3d-2.12.0.dev0/tidy3d/components/simulation.py +6732 -0
  702. tidy3d-2.12.0.dev0/tidy3d/components/source/time.py +730 -0
  703. tidy3d-2.12.0.dev0/tidy3d/components/spice/analysis/ac.py +97 -0
  704. tidy3d-2.12.0.dev0/tidy3d/components/spice/analysis/dc.py +160 -0
  705. tidy3d-2.12.0.dev0/tidy3d/components/spice/sources/ac.py +61 -0
  706. tidy3d-2.12.0.dev0/tidy3d/components/structure.py +1115 -0
  707. tidy3d-2.12.0.dev0/tidy3d/components/tcad/bandgap_energy.py +66 -0
  708. tidy3d-2.12.0.dev0/tidy3d/components/tcad/data/sim_data.py +795 -0
  709. tidy3d-2.12.0.dev0/tidy3d/components/tcad/doping.py +433 -0
  710. tidy3d-2.12.0.dev0/tidy3d/components/tcad/generation_recombination.py +425 -0
  711. tidy3d-2.12.0.dev0/tidy3d/components/tcad/grid.py +299 -0
  712. tidy3d-2.12.0.dev0/tidy3d/components/tcad/mobility.py +328 -0
  713. tidy3d-2.12.0.dev0/tidy3d/components/tcad/simulation/heat.py +58 -0
  714. tidy3d-2.12.0.dev0/tidy3d/components/tcad/simulation/heat_charge.py +2269 -0
  715. tidy3d-2.12.0.dev0/tidy3d/components/tcad/types.py +73 -0
  716. tidy3d-2.12.0.dev0/tidy3d/components/types/__init__.py +139 -0
  717. tidy3d-2.12.0.dev0/tidy3d/components/types/base.py +333 -0
  718. tidy3d-2.12.0.dev0/tidy3d/components/types/utils.py +100 -0
  719. tidy3d-2.12.0.dev0/tidy3d/components/viz/plot_sim_3d.py +215 -0
  720. tidy3d-2.12.0.dev0/tidy3d/config/README.md +96 -0
  721. tidy3d-2.12.0.dev0/tidy3d/config/__init__.py +183 -0
  722. tidy3d-2.12.0.dev0/tidy3d/config/loader.py +852 -0
  723. tidy3d-2.12.0.dev0/tidy3d/config/sections.py +711 -0
  724. tidy3d-2.12.0.dev0/tidy3d/material_library/material_library.py +2743 -0
  725. tidy3d-2.12.0.dev0/tidy3d/material_library/material_reference.py +231 -0
  726. tidy3d-2.12.0.dev0/tidy3d/plugins/autograd/README.md +299 -0
  727. tidy3d-2.12.0.dev0/tidy3d/plugins/autograd/primitives/interpolate.py +847 -0
  728. tidy3d-2.12.0.dev0/tidy3d/plugins/design/design.py +811 -0
  729. tidy3d-2.12.0.dev0/tidy3d/plugins/invdes/README.md +557 -0
  730. tidy3d-2.12.0.dev0/tidy3d/plugins/invdes/optimizer.py +294 -0
  731. tidy3d-2.12.0.dev0/tidy3d/plugins/invdes/polyslab_set.py +493 -0
  732. tidy3d-2.12.0.dev0/tidy3d/plugins/invdes/region.py +391 -0
  733. tidy3d-2.12.0.dev0/tidy3d/plugins/smatrix/__init__.py +67 -0
  734. tidy3d-2.12.0.dev0/tidy3d/plugins/smatrix/analysis/terminal.py +451 -0
  735. tidy3d-2.12.0.dev0/tidy3d/plugins/smatrix/component_modelers/modal.py +385 -0
  736. tidy3d-2.12.0.dev0/tidy3d/plugins/smatrix/component_modelers/terminal.py +2161 -0
  737. tidy3d-2.12.0.dev0/tidy3d/plugins/smatrix/ports/base_lumped.py +234 -0
  738. tidy3d-2.12.0.dev0/tidy3d/plugins/smatrix/ports/base_terminal.py +59 -0
  739. tidy3d-2.12.0.dev0/tidy3d/plugins/smatrix/ports/coaxial_lumped.py +446 -0
  740. tidy3d-2.12.0.dev0/tidy3d/plugins/smatrix/ports/rectangular_lumped.py +606 -0
  741. tidy3d-2.12.0.dev0/tidy3d/plugins/smatrix/ports/wave.py +1588 -0
  742. tidy3d-2.12.0.dev0/tidy3d/plugins/smatrix/utils.py +464 -0
  743. tidy3d-2.12.0.dev0/tidy3d/rf.py +234 -0
  744. tidy3d-2.12.0.dev0/tidy3d/version.py +3 -0
  745. tidy3d-2.12.0.dev0/tidy3d/web/api/autograd/autograd.py +1397 -0
  746. tidy3d-2.12.0.dev0/tidy3d/web/api/autograd/backward.py +996 -0
  747. tidy3d-2.12.0.dev0/tidy3d/web/api/autograd/constants.py +14 -0
  748. tidy3d-2.12.0.dev0/tidy3d/web/api/autograd/context.py +295 -0
  749. tidy3d-2.12.0.dev0/tidy3d/web/api/autograd/hooks.py +14 -0
  750. tidy3d-2.12.0.dev0/tidy3d/web/api/autograd/parallel_adjoint.py +492 -0
  751. tidy3d-2.12.0.dev0/tidy3d/web/api/autograd/strategy.py +725 -0
  752. tidy3d-2.12.0.dev0/tidy3d/web/api/autograd/types.py +277 -0
  753. tidy3d-2.12.0.dev0/tidy3d/web/api/autograd/utils.py +120 -0
  754. tidy3d-2.12.0.dev0/tidy3d/web/api/container.py +2200 -0
  755. tidy3d-2.12.0.dev0/tidy3d/web/api/container_types.py +26 -0
  756. tidy3d-2.12.0.dev0/tidy3d/web/api/container_utils.py +141 -0
  757. tidy3d-2.12.0.dev0/tidy3d/web/api/run.py +321 -0
  758. tidy3d-2.12.0.dev0/tidy3d/web/api/webapi.py +1959 -0
  759. tidy3d-2.12.0.dev0/tidy3d/web/cli/app.py +47 -0
  760. tidy3d-2.12.0.dev0/tidy3d/web/cli/config.py +446 -0
  761. tidy3d-2.12.0.dev0/tidy3d/web/cli/mcp.py +22 -0
  762. tidy3d-2.12.0.dev0/tidy3d/web/cli/readme.md +106 -0
  763. tidy3d-2.12.0.dev0/tidy3d/web/core/__init__.py +3 -0
  764. tidy3d-2.12.0.dev0/tidy3d/web/core/file_util.py +66 -0
  765. tidy3d-2.12.0.dev0/tidy3d/web/core/http_util.py +327 -0
  766. tidy3d-2.12.0.dev0/tidy3d/web/core/task_core.py +1073 -0
  767. tidy3d-2.12.0.dev0/tidy3d/web/core/types.py +74 -0
  768. tidy3d-2.12.0.dev0/tidy3d/web/mcp/__init__.py +3 -0
  769. tidy3d-2.12.0.dev0/tidy3d/web/mcp/_dispatcher.py +142 -0
  770. tidy3d-2.12.0.dev0/tidy3d/web/mcp/python_env.py +47 -0
  771. tidy3d-2.12.0.dev0/tidy3d/web/mcp/screenshots.py +68 -0
  772. tidy3d-2.12.0.dev0/tidy3d/web/mcp/server.py +142 -0
  773. tidy3d-2.12.0.dev0/tidy3d/web/mcp/tools.py +130 -0
  774. tidy3d-2.12.0.dev0/tidy3d/web/mcp/viewer.py +286 -0
  775. tidy3d-2.12.0.dev0/uv.lock +8721 -0
  776. tidy3d-2.11.2/CHANGELOG.md +0 -2211
  777. tidy3d-2.11.2/PKG-INFO +0 -324
  778. tidy3d-2.11.2/README.md +0 -140
  779. tidy3d-2.11.2/REVIEW.md +0 -62
  780. tidy3d-2.11.2/docs/_static/css/custom.css +0 -147
  781. tidy3d-2.11.2/docs/ai/flex_agent.rst +0 -221
  782. tidy3d-2.11.2/docs/ai/index.rst +0 -96
  783. tidy3d-2.11.2/docs/api/boundary_conditions.rst +0 -175
  784. tidy3d-2.11.2/docs/api/charge/boundary_conditions.rst +0 -39
  785. tidy3d-2.11.2/docs/api/charge/index.rst +0 -20
  786. tidy3d-2.11.2/docs/api/charge/mediums.rst +0 -93
  787. tidy3d-2.11.2/docs/api/charge/monitor.rst +0 -15
  788. tidy3d-2.11.2/docs/api/charge/output_data.rst +0 -57
  789. tidy3d-2.11.2/docs/api/configuration.rst +0 -51
  790. tidy3d-2.11.2/docs/api/discretization/layer.rst +0 -60
  791. tidy3d-2.11.2/docs/api/geometry.rst +0 -334
  792. tidy3d-2.11.2/docs/api/heat/index.rst +0 -22
  793. tidy3d-2.11.2/docs/api/material_library.rst +0 -1360
  794. tidy3d-2.11.2/docs/api/mediums.rst +0 -426
  795. tidy3d-2.11.2/docs/api/microwave/component_modeler.rst +0 -108
  796. tidy3d-2.11.2/docs/api/microwave/impedance_calculator.rst +0 -167
  797. tidy3d-2.11.2/docs/api/microwave/material.rst +0 -68
  798. tidy3d-2.11.2/docs/api/microwave/mode_solver.rst +0 -170
  799. tidy3d-2.11.2/docs/api/microwave/output_data.rst +0 -97
  800. tidy3d-2.11.2/docs/api/microwave/path_integrals.rst +0 -243
  801. tidy3d-2.11.2/docs/api/microwave/ports/lumped.rst +0 -107
  802. tidy3d-2.11.2/docs/api/microwave/ports/wave.rst +0 -150
  803. tidy3d-2.11.2/docs/api/microwave/radiation_scattering.rst +0 -104
  804. tidy3d-2.11.2/docs/api/plugins/autograd.rst +0 -91
  805. tidy3d-2.11.2/docs/api/plugins/design.rst +0 -25
  806. tidy3d-2.11.2/docs/api/plugins/index.rst +0 -16
  807. tidy3d-2.11.2/docs/api/plugins/invdes.rst +0 -29
  808. tidy3d-2.11.2/docs/api/plugins/klayout.rst +0 -65
  809. tidy3d-2.11.2/docs/api/plugins/smatrix.rst +0 -77
  810. tidy3d-2.11.2/docs/api/simulation.rst +0 -68
  811. tidy3d-2.11.2/docs/api/sources.rst +0 -236
  812. tidy3d-2.11.2/docs/api/spice.rst +0 -31
  813. tidy3d-2.11.2/docs/api/structure_and_scene.rst +0 -93
  814. tidy3d-2.11.2/docs/conf.py +0 -604
  815. tidy3d-2.11.2/docs/configuration/index.rst +0 -185
  816. tidy3d-2.11.2/docs/configuration/migration.rst +0 -43
  817. tidy3d-2.11.2/docs/configuration/nexus.rst +0 -596
  818. tidy3d-2.11.2/docs/configuration/reference.rst +0 -271
  819. tidy3d-2.11.2/docs/development/docker.rst +0 -945
  820. tidy3d-2.11.2/docs/development/documentation.rst +0 -105
  821. tidy3d-2.11.2/docs/development/index.rst +0 -23
  822. tidy3d-2.11.2/docs/development/installation.rst +0 -212
  823. tidy3d-2.11.2/docs/development/introduction/code_quality_principles.rst +0 -104
  824. tidy3d-2.11.2/docs/development/introduction/index.rst +0 -26
  825. tidy3d-2.11.2/docs/development/introduction/project_structure.rst +0 -65
  826. tidy3d-2.11.2/docs/development/introduction/understanding_uv.rst +0 -70
  827. tidy3d-2.11.2/docs/development/introduction/understanding_virtual_environments.rst +0 -63
  828. tidy3d-2.11.2/docs/development/recommendations.rst +0 -97
  829. tidy3d-2.11.2/docs/development/release/documentation.rst +0 -17
  830. tidy3d-2.11.2/docs/development/release/flow.rst +0 -145
  831. tidy3d-2.11.2/docs/development/release/index.rst +0 -18
  832. tidy3d-2.11.2/docs/development/release/notebooks.rst +0 -12
  833. tidy3d-2.11.2/docs/development/release/version.rst +0 -184
  834. tidy3d-2.11.2/docs/development/usage.rst +0 -89
  835. tidy3d-2.11.2/docs/index.rst +0 -275
  836. tidy3d-2.11.2/docs/install.rst +0 -246
  837. tidy3d-2.11.2/docs/versions/README.md +0 -9
  838. tidy3d-2.11.2/gemini-extension.json +0 -12
  839. tidy3d-2.11.2/pyproject.toml +0 -380
  840. tidy3d-2.11.2/schemas/EMESimulation.json +0 -13755
  841. tidy3d-2.11.2/schemas/HeatChargeSimulation.json +0 -10200
  842. tidy3d-2.11.2/schemas/HeatSimulation.json +0 -10200
  843. tidy3d-2.11.2/schemas/ModeSimulation.json +0 -13684
  844. tidy3d-2.11.2/schemas/Simulation.json +0 -18117
  845. tidy3d-2.11.2/schemas/TerminalComponentModeler.json +0 -19138
  846. tidy3d-2.11.2/tests/config/test_legacy.py +0 -37
  847. tidy3d-2.11.2/tests/config/test_legacy_env.py +0 -113
  848. tidy3d-2.11.2/tests/config/test_loader.py +0 -247
  849. tidy3d-2.11.2/tests/config/test_manager.py +0 -242
  850. tidy3d-2.11.2/tests/config/test_nexus_migration.py +0 -716
  851. tidy3d-2.11.2/tests/config/test_versioning.py +0 -1262
  852. tidy3d-2.11.2/tests/conftest.py +0 -159
  853. tidy3d-2.11.2/tests/sims/full_charge.h5 +0 -3
  854. tidy3d-2.11.2/tests/sims/full_charge.json +0 -492
  855. tidy3d-2.11.2/tests/sims/full_conduction.h5 +0 -3
  856. tidy3d-2.11.2/tests/sims/full_conduction.json +0 -300
  857. tidy3d-2.11.2/tests/sims/full_fdtd.h5 +0 -3
  858. tidy3d-2.11.2/tests/sims/full_fdtd.json +0 -3002
  859. tidy3d-2.11.2/tests/sims/full_fdtd_field_projection.h5 +0 -3
  860. tidy3d-2.11.2/tests/sims/full_fdtd_field_projection.json +0 -3602
  861. tidy3d-2.11.2/tests/sims/full_steady_heat.h5 +0 -3
  862. tidy3d-2.11.2/tests/sims/full_steady_heat.json +0 -296
  863. tidy3d-2.11.2/tests/sims/full_unsteady_heat.h5 +0 -3
  864. tidy3d-2.11.2/tests/sims/full_unsteady_heat.json +0 -306
  865. tidy3d-2.11.2/tests/test_cli/test_commands.py +0 -29
  866. tidy3d-2.11.2/tests/test_components/autograd/numerical/conftest.py +0 -40
  867. tidy3d-2.11.2/tests/test_components/autograd/numerical/numerical_helpers.py +0 -46
  868. tidy3d-2.11.2/tests/test_components/autograd/numerical/test_autograd_cm_custom_vjp_numerical_structures.py +0 -410
  869. tidy3d-2.11.2/tests/test_components/autograd/numerical/test_autograd_numerical.py +0 -392
  870. tidy3d-2.11.2/tests/test_components/autograd/numerical/test_autograd_numerical_structures.py +0 -423
  871. tidy3d-2.11.2/tests/test_components/autograd/numerical/test_autograd_sphere_trianglemesh_numerical.py +0 -892
  872. tidy3d-2.11.2/tests/test_components/autograd/numerical/test_flexible_dielectric_pec_boundary.py +0 -237
  873. tidy3d-2.11.2/tests/test_components/autograd/performance/test_custom_medium_performance.py +0 -552
  874. tidy3d-2.11.2/tests/test_components/autograd/performance/test_shape_performance.py +0 -109
  875. tidy3d-2.11.2/tests/test_components/autograd/test_autograd.py +0 -5156
  876. tidy3d-2.11.2/tests/test_components/autograd/test_autograd_polyslab.py +0 -911
  877. tidy3d-2.11.2/tests/test_components/autograd/test_parallel_adjoint.py +0 -931
  878. tidy3d-2.11.2/tests/test_components/test_absorbers.py +0 -598
  879. tidy3d-2.11.2/tests/test_components/test_base.py +0 -702
  880. tidy3d-2.11.2/tests/test_components/test_eme.py +0 -3542
  881. tidy3d-2.11.2/tests/test_components/test_field_projection.py +0 -1786
  882. tidy3d-2.11.2/tests/test_components/test_grid_spec.py +0 -618
  883. tidy3d-2.11.2/tests/test_components/test_heat.py +0 -797
  884. tidy3d-2.11.2/tests/test_components/test_heat_charge.py +0 -3114
  885. tidy3d-2.11.2/tests/test_components/test_layerrefinement.py +0 -1092
  886. tidy3d-2.11.2/tests/test_components/test_lumped_element.py +0 -1511
  887. tidy3d-2.11.2/tests/test_components/test_medium.py +0 -953
  888. tidy3d-2.11.2/tests/test_components/test_polyslab_set.py +0 -1514
  889. tidy3d-2.11.2/tests/test_components/test_relax_courant.py +0 -160
  890. tidy3d-2.11.2/tests/test_components/test_scene.py +0 -692
  891. tidy3d-2.11.2/tests/test_components/test_simulation.py +0 -5200
  892. tidy3d-2.11.2/tests/test_components/test_source_frames.py +0 -116
  893. tidy3d-2.11.2/tests/test_components/test_structure.py +0 -375
  894. tidy3d-2.11.2/tests/test_components/test_types.py +0 -248
  895. tidy3d-2.11.2/tests/test_data/test_monitor_data.py +0 -2270
  896. tidy3d-2.11.2/tests/test_data/test_sim_data.py +0 -670
  897. tidy3d-2.11.2/tests/test_material_library/test_material_library.py +0 -138
  898. tidy3d-2.11.2/tests/test_package/test_config.py +0 -43
  899. tidy3d-2.11.2/tests/test_plugins/autograd/invdes/test_initialize_params_from_sim.py +0 -367
  900. tidy3d-2.11.2/tests/test_plugins/smatrix/terminal_component_modeler_def.py +0 -746
  901. tidy3d-2.11.2/tests/test_plugins/smatrix/test_component_modeler.py +0 -580
  902. tidy3d-2.11.2/tests/test_plugins/smatrix/test_component_modeler_autograd.py +0 -484
  903. tidy3d-2.11.2/tests/test_plugins/smatrix/test_terminal_component_modeler.py +0 -3867
  904. tidy3d-2.11.2/tests/test_plugins/smatrix/test_terminal_plot.py +0 -467
  905. tidy3d-2.11.2/tests/test_plugins/test_design.py +0 -1220
  906. tidy3d-2.11.2/tests/test_plugins/test_invdes.py +0 -891
  907. tidy3d-2.11.2/tests/test_plugins/test_mode_solver.py +0 -2347
  908. tidy3d-2.11.2/tests/test_web/test_env.py +0 -27
  909. tidy3d-2.11.2/tests/test_web/test_local_cache.py +0 -1256
  910. tidy3d-2.11.2/tests/test_web/test_material_fitter.py +0 -89
  911. tidy3d-2.11.2/tests/test_web/test_tidy3d_folder.py +0 -73
  912. tidy3d-2.11.2/tests/test_web/test_tidy3d_material_library.py +0 -33
  913. tidy3d-2.11.2/tests/test_web/test_tidy3d_stub.py +0 -233
  914. tidy3d-2.11.2/tests/test_web/test_tidy3d_task.py +0 -411
  915. tidy3d-2.11.2/tests/test_web/test_webapi.py +0 -2801
  916. tidy3d-2.11.2/tests/test_web/test_webapi_account.py +0 -54
  917. tidy3d-2.11.2/tests/test_web/test_webapi_eme.py +0 -386
  918. tidy3d-2.11.2/tests/test_web/test_webapi_heat.py +0 -365
  919. tidy3d-2.11.2/tests/test_web/test_webapi_mode.py +0 -493
  920. tidy3d-2.11.2/tests/test_web/test_webapi_mode_sim.py +0 -425
  921. tidy3d-2.11.2/tests/utils.py +0 -1439
  922. tidy3d-2.11.2/tidy3d/__init__.py +0 -936
  923. tidy3d-2.11.2/tidy3d/components/autograd/derivative_utils.py +0 -1479
  924. tidy3d-2.11.2/tidy3d/components/autograd/types.py +0 -135
  925. tidy3d-2.11.2/tidy3d/components/base.py +0 -2228
  926. tidy3d-2.11.2/tidy3d/components/base_sim/simulation.py +0 -775
  927. tidy3d-2.11.2/tidy3d/components/boundary.py +0 -1573
  928. tidy3d-2.11.2/tidy3d/components/data/data_array.py +0 -2432
  929. tidy3d-2.11.2/tidy3d/components/data/monitor_data.py +0 -5307
  930. tidy3d-2.11.2/tidy3d/components/data/sim_data.py +0 -1716
  931. tidy3d-2.11.2/tidy3d/components/dispersion_fitter.py +0 -1051
  932. tidy3d-2.11.2/tidy3d/components/eme/data/dataset.py +0 -367
  933. tidy3d-2.11.2/tidy3d/components/eme/data/sim_data.py +0 -645
  934. tidy3d-2.11.2/tidy3d/components/eme/data/stage.py +0 -113
  935. tidy3d-2.11.2/tidy3d/components/eme/grid.py +0 -908
  936. tidy3d-2.11.2/tidy3d/components/eme/simulation.py +0 -2836
  937. tidy3d-2.11.2/tidy3d/components/eme/sweep.py +0 -229
  938. tidy3d-2.11.2/tidy3d/components/field_projection/approximate_angle.py +0 -181
  939. tidy3d-2.11.2/tidy3d/components/field_projection/approximate_paired.py +0 -380
  940. tidy3d-2.11.2/tidy3d/components/field_projection/common.py +0 -465
  941. tidy3d-2.11.2/tidy3d/components/field_projection/exact.py +0 -811
  942. tidy3d-2.11.2/tidy3d/components/file_util.py +0 -83
  943. tidy3d-2.11.2/tidy3d/components/geometry/base.py +0 -4319
  944. tidy3d-2.11.2/tidy3d/components/geometry/polyslab.py +0 -3453
  945. tidy3d-2.11.2/tidy3d/components/grid/corner_finder.py +0 -299
  946. tidy3d-2.11.2/tidy3d/components/grid/grid_spec.py +0 -3695
  947. tidy3d-2.11.2/tidy3d/components/lumped_element.py +0 -2192
  948. tidy3d-2.11.2/tidy3d/components/material/multi_physics.py +0 -201
  949. tidy3d-2.11.2/tidy3d/components/material/types.py +0 -24
  950. tidy3d-2.11.2/tidy3d/components/medium.py +0 -7778
  951. tidy3d-2.11.2/tidy3d/components/mode/simulation.py +0 -683
  952. tidy3d-2.11.2/tidy3d/components/mode/solver.py +0 -1361
  953. tidy3d-2.11.2/tidy3d/components/monitor.py +0 -2232
  954. tidy3d-2.11.2/tidy3d/components/nonlinear.py +0 -418
  955. tidy3d-2.11.2/tidy3d/components/parameter_perturbation.py +0 -1770
  956. tidy3d-2.11.2/tidy3d/components/scene.py +0 -2252
  957. tidy3d-2.11.2/tidy3d/components/simulation.py +0 -6616
  958. tidy3d-2.11.2/tidy3d/components/source/time.py +0 -735
  959. tidy3d-2.11.2/tidy3d/components/spice/analysis/ac.py +0 -86
  960. tidy3d-2.11.2/tidy3d/components/spice/analysis/dc.py +0 -93
  961. tidy3d-2.11.2/tidy3d/components/spice/sources/ac.py +0 -67
  962. tidy3d-2.11.2/tidy3d/components/structure.py +0 -1116
  963. tidy3d-2.11.2/tidy3d/components/tcad/bandgap_energy.py +0 -64
  964. tidy3d-2.11.2/tidy3d/components/tcad/data/sim_data.py +0 -699
  965. tidy3d-2.11.2/tidy3d/components/tcad/doping.py +0 -387
  966. tidy3d-2.11.2/tidy3d/components/tcad/generation_recombination.py +0 -379
  967. tidy3d-2.11.2/tidy3d/components/tcad/grid.py +0 -280
  968. tidy3d-2.11.2/tidy3d/components/tcad/mobility.py +0 -167
  969. tidy3d-2.11.2/tidy3d/components/tcad/simulation/heat.py +0 -127
  970. tidy3d-2.11.2/tidy3d/components/tcad/simulation/heat_charge.py +0 -2159
  971. tidy3d-2.11.2/tidy3d/components/tcad/types.py +0 -69
  972. tidy3d-2.11.2/tidy3d/components/types/__init__.py +0 -137
  973. tidy3d-2.11.2/tidy3d/components/types/base.py +0 -348
  974. tidy3d-2.11.2/tidy3d/components/types/utils.py +0 -33
  975. tidy3d-2.11.2/tidy3d/components/viz/plot_sim_3d.py +0 -194
  976. tidy3d-2.11.2/tidy3d/config/README.md +0 -98
  977. tidy3d-2.11.2/tidy3d/config/__init__.py +0 -86
  978. tidy3d-2.11.2/tidy3d/config/legacy.py +0 -553
  979. tidy3d-2.11.2/tidy3d/config/loader.py +0 -989
  980. tidy3d-2.11.2/tidy3d/config/sections.py +0 -711
  981. tidy3d-2.11.2/tidy3d/material_library/material_library.py +0 -2568
  982. tidy3d-2.11.2/tidy3d/material_library/material_reference.py +0 -227
  983. tidy3d-2.11.2/tidy3d/plugins/autograd/README.md +0 -377
  984. tidy3d-2.11.2/tidy3d/plugins/autograd/primitives/interpolate.py +0 -847
  985. tidy3d-2.11.2/tidy3d/plugins/design/design.py +0 -811
  986. tidy3d-2.11.2/tidy3d/plugins/invdes/README.md +0 -546
  987. tidy3d-2.11.2/tidy3d/plugins/invdes/optimizer.py +0 -306
  988. tidy3d-2.11.2/tidy3d/plugins/invdes/polyslab_set.py +0 -470
  989. tidy3d-2.11.2/tidy3d/plugins/invdes/region.py +0 -429
  990. tidy3d-2.11.2/tidy3d/plugins/smatrix/__init__.py +0 -65
  991. tidy3d-2.11.2/tidy3d/plugins/smatrix/analysis/terminal.py +0 -451
  992. tidy3d-2.11.2/tidy3d/plugins/smatrix/component_modelers/modal.py +0 -384
  993. tidy3d-2.11.2/tidy3d/plugins/smatrix/component_modelers/terminal.py +0 -2146
  994. tidy3d-2.11.2/tidy3d/plugins/smatrix/ports/base_lumped.py +0 -118
  995. tidy3d-2.11.2/tidy3d/plugins/smatrix/ports/base_terminal.py +0 -70
  996. tidy3d-2.11.2/tidy3d/plugins/smatrix/ports/coaxial_lumped.py +0 -425
  997. tidy3d-2.11.2/tidy3d/plugins/smatrix/ports/rectangular_lumped.py +0 -567
  998. tidy3d-2.11.2/tidy3d/plugins/smatrix/ports/wave.py +0 -1552
  999. tidy3d-2.11.2/tidy3d/plugins/smatrix/utils.py +0 -459
  1000. tidy3d-2.11.2/tidy3d/rf.py +0 -232
  1001. tidy3d-2.11.2/tidy3d/version.py +0 -3
  1002. tidy3d-2.11.2/tidy3d/web/api/autograd/autograd.py +0 -1956
  1003. tidy3d-2.11.2/tidy3d/web/api/autograd/backward.py +0 -855
  1004. tidy3d-2.11.2/tidy3d/web/api/autograd/constants.py +0 -12
  1005. tidy3d-2.11.2/tidy3d/web/api/autograd/context.py +0 -35
  1006. tidy3d-2.11.2/tidy3d/web/api/autograd/parallel_adjoint.py +0 -482
  1007. tidy3d-2.11.2/tidy3d/web/api/autograd/types.py +0 -196
  1008. tidy3d-2.11.2/tidy3d/web/api/autograd/utils.py +0 -112
  1009. tidy3d-2.11.2/tidy3d/web/api/container.py +0 -1978
  1010. tidy3d-2.11.2/tidy3d/web/api/run.py +0 -321
  1011. tidy3d-2.11.2/tidy3d/web/api/webapi.py +0 -1946
  1012. tidy3d-2.11.2/tidy3d/web/cli/app.py +0 -45
  1013. tidy3d-2.11.2/tidy3d/web/cli/config.py +0 -516
  1014. tidy3d-2.11.2/tidy3d/web/cli/readme.md +0 -102
  1015. tidy3d-2.11.2/tidy3d/web/core/__init__.py +0 -8
  1016. tidy3d-2.11.2/tidy3d/web/core/environment.py +0 -42
  1017. tidy3d-2.11.2/tidy3d/web/core/file_util.py +0 -87
  1018. tidy3d-2.11.2/tidy3d/web/core/http_util.py +0 -322
  1019. tidy3d-2.11.2/tidy3d/web/core/task_core.py +0 -1070
  1020. tidy3d-2.11.2/tidy3d/web/core/types.py +0 -73
  1021. tidy3d-2.11.2/tidy3d/web/environment.py +0 -8
  1022. tidy3d-2.11.2/uv.lock +0 -7400
  1023. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/.commitlintrc.json +0 -0
  1024. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/.gitconfig +0 -0
  1025. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/.gitignore +0 -0
  1026. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/.readthedocs.yaml +0 -0
  1027. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/AGENTS.md +0 -0
  1028. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/CLAUDE.md +0 -0
  1029. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/COPYRIGHT +0 -0
  1030. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/LICENSE +0 -0
  1031. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/changelog.d/README.md +0 -0
  1032. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/changelog.d/template.md +0 -0
  1033. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/dev.Dockerfile +0 -0
  1034. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/404.rst +0 -0
  1035. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_ext/custom-meta.py +0 -0
  1036. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_ext/custom-robots.py +0 -0
  1037. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_ext/custom-sitemap.py +0 -0
  1038. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_ext/docs_version.py +0 -0
  1039. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_ext/test_docs_version.py +0 -0
  1040. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/css/TWKEverett-Bold.otf +0 -0
  1041. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/css/TWKEverett-Extrabold.otf +0 -0
  1042. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/css/TWKEverett-Regular.otf +0 -0
  1043. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/404.png +0 -0
  1044. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/AdjointFlow.svg +0 -0
  1045. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/Tidy3D-logo-white.svg +0 -0
  1046. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/Tidy3D-logo.svg +0 -0
  1047. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/apodization.png +0 -0
  1048. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/beam_waist.png +0 -0
  1049. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/courant_instability.png +0 -0
  1050. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/courant_instability_2d.png +0 -0
  1051. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/design.png +0 -0
  1052. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/diagram_Geometry.png +0 -0
  1053. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/diagram_Monitor.png +0 -0
  1054. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/diagram_Simulation.png +0 -0
  1055. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/diagram_Source.png +0 -0
  1056. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/diagram_Structure.png +0 -0
  1057. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/diverged-fdtd-simulation.png +0 -0
  1058. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/diverged-fdtd-simulation1.png +0 -0
  1059. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/documentation_versions.png +0 -0
  1060. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/erosion_dilation.png +0 -0
  1061. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/extension_cursor.png +0 -0
  1062. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/extension_vscode.png +0 -0
  1063. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/field_update_fdtd.png +0 -0
  1064. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/filter_project.png +0 -0
  1065. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/gui_overview.png +0 -0
  1066. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/lumped_dist_type.png +0 -0
  1067. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/mode_vs_dipole_source.png +0 -0
  1068. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/numerical_dispersion_discretization_1d.png +0 -0
  1069. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/numerical_dispersion_grid_1d.png +0 -0
  1070. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/permittivity_on_yee_grid.png +0 -0
  1071. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/photonforge_overview.png +0 -0
  1072. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/pml_boundary.png +0 -0
  1073. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/simcloud_overview.png +0 -0
  1074. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/snippet.png +0 -0
  1075. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/snippet2.png +0 -0
  1076. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/structure.png +0 -0
  1077. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/subpixel_permittivity_1d.png +0 -0
  1078. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/tidy3d_extension.png +0 -0
  1079. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/viewer.png +0 -0
  1080. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/yee_grid.png +0 -0
  1081. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/img/yee_grid_illustration.png +0 -0
  1082. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/js/custom-download.js +0 -0
  1083. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/js/version-switcher.js +0 -0
  1084. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/logo.svg +0 -0
  1085. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/pml_right_wrong.png +0 -0
  1086. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/quickstart_fields.png +0 -0
  1087. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/ring_resonator.png +0 -0
  1088. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_static/robots.txt +0 -0
  1089. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_templates/material_class.rst +0 -0
  1090. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_templates/material_functions.rst +0 -0
  1091. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_templates/materials.rst +0 -0
  1092. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/_templates/module.rst +0 -0
  1093. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/ai/3d_viewer.rst +0 -0
  1094. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/ai/cursor_extension.rst +0 -0
  1095. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/ai/simulation_tips.rst +0 -0
  1096. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/ai/vscode_extension.rst +0 -0
  1097. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/abstract_base.rst +0 -0
  1098. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/abstract_models.rst +0 -0
  1099. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/analytic_beams.rst +0 -0
  1100. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/charge/simulation.rst +0 -0
  1101. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/charge/source.rst +0 -0
  1102. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/constants.rst +0 -0
  1103. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/discretization/index.rst +0 -0
  1104. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/eme/grid.rst +0 -0
  1105. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/eme/index.rst +0 -0
  1106. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/eme/local_propagation.rst +0 -0
  1107. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/eme/monitor.rst +0 -0
  1108. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/eme/output_data.rst +0 -0
  1109. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/eme/simulation.rst +0 -0
  1110. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/eme/sweep.rst +0 -0
  1111. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/heat/analysis.rst +0 -0
  1112. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/heat/boundary_conditions.rst +0 -0
  1113. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/heat/mediums.rst +0 -0
  1114. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/heat/monitor.rst +0 -0
  1115. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/heat/output_data.rst +0 -0
  1116. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/heat/simulation.rst +0 -0
  1117. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/heat/source.rst +0 -0
  1118. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/img/geom1.png +0 -0
  1119. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/img/geom2.png +0 -0
  1120. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/img/geom3.png +0 -0
  1121. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/img/geom4.png +0 -0
  1122. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/img/geom5.png +0 -0
  1123. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/img/geom6.png +0 -0
  1124. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/index.rst +0 -0
  1125. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/logging.rst +0 -0
  1126. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/mesh/discretization.rst +0 -0
  1127. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/mesh/index.rst +0 -0
  1128. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/mesh/mesher.rst +0 -0
  1129. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/mesh/monitor.rst +0 -0
  1130. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/mesh/output_data.rst +0 -0
  1131. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/microwave/index.rst +0 -0
  1132. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/microwave/microwave_migration.rst +0 -0
  1133. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/microwave/rf_material_library.rst +0 -0
  1134. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/microwave/smatrix_definitions.rst +0 -0
  1135. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/mode/deprecated.rst +0 -0
  1136. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/mode/index.rst +0 -0
  1137. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/mode/output_data.rst +0 -0
  1138. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/mode/simulation.rst +0 -0
  1139. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/mode/sources.rst +0 -0
  1140. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/mode/specification.rst +0 -0
  1141. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/monitors.rst +0 -0
  1142. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/output_data.rst +0 -0
  1143. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/plugins/dispersion.rst +0 -0
  1144. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/plugins/microwave.rst +0 -0
  1145. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/plugins/mode_solver.rst +0 -0
  1146. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/plugins/polyslab.rst +0 -0
  1147. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/plugins/resonance.rst +0 -0
  1148. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/plugins/smatrix_migration.rst +0 -0
  1149. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/plugins/waveguide.rst +0 -0
  1150. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/scene.rst +0 -0
  1151. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/submit_simulations.rst +0 -0
  1152. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/utilities.rst +0 -0
  1153. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/api/viz.rst +0 -0
  1154. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/changelog.rst +0 -0
  1155. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/copybara.rst +0 -0
  1156. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/extras/index.rst +0 -0
  1157. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/extras/license.rst +0 -0
  1158. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/extras/third_party_licenses.rst +0 -0
  1159. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/generate_doc.py +0 -0
  1160. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/lectures/fabrication_invdes.rst +0 -0
  1161. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/lectures/fabrication_invdes_notebooks.rst +0 -0
  1162. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/lectures/fdtd101.rst +0 -0
  1163. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/lectures/fdtd_workshop.rst +0 -0
  1164. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/lectures/index.rst +0 -0
  1165. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/lectures/inversedesign.rst +0 -0
  1166. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/versions/2_5_to_2_6.json +0 -0
  1167. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/docs/versions/test_replace_in_files.json +0 -0
  1168. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/schemas/README.md +0 -0
  1169. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/benchmark_import.py +0 -0
  1170. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/build_release_notes.py +0 -0
  1171. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/changelog_refs.py +0 -0
  1172. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/check_blind_chaining.py +0 -0
  1173. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/check_post_init_setup_errors.py +0 -0
  1174. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/make_script.py +0 -0
  1175. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/move_type_imports.py +0 -0
  1176. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/pre_release.sh +0 -0
  1177. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/profile_pytest.py +0 -0
  1178. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/regenerate_schema.py +0 -0
  1179. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/rename_changelog_fragments.py +0 -0
  1180. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/sample.py +0 -0
  1181. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/test_coverage.sh +0 -0
  1182. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/scripts/test_format.sh +0 -0
  1183. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/README.md +0 -0
  1184. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/__init__.py +0 -0
  1185. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_integration/_helpers.py +0 -0
  1186. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_integration/test_vgpu_allocation_auto.py +0 -0
  1187. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_integration/test_vgpu_allocation_invalid.py +0 -0
  1188. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_integration/test_vgpu_allocation_max_gpu.py +0 -0
  1189. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_integration/test_vgpu_allocation_parallel.py +0 -0
  1190. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_integration/test_vgpu_allocation_single.py +0 -0
  1191. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_test_data/__init__.py +0 -0
  1192. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_test_data/_test_datasets_no_vtk.py +0 -0
  1193. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_test_data/_test_unstructured_pyvista_no_pyvista.py +0 -0
  1194. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_test_local/__init__.py +0 -0
  1195. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_test_local/_test_data_performance.py +0 -0
  1196. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_test_local/_test_fit_web.py +0 -0
  1197. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_test_local/_test_plugins_web.py +0 -0
  1198. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_test_local/_test_web.py +0 -0
  1199. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_test_notebooks/full_test_notebooks.py +0 -0
  1200. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/_test_tidy3d_extras/_test_tidy3d_extras_license.py +0 -0
  1201. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/config/conftest.py +0 -0
  1202. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/config/test_plugins.py +0 -0
  1203. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/config/test_profiles.py +0 -0
  1204. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/config/test_web_config.py +0 -0
  1205. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/data/example.lsf +0 -0
  1206. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/data/gmsh.vtk +0 -0
  1207. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/data/gmsh_2d.vtk +0 -0
  1208. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/data/monitors.lsf +0 -0
  1209. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/data/n_data.csv +0 -0
  1210. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/data/nk_data.csv +0 -0
  1211. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/data/tetrahedron.stl +0 -0
  1212. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/data/two_boxes_separate.stl +0 -0
  1213. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/rf/test_rf_import.py +0 -0
  1214. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_cli/full_test_develop.py +0 -0
  1215. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/__init__.py +0 -0
  1216. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/__init__.py +0 -0
  1217. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/__init__.py +0 -0
  1218. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_anisotropic_shape.py +0 -0
  1219. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_box_polyslab_numerical.py +0 -0
  1220. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_cm_custom_vjp.py +0 -0
  1221. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_conductivity_numerical.py +0 -0
  1222. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_custom_dispersive_numerical.py +0 -0
  1223. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_custom_pole_residue_numerical.py +0 -0
  1224. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_custom_vjp.py +0 -0
  1225. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_frequency_selection.py +0 -0
  1226. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_gaussian_numerical.py +0 -0
  1227. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_gaussian_source_numerical.py +0 -0
  1228. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_geometry_group_numerical.py +0 -0
  1229. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_medium_numerical.py +0 -0
  1230. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_mode_polyslab_numerical.py +0 -0
  1231. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_periodic_numerical.py +0 -0
  1232. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_polyslab_sidewall_numerical.py +0 -0
  1233. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_polyslab_trianglemesh_numerical.py +0 -0
  1234. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_source_numerical.py +0 -0
  1235. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_autograd_symmetry_numerical.py +0 -0
  1236. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/numerical/test_tmm_gradients.py +0 -0
  1237. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/performance/__init__.py +0 -0
  1238. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/performance/conftest.py +0 -0
  1239. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/performance/postprocess_adj_utils.py +0 -0
  1240. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/performance/test_field_projection_performance.py +0 -0
  1241. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_adjoint_empty_sources.py +0 -0
  1242. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_adjoint_monitors.py +0 -0
  1243. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_autograd_anisotropic_medium.py +0 -0
  1244. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_autograd_custom_dispersive_vjps.py +0 -0
  1245. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_autograd_dispersive_vjps.py +0 -0
  1246. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_autograd_polyslab_sidewall.py +0 -0
  1247. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_autograd_rf_box.py +0 -0
  1248. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_autograd_rf_polyslab.py +0 -0
  1249. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_autograd_sources.py +0 -0
  1250. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_autograd_triangle_mesh.py +0 -0
  1251. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_custom_dispersive_multifreq.py +0 -0
  1252. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/autograd/test_sidewall_edge_cases.py +0 -0
  1253. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/material/test_multi_physics.py +0 -0
  1254. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_IO.py +0 -0
  1255. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_apodization.py +0 -0
  1256. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_bc_placement.py +0 -0
  1257. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_beam.py +0 -0
  1258. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_boundaries.py +0 -0
  1259. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_custom.py +0 -0
  1260. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_docstrings.py +0 -0
  1261. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_frequencies.py +0 -0
  1262. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_geometry.py +0 -0
  1263. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_grid.py +0 -0
  1264. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_low_freq_smoothing.py +0 -0
  1265. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_map.py +0 -0
  1266. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_meshgenerate.py +0 -0
  1267. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_microwave.py +0 -0
  1268. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_mode.py +0 -0
  1269. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_mode_interp.py +0 -0
  1270. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_monitor.py +0 -0
  1271. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_packaging.py +0 -0
  1272. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_parameter_perturbation.py +0 -0
  1273. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_perturbation_medium.py +0 -0
  1274. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_repr.py +0 -0
  1275. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_sidewall.py +0 -0
  1276. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_source.py +0 -0
  1277. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_time_modulation.py +0 -0
  1278. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_validator_policy.py +0 -0
  1279. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_components/test_viz.py +0 -0
  1280. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_data/__init__.py +0 -0
  1281. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_data/autograd/__init__.py +0 -0
  1282. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_data/autograd/test_monitor_data.py +0 -0
  1283. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_data/autograd/test_sim_data.py +0 -0
  1284. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_data/test_data_arrays.py +0 -0
  1285. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_data/test_datasets.py +0 -0
  1286. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_data/test_map_data.py +0 -0
  1287. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_data/test_unstructured_pyvista.py +0 -0
  1288. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_material_library/__init__.py +0 -0
  1289. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/__init__.py +0 -0
  1290. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_changelog_fragment_rename.py +0 -0
  1291. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_changelog_refs.py +0 -0
  1292. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_check_blind_chaining.py +0 -0
  1293. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_compat.py +0 -0
  1294. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_convert.py +0 -0
  1295. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_exceptions.py +0 -0
  1296. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_lazy_imports.py +0 -0
  1297. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_log.py +0 -0
  1298. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_main.py +0 -0
  1299. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_make_script.py +0 -0
  1300. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_material_library.py +0 -0
  1301. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_parametric_variants.py +0 -0
  1302. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_package/test_regenerate_schema.py +0 -0
  1303. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/__init__.py +0 -0
  1304. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/__init__.py +0 -0
  1305. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/invdes/__init__.py +0 -0
  1306. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/invdes/test_filters.py +0 -0
  1307. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/invdes/test_parametrizations.py +0 -0
  1308. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/invdes/test_penalties.py +0 -0
  1309. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/invdes/test_projections.py +0 -0
  1310. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/invdes/test_symmetries.py +0 -0
  1311. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/primitives/__init__.py +0 -0
  1312. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/primitives/test_interpolate.py +0 -0
  1313. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/primitives/test_misc.py +0 -0
  1314. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/test_differential_operators.py +0 -0
  1315. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/test_functions.py +0 -0
  1316. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/autograd/test_utilities.py +0 -0
  1317. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/expressions/__init__.py +0 -0
  1318. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/expressions/test_dispatch.py +0 -0
  1319. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/expressions/test_functions.py +0 -0
  1320. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/expressions/test_operators.py +0 -0
  1321. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/expressions/test_variables.py +0 -0
  1322. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/klayout/drc/fixtures/drc_results.lyrdb +0 -0
  1323. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/klayout/drc/fixtures/drc_results_clean.lyrdb +0 -0
  1324. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/klayout/drc/fixtures/siepic_ebeam_violations.lyrdb +0 -0
  1325. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/klayout/drc/generate_fixtures.py +0 -0
  1326. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/klayout/drc/test_drc.py +0 -0
  1327. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/klayout/test_util.py +0 -0
  1328. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/pytorch/test_wrapper.py +0 -0
  1329. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/smatrix/__init__.py +0 -0
  1330. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/smatrix/test_component_modeler_cache.py +0 -0
  1331. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/smatrix/test_run_functions.py +0 -0
  1332. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/smatrix/test_terminal_wave_port.py +0 -0
  1333. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/test_array_factor.py +0 -0
  1334. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/test_autograd_optimizers.py +0 -0
  1335. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/test_dispersion_fitter.py +0 -0
  1336. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/test_microwave.py +0 -0
  1337. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/test_polyslab.py +0 -0
  1338. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/test_resonance_finder.py +0 -0
  1339. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/test_rf_material_library.py +0 -0
  1340. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_plugins/test_waveguide.py +0 -0
  1341. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_web/__init__.py +0 -0
  1342. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_web/mock_web.py +0 -0
  1343. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_web/test_autograd_aux_data.py +0 -0
  1344. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_web/test_batch_data_cache.py +0 -0
  1345. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_web/test_cli.py +0 -0
  1346. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_web/test_s3utils.py +0 -0
  1347. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_web/test_task.py +0 -0
  1348. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tests/test_web/test_webapi_extra.py +0 -0
  1349. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/README.md +0 -0
  1350. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/__main__.py +0 -0
  1351. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/_runtime.py +0 -0
  1352. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/_testing/__init__.py +0 -0
  1353. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/_testing/synthetic_monitor_data.py +0 -0
  1354. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/compat.py +0 -0
  1355. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/README.md +0 -0
  1356. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/__init__.py +0 -0
  1357. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/apodization.py +0 -0
  1358. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/autograd/__init__.py +0 -0
  1359. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/autograd/boxes.py +0 -0
  1360. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/autograd/field_map.py +0 -0
  1361. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/autograd/functions.py +0 -0
  1362. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/autograd/parallel_adjoint_bases.py +0 -0
  1363. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/autograd/source_factory.py +0 -0
  1364. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/autograd/utils.py +0 -0
  1365. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/base_sim/__init__.py +0 -0
  1366. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/base_sim/data/__init__.py +0 -0
  1367. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/base_sim/data/monitor_data.py +0 -0
  1368. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/base_sim/data/sim_data.py +0 -0
  1369. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/base_sim/monitor.py +0 -0
  1370. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/base_sim/source.py +0 -0
  1371. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/bc_placement.py +0 -0
  1372. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/beam.py +0 -0
  1373. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/README.md +0 -0
  1374. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/__init__.py +0 -0
  1375. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/dataset.py +0 -0
  1376. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/index.py +0 -0
  1377. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/unstructured/__init__.py +0 -0
  1378. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/unstructured/base.py +0 -0
  1379. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/unstructured/surface.py +0 -0
  1380. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/unstructured/tetrahedral.py +0 -0
  1381. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/unstructured/triangular.py +0 -0
  1382. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/utils.py +0 -0
  1383. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/validators.py +0 -0
  1384. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/data/zbf.py +0 -0
  1385. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/diffraction.py +0 -0
  1386. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/docstrings.py +0 -0
  1387. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/eme/__init__.py +0 -0
  1388. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/eme/data/__init__.py +0 -0
  1389. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/eme/data/monitor_data.py +0 -0
  1390. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/eme/monitor.py +0 -0
  1391. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/field_projection/README.md +0 -0
  1392. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/field_projection/__init__.py +0 -0
  1393. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/field_projection/projector.py +0 -0
  1394. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/frequencies.py +0 -0
  1395. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/frequency_extrapolation.py +0 -0
  1396. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/geometry/__init__.py +0 -0
  1397. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/geometry/bound_ops.py +0 -0
  1398. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/geometry/contour_conversion.py +0 -0
  1399. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/geometry/float_utils.py +0 -0
  1400. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/geometry/mesh.py +0 -0
  1401. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/geometry/primitives.py +0 -0
  1402. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/geometry/triangulation.py +0 -0
  1403. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/geometry/utils.py +0 -0
  1404. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/geometry/utils_2d.py +0 -0
  1405. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/grid/__init__.py +0 -0
  1406. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/grid/grid.py +0 -0
  1407. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/grid/mesher.py +0 -0
  1408. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/index.py +0 -0
  1409. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/material/README.md +0 -0
  1410. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/material/__init__.py +0 -0
  1411. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/material/solver_types.py +0 -0
  1412. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/material/tcad/__init__.py +0 -0
  1413. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/material/tcad/charge.py +0 -0
  1414. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/material/tcad/heat.py +0 -0
  1415. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/material/tensor_rotation.py +0 -0
  1416. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/__init__.py +0 -0
  1417. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/base.py +0 -0
  1418. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/data/__init__.py +0 -0
  1419. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/data/data_array.py +0 -0
  1420. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/data/dataset.py +0 -0
  1421. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/data/monitor_data.py +0 -0
  1422. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/formulas/__init__.py +0 -0
  1423. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/formulas/circuit_parameters.py +0 -0
  1424. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/impedance_calculator.py +0 -0
  1425. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/mode_spec.py +0 -0
  1426. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/monitor.py +0 -0
  1427. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/__init__.py +0 -0
  1428. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/factory.py +0 -0
  1429. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/integrals/__init__.py +0 -0
  1430. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/integrals/auto.py +0 -0
  1431. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/integrals/base.py +0 -0
  1432. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/integrals/current.py +0 -0
  1433. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/integrals/voltage.py +0 -0
  1434. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/mode_plane_analyzer.py +0 -0
  1435. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/specs/__init__.py +0 -0
  1436. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/specs/base.py +0 -0
  1437. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/specs/current.py +0 -0
  1438. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/specs/impedance.py +0 -0
  1439. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/specs/voltage.py +0 -0
  1440. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/types.py +0 -0
  1441. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/path_integrals/viz.py +0 -0
  1442. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/source.py +0 -0
  1443. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/time.py +0 -0
  1444. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/microwave/types.py +0 -0
  1445. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/mode/LICENSE +0 -0
  1446. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/mode/__init__.py +0 -0
  1447. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/mode/data/__init__.py +0 -0
  1448. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/mode/data/sim_data.py +0 -0
  1449. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/mode/derivatives.py +0 -0
  1450. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/mode/mode_solver.py +0 -0
  1451. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/mode/transforms.py +0 -0
  1452. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/mode_spec.py +0 -0
  1453. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/run_time_spec.py +0 -0
  1454. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/source/__init__.py +0 -0
  1455. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/source/adjoint_helpers.py +0 -0
  1456. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/source/base.py +0 -0
  1457. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/source/current.py +0 -0
  1458. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/source/field.py +0 -0
  1459. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/source/frame.py +0 -0
  1460. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/source/freq_range.py +0 -0
  1461. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/source/utils.py +0 -0
  1462. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/spice/__init__.py +0 -0
  1463. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/spice/analysis/__init__.py +0 -0
  1464. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/spice/sources/__init__.py +0 -0
  1465. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/spice/sources/dc.py +0 -0
  1466. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/spice/sources/types.py +0 -0
  1467. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/spice/types.py +0 -0
  1468. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/subpixel_spec.py +0 -0
  1469. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/__init__.py +0 -0
  1470. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/analysis/__init__.py +0 -0
  1471. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/analysis/heat_simulation_type.py +0 -0
  1472. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/bandgap.py +0 -0
  1473. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/boundary/__init__.py +0 -0
  1474. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/boundary/abstract.py +0 -0
  1475. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/boundary/charge.py +0 -0
  1476. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/boundary/heat.py +0 -0
  1477. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/boundary/specification.py +0 -0
  1478. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/data/__init__.py +0 -0
  1479. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/data/monitor_data/__init__.py +0 -0
  1480. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/data/monitor_data/abstract.py +0 -0
  1481. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/data/monitor_data/charge.py +0 -0
  1482. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/data/monitor_data/heat.py +0 -0
  1483. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/data/monitor_data/mesh.py +0 -0
  1484. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/data/types.py +0 -0
  1485. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/effective_DOS.py +0 -0
  1486. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/mesher.py +0 -0
  1487. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/monitors/__init__.py +0 -0
  1488. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/monitors/abstract.py +0 -0
  1489. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/monitors/charge.py +0 -0
  1490. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/monitors/heat.py +0 -0
  1491. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/monitors/mesh.py +0 -0
  1492. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/simulation/__init__.py +0 -0
  1493. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/source/__init__.py +0 -0
  1494. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/source/abstract.py +0 -0
  1495. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/source/coupled.py +0 -0
  1496. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/source/heat.py +0 -0
  1497. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/tcad/viz.py +0 -0
  1498. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/time.py +0 -0
  1499. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/time_modulation.py +0 -0
  1500. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/transformation.py +0 -0
  1501. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/types/mode_spec.py +0 -0
  1502. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/types/monitor.py +0 -0
  1503. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/types/monitor_data.py +0 -0
  1504. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/types/simulation.py +0 -0
  1505. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/types/third_party.py +0 -0
  1506. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/types/time.py +0 -0
  1507. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/types/workflow.py +0 -0
  1508. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/validators.py +0 -0
  1509. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/viz/__init__.py +0 -0
  1510. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/viz/axes_utils.py +0 -0
  1511. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/viz/descartes.py +0 -0
  1512. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/viz/flex_color_palettes.py +0 -0
  1513. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/viz/flex_style.py +0 -0
  1514. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/viz/layout.py +0 -0
  1515. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/viz/plot_params.py +0 -0
  1516. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/viz/styles.py +0 -0
  1517. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/components/viz/visualization_spec.py +0 -0
  1518. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/config/deprecations.py +0 -0
  1519. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/config/manager.py +0 -0
  1520. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/config/migrations.py +0 -0
  1521. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/config/profiles.py +0 -0
  1522. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/config/registry.py +0 -0
  1523. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/config/schema_utils.py +0 -0
  1524. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/config/serializer.py +0 -0
  1525. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/constants.py +0 -0
  1526. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/exceptions.py +0 -0
  1527. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/log.py +0 -0
  1528. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/material_library/__init__.py +0 -0
  1529. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/material_library/parametric_materials.py +0 -0
  1530. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/material_library/util.py +0 -0
  1531. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/packaging.py +0 -0
  1532. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/__init__.py +0 -0
  1533. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/__init__.py +0 -0
  1534. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/constants.py +0 -0
  1535. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/differential_operators.py +0 -0
  1536. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/functions.py +0 -0
  1537. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/invdes/__init__.py +0 -0
  1538. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/invdes/filters.py +0 -0
  1539. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/invdes/misc.py +0 -0
  1540. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/invdes/parametrizations.py +0 -0
  1541. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/invdes/penalties.py +0 -0
  1542. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/invdes/projections.py +0 -0
  1543. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/invdes/symmetries.py +0 -0
  1544. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/optimizers.py +0 -0
  1545. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/primitives/__init__.py +0 -0
  1546. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/primitives/misc.py +0 -0
  1547. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/types.py +0 -0
  1548. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/autograd/utilities.py +0 -0
  1549. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/design/README.md +0 -0
  1550. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/design/__init__.py +0 -0
  1551. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/design/method.py +0 -0
  1552. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/design/parameter.py +0 -0
  1553. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/design/result.py +0 -0
  1554. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/dispersion/__init__.py +0 -0
  1555. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/dispersion/fit.py +0 -0
  1556. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/dispersion/fit_fast.py +0 -0
  1557. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/dispersion/fit_web.py +0 -0
  1558. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/dispersion/web.py +0 -0
  1559. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/expressions/README.md +0 -0
  1560. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/expressions/__init__.py +0 -0
  1561. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/expressions/base.py +0 -0
  1562. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/expressions/functions.py +0 -0
  1563. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/expressions/metrics.py +0 -0
  1564. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/expressions/operators.py +0 -0
  1565. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/expressions/types.py +0 -0
  1566. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/expressions/variables.py +0 -0
  1567. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/invdes/__init__.py +0 -0
  1568. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/invdes/base.py +0 -0
  1569. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/invdes/contours.py +0 -0
  1570. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/invdes/design.py +0 -0
  1571. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/invdes/initialization.py +0 -0
  1572. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/invdes/penalty.py +0 -0
  1573. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/invdes/result.py +0 -0
  1574. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/invdes/self_intersection.py +0 -0
  1575. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/invdes/transformation.py +0 -0
  1576. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/invdes/utils.py +0 -0
  1577. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/invdes/validators.py +0 -0
  1578. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/klayout/README.md +0 -0
  1579. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/klayout/__init__.py +0 -0
  1580. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/klayout/drc/README.md +0 -0
  1581. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/klayout/drc/__init__.py +0 -0
  1582. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/klayout/drc/defaults.py +0 -0
  1583. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/klayout/drc/drc.py +0 -0
  1584. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/klayout/drc/results.py +0 -0
  1585. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/klayout/util.py +0 -0
  1586. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/__init__.py +0 -0
  1587. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/array_factor.py +0 -0
  1588. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/auto_path_integrals.py +0 -0
  1589. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/custom_path_integrals.py +0 -0
  1590. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/impedance_calculator.py +0 -0
  1591. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/lobe_measurer.py +0 -0
  1592. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/models/__init__.py +0 -0
  1593. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/models/coupled_microstrip.py +0 -0
  1594. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/models/microstrip.py +0 -0
  1595. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/path_integrals.py +0 -0
  1596. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/rf_material_library.py +0 -0
  1597. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/rf_material_reference.py +0 -0
  1598. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/microwave/viz.py +0 -0
  1599. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/mode/LICENSE +0 -0
  1600. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/mode/README.md +0 -0
  1601. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/mode/__init__.py +0 -0
  1602. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/mode/mode_solver.py +0 -0
  1603. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/mode/web.py +0 -0
  1604. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/polyslab/__init__.py +0 -0
  1605. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/polyslab/polyslab.py +0 -0
  1606. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/pytorch/README.md +0 -0
  1607. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/pytorch/__init__.py +0 -0
  1608. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/pytorch/wrapper.py +0 -0
  1609. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/resonance/__init__.py +0 -0
  1610. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/resonance/resonance.py +0 -0
  1611. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/analysis/__init__.py +0 -0
  1612. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/analysis/antenna.py +0 -0
  1613. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/analysis/modal.py +0 -0
  1614. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/component_modelers/__init__.py +0 -0
  1615. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/component_modelers/base.py +0 -0
  1616. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/component_modelers/types.py +0 -0
  1617. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/component_modelers/viz.py +0 -0
  1618. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/data/__init__.py +0 -0
  1619. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/data/base.py +0 -0
  1620. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/data/data_array.py +0 -0
  1621. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/data/modal.py +0 -0
  1622. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/data/terminal.py +0 -0
  1623. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/data/types.py +0 -0
  1624. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/ports/__init__.py +0 -0
  1625. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/ports/base.py +0 -0
  1626. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/ports/modal.py +0 -0
  1627. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/ports/types.py +0 -0
  1628. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/run.py +0 -0
  1629. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/smatrix/types.py +0 -0
  1630. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/waveguide/__init__.py +0 -0
  1631. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/plugins/waveguide/rectangular_dielectric.py +0 -0
  1632. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/style.mplstyle +0 -0
  1633. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/system.py +0 -0
  1634. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/updater.py +0 -0
  1635. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/README.md +0 -0
  1636. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/__init__.py +0 -0
  1637. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/__init__.py +0 -0
  1638. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/asynchronous.py +0 -0
  1639. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/autograd/__init__.py +0 -0
  1640. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/autograd/engine.py +0 -0
  1641. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/autograd/forward.py +0 -0
  1642. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/autograd/io_utils.py +0 -0
  1643. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/cacert.pem +0 -0
  1644. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/connect_util.py +0 -0
  1645. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/material_fitter.py +0 -0
  1646. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/material_library.py +0 -0
  1647. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/mode.py +0 -0
  1648. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/run_options.py +0 -0
  1649. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/states.py +0 -0
  1650. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/api/tidy3d_stub.py +0 -0
  1651. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/cache.py +0 -0
  1652. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/cli/__init__.py +0 -0
  1653. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/cli/cache.py +0 -0
  1654. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/cli/constants.py +0 -0
  1655. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/cli/develop/__init__.py +0 -0
  1656. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/cli/develop/documentation.py +0 -0
  1657. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/cli/develop/index.py +0 -0
  1658. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/cli/develop/install.py +0 -0
  1659. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/cli/develop/packaging.py +0 -0
  1660. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/cli/develop/tests.py +0 -0
  1661. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/cli/develop/utils.py +0 -0
  1662. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/common.py +0 -0
  1663. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/core/account.py +0 -0
  1664. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/core/cache.py +0 -0
  1665. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/core/constants.py +0 -0
  1666. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/core/core_config.py +0 -0
  1667. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/core/exceptions.py +0 -0
  1668. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/core/s3utils.py +0 -0
  1669. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/core/stub.py +0 -0
  1670. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/core/task_info.py +0 -0
  1671. {tidy3d-2.11.2 → tidy3d-2.12.0.dev0}/tidy3d/web/tests/conftest.py +0 -0
@@ -0,0 +1,2266 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ <!-- Maintainer note: do not edit this file directly in regular PRs. Add Towncrier fragments in changelog.d/ and follow changelog.d/README.md. -->
9
+
10
+ <!-- towncrier release notes start -->
11
+
12
+ ## [2.12.0.dev0] - 2026-05-29
13
+
14
+ ### Added
15
+
16
+ - Added `CornerFinderSpec.corner_rounding_collapse_extent` so `LayerRefinementSpec` can recover sharp corners that pass the legacy angle threshold from small rounded or chamfered imported geometry.
17
+ - Added `ImpedanceSpec` to support complex-valued `LumpedPort` impedance. The `impedance` field now accepts either a plain real number (e.g. ``50``) or an `ImpedanceSpec(impedance=..., frequency=...)` for complex-valued loads. A complex impedance ``Z = R + jX`` is mapped to a series RL or RC load at the given measurement frequency, enabling reactive terminations in S-parameter simulations. Purely reactive loads (``Re(Z) = 0``) are not supported; ``Re(Z)`` must be strictly positive to ensure a stable FDTD pole.
18
+ - Added a dedicated PyTorch wrapper plugin documentation page under ``api/plugins/pytorch``.
19
+ - Added autograd support for `ClipOperation` geometry derivatives, including union, difference, intersection, and symmetric_difference.
20
+ - Added the `tidy3d mcp` command for running the Tidy3D MCP server from the active Tidy3D environment.
21
+ - Added `Palik_NoLoss` material-fitter refits for the low-loss Palik ranges of GaAs, Ge, SiO2, and cSi, and `Palik_LowLoss` variants for the previous Palik fits of GaAs, Ge, InP, SiO2, and cSi.
22
+ - Added per-interface physical residual diagnostics for EME: incident-normalized squared tangential E/H field residuals, corresponding non-PML-aperture residuals, and the flux-weighted power conservation defect, stored on ``EMESimulationData.diagnostics`` when ``EMESimulation.eme_diagnostics=True``.
23
+ - Added a `progress` keyword (default `True`) to `EMESimulation.compute_overlaps`, `EMESimulation.propagate_from_overlaps`, and `EMESimulation.propagate` that shows a per-phase `rich` progress bar on the logging console; pass `progress=False` to silence it.
24
+ - Accelerated charge solver support for the Masetti mobility model.
25
+ - `DeviceCharacteristics.dc_convergence` (new `SteadyConvergenceData`) flags per-bias Newton convergence and exposes the per-iteration residual trace, so callers can mask the I-V/C-V curves by the converged biases and inspect at which iteration each bias crossed the tolerance.
26
+ - Added support for explicit payment type, priority, and vGPU allocation settings when submitting component modeler batch tasks.
27
+
28
+ ### Changed
29
+
30
+ - `WavePort` and `TerminalWavePort` mesh refinement now interprets `num_grid_cells` as the cell count along the *largest* transverse dimension (the smaller dimension is aspect-ratio-scaled), with the default raised from 5 to 12. Two grid-snapping points are also emitted at opposite corners of the port plane.
31
+ - Changed the default autograd `minimum_spacing_fraction` from 0.01 to 0.001; set it back to 0.01 in your config to keep previous spacing behavior.
32
+ - `UniformUnstructuredGrid.min_edges_per_circumference` and `min_edges_per_side` now accept `0`, which skips the corresponding local mesh-size contribution. A deprecation warning is emitted when either field is left at its default: the default will change to `0` in the next release. Set the fields explicitly to preserve the current behavior.
33
+ - Changed grid validation to raise a units error when `UniformGrid.dl` or generated `AutoGrid` / `QuasiUniformGrid` cell sizes are below 1e-6 um.
34
+ - Improved memory usage and runtime for autograd local far-field projections in the 3D paired approximate path used by Cartesian and k-space monitors with ``far_field_approx=True``.
35
+ - Reduced peak memory usage when differentiating exact local field projections (`far_field_approx=False`).
36
+ - Increased default `ChargeToleranceSpec.max_iters` from `30` to `120`; set it explicitly to keep the previous behavior.
37
+ - `HeatChargeSimulation.use_accelerated_solver=False` (selecting the CPU charge solver) is now validated at construction and raises a `ValidationError` on `use_accelerated_solver` for configurations the CPU solver cannot run: heat and conduction simulations (which always run on the GPU accelerated solver) and charge simulations using GPU-accelerated-only features such as `MasettiMobility` or SSAC `at_voltages` bias-point selection. The flag now defaults to `True` (was `Optional` defaulting to `None`) and continues to use the GPU accelerated charge solver.
38
+
39
+ ### Fixed
40
+
41
+ - Suppressed the `Simulation` structure-at-boundary warning for structures touching `Periodic` or `BlochBoundary` edges, while keeping the warning for other boundary types unless structure extrusion is enabled.
42
+ - Improved auto-generated API documentation for classes with computed default values (e.g. ``NedeljkovicSorefMashanovich``), eliminating malformed Parameters sections and a long tail of other documentation build issues.
43
+ - Raise a validation error when an automatically added PEC frame (around a mode source with ``PECFrame`` or an internal absorber) overlaps the absorbing-boundary extrusion clipping region on any boundary with ``extrude_structures=True``. To opt out on a side that legitimately needs the source / absorber to reach the boundary (e.g. a wave-port source that spans the lateral domain via symmetry), pass ``extrude_structures=False`` to the boundary — either through ``Boundary.pml`` / ``Boundary.stable_pml`` / ``Boundary.absorber`` (now exposed there) or by constructing ``Boundary(plus=td.PML(extrude_structures=False), minus=td.PML(extrude_structures=False))`` explicitly.
44
+ - `TerminalComponentModeler.ports` and `ModalComponentModeler.ports` now use a discriminated union on the `type` field, so validation errors for a port dict are attributed to the correct port class instead of being scattered across every union branch.
45
+ - Fixed `PolySlabSet` to preserve its internal ring order across `safe_update()` and other vertex-space updates while still exporting area-sorted structures.
46
+ - Fixed mode solver picking the wrong sqrt root for lossless evanescent modes; direction is now resolved from time-averaged power flow with a passivity fallback.
47
+ - Fixed device characteristic DataArrays to expose value units and voltage coordinate units when simulation data is loaded.
48
+ - Fixed `EMESimulation.plot_3d()` to clip infinite structures to the simulation bounds.
49
+ - EME interface matching now uses the full solved modal basis as test rows, except modes with numerically unusable self-overlap, so high mode counts no longer slowly degrade S-matrix accuracy. Only the propagation trial basis is capped by ``EMEModeSweep.num_modes`` or ``EMEModeSpec.sort_spec.keep_modes``; modes flagged increasing (``Im(n_eff) < -EMEModeSpec.increasing_mode_tolerance``) remain available as test rows. The default increasing-mode tolerance now ignores roundoff-level negative imaginary effective indices in lossless cases. The per-cell ``EMEModeSpec.num_modes`` cap is raised from 100 to 1000 for convergence studies; practical mode counts remain limited by interface memory and dense interface/stacking runtime.
50
+ - Fixed edge singularity correction for geometry groups and difference boolean operations in conformal meshing.
51
+ - Fixed RF/modeler diverged runs to report a clear task status error instead of trying to download missing aggregate data.
52
+
53
+ ### Removed
54
+
55
+ - Removed deprecated `Scene.plot_heat_conductivity()`, `Scene.plot_structures_heat_conductivity()`, and `Scene.heat_conductivity_bounds()`; use `plot_heat_charge_property(property="heat_conductivity")`, `plot_structures_heat_charge_property(property="heat_conductivity")`, and `heat_charge_property_bounds(property="heat_conductivity")`.
56
+ - Removed deprecated `AbstractSimulation.plot_structures_heat_conductivity()` and `HeatChargeSimulation.plot_heat_conductivity()`; use `scene.plot_structures_heat_charge_property(property="heat_conductivity")` and `plot_property(property="heat_conductivity")`.
57
+ - Removed the deprecated legacy config API and legacy config migration paths.
58
+ - Removed `TopologyDesignRegion.params_uniform()`, `params_random`, `params_zeros`, `params_half`, `params_ones`, `AbstractOptimizer.initialize_result(params0)`, and `AbstractOptimizer.run(..., params0=...)`. For direct parameter arrays, replace the `TopologyDesignRegion.params_*` helpers with NumPy arrays using `region.params_shape`, such as `np.full(region.params_shape, value)`, `np.random.random(region.params_shape)`, `np.zeros(region.params_shape)`, `0.5 * np.ones(region.params_shape)`, or `np.ones(region.params_shape)`. For optimizer starting parameters previously passed as `params0`, configure the design region before constructing or updating the enclosing design and optimizer; use `CustomInitializationSpec(params=params0)` to preserve an existing array, or `RandomInitializationSpec(seed=...)` for reproducible random starts.
59
+ - Removed deprecated `SimulationData.plot_field(field_name="int")`, `SimulationData.plot_field(..., freq=...)`, and `SimulationData.plot_field(..., time=...)`; use `field_name="E", val="abs^2"`, `plot_field(..., f=...)`, and `plot_field(..., t=...)`.
60
+ - Removed deprecated `to_field_monitors()` method on terminal-based scattering-matrix ports (e.g. `LumpedPort`, `WavePort`); use `to_monitors()` instead.
61
+
62
+ ### Planned Deprecation
63
+
64
+ - `Palik_Lossless` is deprecated as a material-library variant name; material-library lookup now warns and returns `Palik_LowLoss`, while `Palik_NoLoss` provides zero-loss Palik fits where supported by low-loss source ranges.
65
+
66
+ ## [2.11.2] - 2026-05-03
67
+
68
+ ### Added
69
+
70
+ - Added documentation page explaining the three S-parameter definitions (`pseudo`, `power`, `symmetric_pseudo`) in `TerminalComponentModeler`, including mathematical derivations, symmetry properties, and power calculations.
71
+ - `TerminalComponentModeler` now warns when its `freqs` exceeds the soft limit used by frequency-domain monitors.
72
+ - Added local EME support for expressing a propagated S-matrix in user-supplied port modes.
73
+
74
+ ### Changed
75
+
76
+ - Added `Result.real_cost` to the design plugin so pre/post runs can report billed FlexCredit usage after execution.
77
+ - Increased the maximum number of EME cells from 100 to 500.
78
+
79
+ ### Fixed
80
+
81
+ - Fixed mode solver to place PEC boundaries at the closest grid boundary outside the monitor plane, matching user expectations when using the plane bounds as PEC locations (common in RF workflows). Added `solver_field_bounds` to ensure accurate field interpolation near the hard boundary.
82
+ - Fixed `eps_model()` across Tidy3D media classes to consistently accept scalar, list, and NumPy array frequency inputs, including custom and anisotropic media.
83
+ - Fixed `ModeSimulation.from_mode_solver()` to infer a wavelength from the mode-solver-associated simulation source when converting simulations that use auto grid without an explicit `grid_spec.wavelength`.
84
+ - Fixed TFSF source validation to reject setups whose in-domain region collapses to zero extent along both tangential directions, such as 1D simulations.
85
+ - Fixed CustomPoleResidue adjoint postprocessing to preserve the frequency axis for zero-gradient multi-frequency chunks.
86
+ - Stabilized Tidy3D model JSON float formatting across supported pydantic-core versions.
87
+ - Fixed EME S-matrix basis conversion for `EMEModeSweep` results that request different numbers of modes at different sweep points.
88
+ - Fixed `TerminalComponentModeler` to snap `WavePort` internal absorbers and mode sources to the updated simulation grid (which includes the wavelength override and mesh overrides) rather than the original user-provided grid, preventing absorbers from landing off-grid in the final simulation.
89
+ - Fixed inline PyVista plots in Jupyter on Python 3.13+ so they render interactively instead of failing or falling back to a static image.
90
+
91
+ ## [2.11.1] - 2026-04-21
92
+
93
+ ### Added
94
+
95
+ - Added local EME propagation via `EMESimulation.propagate(mode_data)` and a per-element staged pipeline (`mode_simulations`, `stage_cell_modes`, `compute_cell_overlap`, `compute_interface_overlap`, `compute_cell_smatrix`, `compute_interface_smatrix`, `compute_smatrix`). For iterative design with many sweeps on the same modal basis, `compute_overlaps(mode_data)` + `propagate_from_overlaps(cell_overlaps, interface_overlaps)` amortizes the overlap stage. Intermediate results (`EMEStageCellOverlap`, `EMEStageInterfaceSMatrix`, etc.) are serializable and reusable across parameter sweeps. `EMEFreqSweep` is not supported; use `EMESimulation.freqs` directly. The local path does not support anisotropic media in bent cells with `bend_medium_frame="global"`; use `bend_medium_frame="co_rotating"` or the remote backend in that case.
96
+ - Added `filter_func` support to `MethodGrid` and `MethodMonteCarlo` in the design plugin so invalid parameter combinations can now be skipped during parameter sweeps.
97
+ - Added `plot_field_components()` to `ModeSimulationData` and `ModeSolver` for plotting multiple mode field components in one call.
98
+ - Added `FieldProjector.from_near_field_data()` for projecting directly from custom or modified `FieldData`.
99
+
100
+ ### Changed
101
+
102
+ - Improved near-field projection performance.
103
+ - Strip autograd tracers from DataArray plotting functions before plotting.
104
+ - Keep original simulation data from being zeroed out during the adjoint pipeline.
105
+ - Updated adjoint shape integration to sample interface permittivity directly from anisotropic simulation permittivity data.
106
+
107
+ ### Fixed
108
+
109
+ - Fixed `ValueError` shape mismatch in `Simulation.epsilon()` when a `CustomMedium` uses `ScalarFieldDataArray` with a frequency dimension, by squeezing the leftover `f` dimension after spatial interpolation in `eps_diagonal_on_grid`.
110
+ - Fixed wrapped `angle_theta` handling for glancing-incidence checks so values like `-pi/2` and `5*pi/2` are validated consistently in `ModeSpec` and angled field sources.
111
+ - Added frontend validation for TCAD refinement regions and lines so unsupported degenerate shapes are rejected before submission.
112
+ - Fixed plot function override for tidy3d data arrays.
113
+
114
+ ## [2.11.0] - 2026-04-06
115
+
116
+ ### Added
117
+
118
+ - Added `ModeSortSpec.keep_modes` which can be set to `"all"` to keep all modes in the mode solver (the default), `"filtered"` to keep only modes passing the filter defined by the `ModeSortSpec`, or an integer `N` to keep only the top `N` modes after filtering and sorting.
119
+ - Added `Grid.fine_mesh_info` property to identify and report locations where grid cell sizes are fine for understanding meshing hotspots.
120
+ - Added `GaussianOverlapMonitor` and `AstigmaticGaussianOverlapMonitor` for decomposing electromagnetic fields onto Gaussian beam profiles.
121
+ - Added flag `remove_fragments` to the base `UnstructuredGrid` to remove fragments in unstructured grids. This can ease meshing by eliminating internal boundaries in overlapping structures.
122
+ - Added `fill_fraction_box` as a new filtering and sorting key which computes the field-energy fill fraction within a specified bounding box (`ModeSortSpec.bounding_box`).
123
+ - Added visualization of finest grid regions in `Simulation.plot_grid()` with shaded regions highlighting areas of fine meshing.
124
+ - Added `GaussianPort` and `AstigmaticGaussianPort` for S-matrix calculations using Gaussian beam sources and overlap monitors.
125
+ - Added deprecation warning for `conformal` in TCAD heat/charge monitors when explicitly set; this option is ignored (treated as `False`) when meshing with `remove_fragments=True`.
126
+ - Added `symmetric_pseudo` option for `s_param_def` in `TerminalComponentModeler` which applies a scaling factor that ensures the S-matrix is symmetric in reciprocal systems.
127
+ - Added autograd support for `Sphere`.
128
+ - Added `GeometryArray` class for efficiently representing multiple copies of a base geometry at specified offsets with transformation matrices. Includes a convenience method `geometry.array(offsets=..., transforms=...)` on all geometry objects.
129
+ - Added validation warning in `HeatChargeSimulation` for very small `Cylinder` radii to help users avoid meshing and numerical issues.
130
+ - Added `DesignSpace` support for sweeping `WorkflowType` objects, including mode/EME simulations and component modelers.
131
+ - Added config versioning with automatic backward migrations by default; forward-compat is best-effort unless strict mode is enabled.
132
+ - Added in-memory caching for downloaded batch results, configurable via ``config.batch_data_cache``.
133
+ - Added `current_amplitude_definition` parameter to `UniformCurrentSource` for size-independent total current injection. Set to `"total"` to interpret the source amplitude as total current rather than current density.
134
+ - Added baseband source time classes (`BasebandStep`, `BasebandGaussianPulse`, `BasebandRectangularPulse`, `BasebandCustomSourceTime`) for transient RF simulations with real-valued time signals.
135
+
136
+ - Added `SurfaceFieldMonitor` and `SurfaceFieldTimeMonitor` for recording electromagnetic fields on PEC surfaces in frequency and time domains, along with corresponding data classes (`SurfaceFieldData`, `SurfaceFieldTimeData`) and documentation.
137
+ - - Add ``numerical_structures`` hook to custom autograd run paths for user-defined structure creation and gradients in simulation and component-modeler workflows.
138
+ - Added frequency-parametrized lossy dielectrics and lossy metals to the RF material library. Users can access the default medium via the ``medium`` property (fitted for the default microwave frequency range of 0.3-300 GHz) or get a medium fitted for a specific frequency range via ``medium_in_range(frequency_range)``. For dielectrics, if the requested range extends beyond the original fitting range, a new model is created with averaged properties and a warning is issued.
139
+ - Added autograd support for custom source gradients with respect to `field_dataset` and `current_dataset`.
140
+ - Added optional `vgpu_allocation` parameter to `web.run`, `web.run_async`, `Job`, and `Batch` to control virtual GPU allocation for cloud task submission.
141
+
142
+ - Added `TerminalWavePort` for terminal-driven modal excitation in transmission line simulations. Added `reference_impedance` field on both `WavePort` and `TerminalWavePort` to allow user-specified reference impedance for S-parameter calculations.
143
+ - Monitors with `colocate=False` now compute flux, dot product, and outer dot product directly on the Yee grid without interpolation, improving accuracy.
144
+ - Added `TerminalComponentModelerData.renormalize()` method for renormalizing S-parameters to arbitrary reference impedances, supporting scalar, per-port, and full-matrix impedance specifications.
145
+ - Added `use_colocated_integration` field on sources and monitors to control whether flux, dot products, and overlap integrals use colocated or native Yee grid fields. RF wave ports now default to non-colocated integration for improved accuracy.
146
+ - Added `bulges` parameter to `PolySlab` geometry for defining arc segments in 2D polygon cross-sections using the standard bulge convention (bulge = tan(theta/4)), enabling curved edges between vertices.
147
+ - Added `CircuitImpedanceModel` to support arbitrary RLC circuits in `LinearLumpedElement`. Users can construct it directly with a valid list of components or use the class method `from_spice()` for instantiation from a SPICE netlist.
148
+ - Implemented batch execution optimizations by reducing HTTP calls and increasing parallelization.
149
+ - Added ``pole_residue`` broadband method for ``ModeSource`` and ``GaussianBeam`` sources, using vector fitting with auxiliary differential equations as an alternative to Chebyshev interpolation for frequency-dependent field injection.
150
+ - Added adjoint support for `GaussianOverlapMonitor` and `AstigmaticGaussianOverlapMonitor`.
151
+ - Added autograd support for `center` derivatives on `CustomFieldSource` and `CustomCurrentSource` for dimensions where source `size > 0`.
152
+ - Added `plot_port` support for `LumpedPort`, `CoaxialLumpedPort`, and `WavePort` in `TerminalComponentModeler`.
153
+ - Added native Claude Code and Gemini CLI plugin manifests for the Tidy3D MCP integration.
154
+
155
+ - Added parallel adjoint execution for local gradients when `config.adjoint.parallel_run = True`; this only works for eligible monitors and can make gradient calculations up to 2x faster.
156
+ - Added EME support for `EMEModeSpec.increasing_mode_tolerance` so weakly increasing modes caused by numerical noise can be retained without changing the default `0.0` behavior. Added `EMEModeSpec.bend_medium_frame` to choose whether bent-cell media are interpreted in the global frame or as co-rotating with the local waveguide frame; bent custom media are currently supported only in the co-rotating interpretation.
157
+ - Added `WavePort.to_mode_simulation()` and improved standalone wave-port mode solving to preserve local mesh refinement, PEC frames, and port extrusions, while also allowing optional structure/grid overrides, configurable structure-priority handling, and auto mode-spec resolution from the prepared local simulation.
158
+ - Added config-backed `run` and `vgpu` web run options, including scoped `with tidy3d.config as tmp_config:` overrides.
159
+ - Added support for `FilterProject` and `ErosionDilationPenalty` on symmetry-reduced inverse-design regions.
160
+ - Enabled `GaussianBeam` and `AstigmaticGaussianBeam` gradients.
161
+ - Added `PolygonMarker` with explicit `hull` and `holes` fields, and `symmetric` flag on `EdgePairMarker` to distinguish same-layer vs cross-layer DRC violations.
162
+ - Added `interp_method` parameter to `NedeljkovicSorefMashanovich` to support different interpolation methods (`linear`, `nearest`, `zero`, `log`) for perturbation coefficients between tabulated wavelengths.
163
+
164
+ ### Changed
165
+
166
+ - Added deprecation warning for `TemperatureMonitor` and `SteadyPotentialMonitor` when `unstructured` parameter is not explicitly set. The default value of `unstructured` will change from `False` to `True` after the 2.11 release.
167
+ - Added `custom_vjp` and new custom run functions that provide hooks into adjoint for custom gradient calculations.
168
+ - Added validation to `GaussianDoping` to ensure `ref_con < concentration`, validate `source` face identifier, and warn the user when the box size is not sufficient for the specified transition width.
169
+ - Added warning in `LayerRefinementSpec` when `dl_min_from_gaps` (derived from automatic gap refinement) is very small relative to the lateral grid size for identifying cases where excessive grid refinement may occur due to very small detected gaps.
170
+ - Reduced computation time of `adaptive_vjp_spacing` for `GeometryGroup` by allowing permittivity based spacing value to be cached.
171
+ - Local caching is now enabled by default (set `td.config.local_cache.enabled=False` to opt out).
172
+ - Changed default `num_points` in `EMEModeSpec.interp_spec` from 3 to 5 for improved accuracy of frequency interpolation.
173
+ - Unstructured data plots are now "crinkled", showing the full mesh elements that cover given monitor boundaries. Previously, the mesh elements were "clipped" to the monitor boundaries.
174
+ - `Scene.perturbed_mediums_copy()` now generates unique medium names based on structure names, eliminating duplicate medium name warnings.
175
+ - Changed the default value of `fill_value` in `UnstructuredGridDataset.interp()` from `0` to `"extrapolate"`. This means points outside the mesh will now use nearest-neighbor extrapolation instead of being filled with zeros.
176
+
177
+ - Improved charge simulation documentation: clarified 2D vs 3D output units, added unit metadata to monitor data fields, and fixed docstring formatting and formula inaccuracies across TCAD components.
178
+ - Changed field decay checking from percentage-based intervals to a fixed number of time steps (default 400), enabling quicker automatic shutoff in long-running simulations.
179
+ - `Scene.perturbed_mediums_copy()` now generates unique medium names based on structure names, eliminating duplicate medium name warnings.
180
+ - Refactored adjoint source and monitor preparation internals to support parallel adjoint workflows.
181
+
182
+ - The fully tensorial mode solver (required for fully anisotropic media or non-zero `ModeSpec.angle_theta`) now requires `tidy3d-extras` for local runs; install with `pip install tidy3d[extras]` or run through the server.
183
+ - Mode solver normalization now uses the dot product with the monitor's `conjugated_dot_product` setting instead of flux magnitude.
184
+
185
+ - Lazy `SimulationData` objects now load monitors on demand instead of materializing every monitor up front.
186
+ - Improved local approximate field projection performance for forward and autodiff workloads.
187
+ - Improved CustomMedium adjoint postprocessing memory usage by chunking structure-frequency work, auto-selecting chunk sizes from available memory, and removing avoidable data copies in the chunked pipeline.
188
+ - Improved `Simulation.plot_grid()` performance by batching matplotlib draw calls for override structures and snapping points.
189
+
190
+ ### Fixed
191
+
192
+ - Fixed `CustomMedium` gradient calculation when field coordinates exactly align with boundaries.
193
+ - Fixed adjoint simulation `grid_spec` to align exactly with forward simulation for correct `FieldData` adjoint source power.
194
+ - Fixed frequency accumulation of gradients for custom dispersive media.
195
+ - Fixed `snap_box_to_grid` producing zero-size boxes when using `Expand` behavior with very small intervals centered on a grid point.
196
+ - Fixed sliver polygon artifacts in 2D material subdivision by filtering polygons based on grid cell size, preventing numerical issues with large-coordinate geometries.
197
+ - Fixed intermittent "API key not found" errors in parallel job launches by making configuration directory detection race-safe.
198
+ - Fixed local cache race conditions causing `FileNotFoundError`.
199
+ - Fixed redundant logging when `Batch.download()` skips existing files, and added `replace_existing` to `Batch.run()` so overwrite behavior can be controlled directly.
200
+ - Fixed redundant server lookups when loading simulation results.
201
+ - Updated docstrings for `DerivativeInfo` to more accurately reflect dataclass fields.
202
+ - Fixed `TerminalComponentModeler` serialization failure with `CustomGridBoundaries` by storing JSON-serializable grid metadata in `GridSpec.attrs`.
203
+ - Improved `ModeSolver.solve()` to suppress the accuracy warning when local subpixel averaging is enabled via `tidy3d-extras`, and expanded docstrings for `ModeSolver.solve()`, `ModeSimulation.run_local()`, `Simulation.epsilon()`, and `Simulation.epsilon_on_grid()` to document the `config.simulation.use_local_subpixel` option.
204
+ - Fixed `ModeSolver.validate_pre_upload` not validating `MicrowaveModeSpec` with `AutoImpedanceSpec`, causing cryptic server-side errors for invalid conductor geometries.
205
+ - Fixed local cache not storing results for `ModalComponentModeler` (and `TerminalComponentModeler`) runs, causing cache misses on repeated `web.run()` calls.
206
+ - Fixed spurious `ModeSimulation` error logs during deserialization of `SimulationDataMap` by adding discriminators to `SimulationType` and `SimulationDataType` unions.
207
+ - Fixed unintended model output in Jupyter notebooks during `import tidy3d` by preventing `Tidy3dBaseModel.__str__` from triggering notebook display side effects.
208
+
209
+ - Fixed premature simulation shutoff when sources have a delayed peak (e.g. large GaussianPulse offset), where zero field energy before the source activates was incorrectly interpreted as full decay.
210
+ - Improved KLayout executable discovery on macOS for Homebrew cask app-suite installs under `/Applications/KLayout`.
211
+ - Fixed angled mode-solving for ModeMonitor runs with GaussianBeam sources by preventing rotated-reference simulations from revalidating retained sources.
212
+ - Fixed loading of medium settings so empty `NonlinearSpec` inputs are ignored instead of unintentionally enabling nonlinearity.
213
+ - Reformulated axial ratio calculation to avoid catastrophic cancellation for near-linear polarization, and raised the safety-net cap from 100 (40 dB) to 1e5 (100 dB).
214
+
215
+ - Fixed `num_workers` propagation in batch async/autograd paths so explicit values are respected, while defaults are preserved when omitted. Upload/start uses a separate fixed concurrency of 64 workers.
216
+ - Batch upload/start now logs per-task errors during upload/validation/start.
217
+ - Fixed adjoint SimulationData splitting to match monitor data by monitor name, with warnings for missing or unexpected monitor entries.
218
+ - Fixed autograd derivatives for `CustomFieldSource` and `CustomCurrentSource` datasets to preserve complex-valued gradients instead of dropping the imaginary component.
219
+ - Fixed simulation validation failure when WavePort `extrude_structures` was enabled with named structures by assigning unique names to extruded structures.
220
+ - Fixed incorrect far-field results from ``DirectivityMonitor`` when symmetry is used.
221
+ - Fixed local ``FieldProjector.project_fields()`` runs to support ``verbose=False`` when progress-bar output needs to be suppressed.
222
+ - Fixed traced Cartesian field projection conversion so projected fields can be used directly as custom source datasets without producing object-dtype arrays during serialization.
223
+ - Fixed autograd deserialization of remote complex-array VJP payloads used by traced field and custom source gradients.
224
+
225
+ - Fixed EME bent-waveguide mode preprocessing for anisotropic media in the default global-frame interpretation by tracking cumulative bend angle per cell and rotating anisotropic tensor data in a Yee-grid-aware way that preserves subpixel sampling before each local mode solve. Before this fix, bent orientation-sensitive media were effectively interpreted in the co-rotating frame; set `EMEModeSpec.bend_medium_frame="co_rotating"` to preserve that behavior. Also allow only reciprocal fully anisotropic media in EME validation, include swept frequencies in bent anisotropy checks, and reject bent-cell length sweeps that would reuse anisotropic modes at the wrong absolute bend angle.
226
+ - Fixed `Box.surfaces_with_exclusion()` so exclude_surfaces is respected for box surface generation.
227
+ - `ModeSpec` now rejects non-finite bend_radius values during validation.
228
+ - Fixed traced projected field, poynting, mode-solver summary, and directivity datasets so accessing items preserves tidy3d `DataArray` behavior under autograd.
229
+ - Fixed `DesignSpace.estimate_cost()` so nested container outputs are estimated by summing all simulations and batches instead of undercounting them.
230
+ - Fixed local 2D field projection validation and single-cell Cartesian resampling failures in the Tidy3D client.
231
+ - Fixed KLayout DRC parser crash on directed edge-pairs from cross-layer rules (separation, overlap, enclosing).
232
+ - Removed premature deprecation warning from `RLCNetwork` as the intended replacement is not yet available.
233
+ - Fixed autograd backward postprocessing to enforce ascending, aligned frequency ordering between adjoint monitor metadata and field datasets.
234
+ - Fixed generated JSON schemas for geometries, monitors, and simulations so `center` now shows the correct default value `(0, 0, 0)` instead of `null`.
235
+ - Fixed exported JSON schemas to include defaults for fields defined with zero-argument default factories.
236
+ - Fixed `FieldProjectionAngleMonitor`, `FieldProjectionCartesianMonitor`, and `FieldProjectionKSpaceMonitor` validation so structures outside the simulation domain no longer trigger homogeneous-medium errors.
237
+ - Fixed abrupt PolySlab sidewall edge oversampling near the composite quadrature threshold and avoided single-point quadrature on tiny edge fragments.
238
+ - Increased `WavePort` structure extrusion tolerance so that structures whose vertices are slightly offset from the port plane are reliably captured during extrusion.
239
+ - Fixed a spurious zero-thickness geometry warning for finalized simulations containing lumped elements or converted 2D materials.
240
+
241
+ ### Breaking Changes
242
+
243
+ - `ModeSortSpec.sort_key` is now required with a default of `"n_eff"` (previously optional with `None` default). `ModeSortSpec.sort_order` is now optional with a default of `None`, which automatically selects the natural order based on `sort_key` and `sort_reference`: ascending when a reference is provided (closest first), otherwise descending for `n_eff` and polarization fractions (higher values first), ascending for `k_eff` and `mode_area` (lower values first).
244
+ - Changed the interpretation of `waist_distance` and `waist_distances` for backward-propagating Gaussian beams (`GaussianBeam`, `AstigmaticGaussianBeam`, `GaussianBeamProfile`, `AstigmaticGaussianBeamProfile`). Previously, the waist position was interpreted relative to the directed propagation axis, meaning switching `direction` from `+` to `-` would also flip the waist position in the global reference frame. Now, the waist position is defined consistently for both directions: a positive `waist_distance` always places the beam waist behind the source/monitor plane (toward the negative normal axis), regardless of propagation direction. This ensures reciprocity between Gaussian sources and overlap monitors used in port-based S-matrix calculations. Users with existing simulations using backward-propagating Gaussian beams with non-zero waist distances may need to adjust their values.
245
+ - Added optional automatic extrusion of structures at the simulation boundaries into/through PML/Absorber layers via `extrude_structures` field in class `AbsorberSpec`.
246
+ - 1D lumped elements (with zero lateral extent) are no longer allowed. Use a small finite lateral extent (e.g., `1e-6`) instead.
247
+ - Added `structure_priority_mode` for `TerminalComponentModeler` and default to `"conductor"` to ensure metal structures override dielectrics regardless of structure order, preventing order-dependent results in RF simulations.
248
+ - `web.Batch(simulations=...)` now requires string task names when simulations are passed as a dictionary. Numeric keys (for example `0`, `1`) are no longer converted automatically; convert them to strings first (for example `"0"`, `"1"`).
249
+
250
+ ### Planned Deprecation
251
+
252
+ - `RLCNetwork` (a deprecation warning is now issued). Use `CircuitImpedanceModel` instead. `AdmittanceNetwork` may be renamed to `AdmittanceModel` in a future release.
253
+
254
+ ## [2.10.2] - 2026-01-21
255
+
256
+ ### Added
257
+ - Added `warn_once` option to logging configuration (`td.config.logging.warn_once`) that causes each unique warning message to be shown only once per process, reducing noise from repeated validation warnings.
258
+ - `EMECoefficientMonitor` now supports all of the same fields as `EMESimulationData.coeffs`, with the benefit of downsampling. The fields can be selected via the `EMECoefficientMonitor.fields` property.
259
+
260
+ ### Changed
261
+ - Unified inside/outside permittivity handling for all geometries when computing shape gradients.
262
+ - Enabled PEC gradients for dielectric structures embedded in PEC through use of `background_medium` field in `Structure` which includes shapes with combinations of dielectric-dielectric and dielectric-PEC boundaries.
263
+ - Improved `ComponentModeler` task monitoring.
264
+
265
+ ### Fixed
266
+ - Fixed interpolation handling for permittivity and conductivity gradients in `CustomPoleResidue`.
267
+ - Fixed docstrings with missing Notes sections causing spurious parameters in Sphinx documentation.
268
+ - Fixed coordinate snapping in shape gradient computation to handle 0 normal and grid spacing components.
269
+ - Fixed duplicate printing of cost estimation of `Job`.
270
+ - Fixed `outer_dot` with EME port modes `interpolated_copy`.
271
+ - Fixed `_finalized_volumetric_structures` not respecting `structure_priority_mode` when no 2D materials or lumped elements are present.
272
+
273
+ ### Removed
274
+ - Removed support for inconsistent `interp_specs` in the EME grid.
275
+
276
+ ## [2.10.1] - 2026-01-14
277
+
278
+ ### Added
279
+ - Added priority attribute to `TopologyDesignRegion` to enable manual control of overlapping structures.
280
+ - `to_mat_file()` method is now available on `ModeSimulationData` and `HeatChargeSimulationData` for exporting results to MATLAB `.mat` files.
281
+ - Added autograd support for diagonal `AnisotropicMedium` and `CustomAnisotropicMedium` with diagonal permittivity tensor.
282
+ - Added support of numpy 2.4
283
+ - Added validation to `DCVoltageSource` that warns when duplicate voltage values are detected in the `voltage` array, including treating `0` and `-0` as the same value.
284
+
285
+ ### Changed
286
+ - For `HeatChargeSimulation` objects, the `plot` function now adds the simulation boundary conditions.
287
+ - Improved memory performance in `postprocess_adj` by using `isel` instead of `sel` for xarray slicing.
288
+
289
+ ### Fixed
290
+ - Fixed `AutoImpedanceSpec` validation to check path intersections against all conductors, not just filtered ones, as well as the mode plane bounds.
291
+ - Fixed `WavePort` validation so invalid `mode_spec` errors are no longer masked by a `KeyError`.
292
+ - Fixed adjoint gradients being treated as zero due to scale-dependent `np.allclose(..., atol=1e-8)` checks, which could skip adjoint simulations and return zero gradients.
293
+ - Fixed adjoint setup crashing when traced monitor outputs produce no adjoint sources, returning no adjoint simulations instead.
294
+ - Fixed autograd `interpn` compatibility with newer SciPy versions by avoiding dtype coercion during interpolation setup.
295
+ - Fixed interpolation handling for permittivity and conductivity gradients in CustomMedium.
296
+ - Restored original batch-load logging by suppressing per-task “Loading simulation…” messages.
297
+ - Fixed output range of `tidy3d.plugins.invdes.FilterAndProject` to be between 0 and 1.
298
+ - Cropped adjoint monitor sizes in 2D simulations to planar geometry intersection.
299
+ - Fixed `Batch.download()` silently succeeding when background downloads fail (e.g., gzip extraction errors).
300
+ - Handling of zero values when using `sim_data.plot_field` with `scale=dB`.
301
+ - Fixed `intersections_plane` method in `PolySlab`, which sometimes missed vertices for planes coincident with `PolySlab` side faces.
302
+ - Fixed `http_interceptor` crash on non-dict JSON responses
303
+ - Fixed gradient regression for `Box` geometries where outside permittivity was not being correctly sampled.
304
+
305
+ ## [2.10.0] - 2025-12-18
306
+
307
+ ### Added
308
+ - Added rectangular and radial taper support to `RectangularAntennaArrayCalculator` for phased array amplitude weighting; refactored array factor calculation for improved clarity and performance.
309
+ - Selective simulation capabilities to `TerminalComponentModeler` via `run_only` and `element_mappings` fields, allowing users to run fewer simulations and extract only needed scattering matrix elements.
310
+ - Added KLayout plugin, with DRC functionality for running design rule checks in `plugins.klayout.drc`. Supports running DRC on GDS files as well as `Geometry`, `Structure`, and `Simulation` objects.
311
+ - Added "mil" and "in" (inch) units to `plot_length_units`.
312
+ - Objective functions that involve running `tidy3d.plugins.smatrix.ComponentModeler` can be differentiated with autograd.
313
+ - Access field decay values in `SimulationData` via `sim_data.field_decay` as `TimeDataArray`.
314
+ - Added ability to set first-order absorbing boundary conditions on simulation domain boundaries using either `ABCBoundary` or `ModeABCBoundary` classes.
315
+ - Added `frame` field to `ModeSource` (default: `None`) and `WavePort` (default: `PECFrame()`). Setting this to `PECFrame(length=...)` automatically places a thin PEC frame of specified length around the source/port. The automatically created frames can be inspected using `Simulation._finalized` property.
316
+ - Added `InternalAbsorber` class for placing first-order absorbing boundary conditions on planes inside the simulation domain. Internal absorbers are automatically wrapped in a PEC frame with a backing PEC plate on the non-absorbing side.
317
+ - Added `absorber` field (default: `True`) to `WavePort` for automatically placing an absorber behind the port.
318
+ - Added `conjugated_dot_product` field in `ModeMonitor` (default: `True`) and `WavePort` (default: `False`) to allow selecting the conjugated or non-conjugated dot product for mode decomposition.
319
+ - Support for gradients with respect to the `conductivity` of a `CustomMedium`.
320
+ - Added `VerticalNaturalConvectionCoeffModel`, a model for heat transfer due to natural convection from a vertical plate. It can be used in `ConvectionBC` to compute the heat transfer coefficient from fluid properties, using standard Nusselt number correlations for both laminar and turbulent flow.
321
+ - Added `BroadbandModeABCSpec` class for setting broadband absorbing boundary conditions that can absorb waveguide modes over a specified frequency range using a pole-residue pair model.
322
+ - `Scene.plot_3d()` method to make 3D rendering of scene.
323
+ - Added native web and batch support to run `ModalComponentModeler` and `TerminalComponentModeler` workflows.
324
+ - Added `SimulationMap` and `SimulationDataMap` immutable dictionary-like containers for managing collections of simulations and results.
325
+ - Added `TerminalComponentModelerData`, `ComponentModelerData`, `MicrowaveSMatrixData`, and introduced multiple DataArrays for modeler workflow data structures.
326
+ - Added autograd support for dispersive material models: `Sellmeier`, `Drude`, `Lorentz`, `Debye` and their custom medium variants.
327
+ - Added check and exception for NaN data in the adjoint pipeline to raise issue to user before adjoint source creation failure.
328
+ - Added autograd support for `TerminalComponentModeler` and `ModalComponentModeler`.
329
+ - Added `initialize_params_from_simulation` to `tidy3d.plugins.autograd.invdes` to initialize topology design regions from an underlying simulation geometry.
330
+ - Added autograd support for sidewall angles in `td.Cylinder` and `td.PolySlab`.
331
+ - New `MediumMonitor` that returns both permittivity and permeability profiles.
332
+ - Task names are now optional when using `run(sim)` or `Job`. When running multiple jobs (via `run_async` or `Batch`), you can also provide simulations as a list without specifying task names. The previous dictionary-based format with explicit task names is still supported.
333
+ - Enabled lazy loading of data via `web.load(..., lazy=True)`. When used, this returns a lightweight proxy object holding a reference to the data. On first access to any field or method, the proxy transparently loads the full object (same as with the default lazy=False).
334
+ - A new type of doping box has been introduced, `CustomDoping` which accepts a `SpatialDataArray` to define doping concentration. Unlike in the case where a `SpatialDataArray`, custom doping defined with `CustomDoping` have additive behavior, i.e., one can add other doping on top. This deprecates the `SpatialDataArray` as direct input for `N_a` and `N_d`.
335
+ - Non-isothermal Charge simulations are now available. One can now run this type of simulations by using the `SteadyChargeDCAnalysis` as the `analysis_spec` of a `HeatChargeSimulation`. This type of simulations couple the heat equation with the drift-diffusion equations which allow to account for self heating behavior.
336
+ - Because non-isothermal Charge simulations are now supported, new models for the effective density of states and bandgap energy have been introduced. These models are the following: `ConstantEffectiveDOS`, `IsotropicEffectiveDOS`, `MultiValleyEffectiveDOS`, `DualValleyEffectiveDOS`.
337
+ - Added the Hurkx model for direct band-to-band tunneling `HurkxDirectBandToBandTunneling`.
338
+ - Added Selberherr's model for impact ionization `SelberherrImpactIonization`.
339
+ - Added S-parameter de-embedding to `TerminalComponentModelerData`, enabling recalculation with shifted reference planes.
340
+ - Added optional automatic extrusion of structures intersecting with a `WavePort` via the new `extrude_structures` field, ensuring mode sources, absorbers, and PEC frames are fully contained.
341
+ - Added support for `tidy3d-extras`, an optional plugin that enables more accurate local mode solving via subpixel averaging.
342
+ - Added support for `symlog` and `log` scale plotting in `Scene.plot_eps()` and `Scene.plot_structures_property()` methods. The `symlog` scale provides linear behavior near zero and logarithmic behavior elsewhere, while 'log' is a base 10 logarithmic scale.
343
+ - Added `LowFrequencySmoothingSpec` and `ModelerLowFrequencySmoothingSpec` for automatic smoothing of mode monitor data at low frequencies where DFT sampling is insufficient.
344
+ - Added `MicrowaveModeSpec` for RF-specific mode information with customizable characteristic impedance calculations.
345
+ - Added `MicrowaveModeMonitor` and `MicrowaveModeSolverMonitor` for microwave and RF mode analysis with transmission line data.
346
+ - Added `MicrowaveModeData` and `MicrowaveModeSolverData` extending mode solver results with characteristic impedance, voltage coefficients, and current coefficients.
347
+ - Added `AutoImpedanceSpec` for automatic transmission line impedance calculation based on simulation geometry.
348
+ - Added `CustomImpedanceSpec` for user-defined voltage and current path specifications in impedance calculations.
349
+ - Added voltage integral specification classes: `AxisAlignedVoltageIntegralSpec` and `Custom2DVoltageIntegralSpec`.
350
+ - Added current integral specification classes: `AxisAlignedCurrentIntegralSpec`, `CompositeCurrentIntegralSpec`, and `Custom2DCurrentIntegralSpec`.
351
+ - `sort_spec` in `ModeSpec` allows for fine-grained filtering and sorting of modes. This also deprecates `filter_pol`. The equivalent usage for example to `filter_pol="te"` is `sort_spec=ModeSortSpec(filter_key="TE_polarization", filter_reference=0.5)`. `ModeSpec.track_freq` has also been deprecated and moved to `ModeSortSpec.track_freq`.
352
+ - Added `custom_source_time` parameter to `ComponentModeler` classes (`ModalComponentModeler` and `TerminalComponentModeler`), allowing specification of custom source time dependence.
353
+ - Validation for `run_only` field in component modelers to catch duplicate or invalid matrix indices early with clear error messages.
354
+ - Introduced a profile-based configuration manager with TOML persistence and runtime overrides exposed via `tidy3d.config`.
355
+ - Added support of `os.PathLike` objects as paths like `pathlib.Path` alongside `str` paths in all path-related functions.
356
+ - Added local simulation result caching to avoid rerunning identical simulations. Enable and configure it through `td.config.local_cache` (size limits, cache directory). Use CLI commands `tidy3d cache {info, list, clear}` to inspect or clear the cache.
357
+ - Added `DirectivityMonitorSpec` for automated creation and configuration of directivity radiation monitors in `TerminalComponentModeler`.
358
+ - Added multimode support to `WavePort` in the smatrix plugin, allowing multiple modes to be analyzed per port.
359
+ - Added support for `.lydrc` files for design rule checking in the `klayout` plugin.
360
+ - Added a Gaussian inverse design filter option with autograd gradients and complete padding mode coverage.
361
+ - Added support for argument passing to DRC file when running checks with `DRCRunner.run(..., drc_args={key: value})` in klayout plugin.
362
+ - Added support for `nonlinear_spec` in `CustomMedium` and `CustomDispersiveMedium`.
363
+ - `tidy3d.plugins.design.DesignSpace.run(..., fn_post=...)` now accepts a `priority` keyword to propagate vGPU queue priority to all automatically batched simulations.
364
+ - Introduced `BroadbandPulse` for exciting simulations across a wide frequency spectrum.
365
+ - Added `interp_spec` in `ModeSpec` to allow downsampling and interpolation of waveguide modes in frequency.
366
+ - Added warning if port mesh refinement is incompatible with the `GridSpec` in the `TerminalComponentModeler`.
367
+ - Various types, e.g. different `Simulation` or `SimulationData` sub-classes, can be loaded from file directly with `Tidy3dBaseModel.from_file()`.
368
+ - Added `interp_spec` in `EMEModeSpec` to enable faster multi-frequency EME simulations. Note that the default is now `ModeInterpSpec.cheb(num_points=3, reduce_data=True)`; previously the computation was repeated at all frequencies.
369
+ - Added `smoothed_projection` for topology optimization of completely binarized designs.
370
+ - Added more RF-specific mode characteristics to `MicrowaveModeData`, including propagation constants (alpha, beta, gamma), phase/group velocities, wave impedance, and automatic mode classification with configurable polarization thresholds in `MicrowaveModeSpec`.
371
+ - Introduce `tidy3d.rf` namespace to consolidate all RF classes.
372
+ - Added support for custom colormaps in `plot_field`.
373
+ - Added `symmetrize_mirror`, `symmetrize_rotation`, `symmetrize_diagonal` functions to the autograd plugin. They can be used for enforcing symmetries in topology optimization.
374
+ - Klayout plugin automatically finds klayout installation path at common locations.
375
+ - Added autograd support for `TriangleMesh`, allowing gradient computation with respect to mesh vertices for inverse design.
376
+ - Added `EMESimulation.store_coeffs` to store coefficients from the EME solver, including mode overlaps, interface S matrices, and effective propagation indices.
377
+ - Get cell-related information from violation markers in `DRCResults` and `DRCViolation` to the klayout plugin: Use for example `DRCResults.violations_by_cell` to group them.
378
+ - `pixel_exact` option for `to_gds` export of simulations and structures. If this option is set, any custom medium will be exported as rectangular pixels according to the specification of the medium coordinates.
379
+
380
+ ### Changed
381
+ - Adaptive minimum spacing for `PolySlab` integration is now wavelength relative and a minimum discretization is set for computing gradients for cylinders.
382
+ - The `TerminalComponentModeler` defaults to the pseudo wave definition of scattering parameters. The new field `s_param_def` can be used to switch between either pseudo or power wave definitions.
383
+ - Restructured the smatrix plugin with backwards-incompatible changes for a more robust architecture. Notably, `ComponentModeler` has been renamed to `ModalComponentModeler` and internal web API methods have been removed. Please see our migration guide for details on updating your workflows.
384
+ - Prevent small bandwidth sources from being created in `TerminalComponentModeler` when modeler frequencies are close together.
385
+ - `Simulation.epsilon` now samples off-diagonal elements of fully tensorial permittivity at grid *boundaries*, to be consistent with the how these enter the FDTD simulation. This means that all off-diagonal components are now sampled at the same locations.
386
+ - Propagate `verbose` to `start` function in web API.
387
+ - `LayerRefinementSpec` defaults to assuming structures made of different materials are interior-disjoint for more efficient mesh generation.
388
+ - Improved performance of antenna metrics calculation by utilizing cached wave amplitude calculations instead of recomputing wave amplitudes for each port excitation in the `TerminalComponentModelerData`.
389
+ - Changed hashing method in `Tidy3dBaseModel` from sha256 to md5.
390
+ - Removed validators on limiting the number of geometries in a ClipOperation geometry.
391
+ - Improved the speed of computing `Box` shape derivatives when used inside a `GeometryGroup`.
392
+ - All RF and microwave specific components now inherit from `MicrowaveBaseModel`.
393
+ - `DirectivityMonitor` now forces `far_field_approx` to `True`, which was previously configurable.
394
+ - Unified run submission API: `web.run(...)` is now a container-aware wrapper that accepts a single simulation or arbitrarily nested containers (`list`, `tuple`, `dict` values) and returns results in the same shape.
395
+ - `web.Batch(ComponentModeler)` and `web.Job(ComponentModeler)` native support
396
+ - Simulation data of batch jobs are now automatically downloaded upon their individual completion in `Batch.run()`, avoiding waiting for the entire batch to reach completion.
397
+ - Port names in `ModalComponentModeler` and `TerminalComponentModeler` can no longer include the `@` symbol.
398
+ - Improved speed of convolutions for large inputs.
399
+ - Default value of `EMEModeSpec.interp_spec` is `ModeInterpSpec.cheb(num_points=3, reduce_data=True)` for faster multi-frequency EME simulations.
400
+ - Default value of `num_sweep` in `EMECoefficientMonitor` is now `None`, recording all sweep indices.
401
+ - Maximum number of frequencies in an `EMESimulation` is now larger if mode interpolation via `ModeInterpSpec` is used.
402
+ - Removed validator that would warn if `PerturbationMedium` values could become numerically unstable, since an error will anyway be raised if this actually happens when the medium is converted using actual perturbation data.
403
+ - Improved performance of adjoint gradient computation for `PolySlab` and `Cylinder` geometries through vectorized sidewall patch collection (~4x speedup).
404
+ - Added optional `max_results` handling to the kLayout `DRCLoader` and `DRCRunner` and speeded up parsing of big result sets.
405
+
406
+ ### Fixed
407
+ - Bug in `TerminalComponentModeler.get_antenna_metrics_data` when port amplitudes are set to zero.
408
+ - Added missing `solver_version` keyword argument to `run_async`.
409
+ - Fixed `interpn` data array method to be compatible with extrapolation outside of data array coordinates.
410
+ - Fixed `overlap_sort` to use the same value of the `conjugated_dot_product` field in `ModeMonitor`, and added the `conjugated_dot_product` field to `ModeSolver` and `ModeSimulation`.
411
+ - Stricter validation for `bend_radius` in mode simulations, preventing the bend center from coinciding with the simulation boundary.
412
+ - Prevent autograd adjoint simulations from reusing out-of-range `normalize_index` values by defaulting their normalization to the first adjoint source when needed.
413
+ - Subtasks validation errors from `web.upload(ComponentModeler)` previously were not being propagated to users, and hung without response.
414
+ - Ensured the legacy `Env` proxy mirrors `config.web` profile switches and preserves API URL.
415
+ - More robust `Sellmeier` and `Debye` material model, and prevent very large pole parameters in `PoleResidue` material model.
416
+ - Bug in `WavePort` when more than one mode is requested in the `ModeSpec`.
417
+ - Solver error for named 2D materials with inhomogeneous substrates.
418
+ - In `Tidy3dBaseModel` the hash (and cached `.json_string`) are now sensitive to changes in `.attrs`.
419
+ - More accurate frequency range for ``GaussianPulse`` when DC is removed.
420
+ - Bug in `TerminalComponentModelerData.get_antenna_metrics_data()` where `WavePort` mode indices were not properly handled. Improved docstrings and type hints to make the usage clearer.
421
+ - Improved type hints for `Tidy3dBaseModel`, so that all derived classes will have more accurate return types.
422
+ - More robust method for suppressing RF license warnings during tests.
423
+ - Fixed frequency sampling of `TransmissionLineDataset` within `MicrowaveModeData` when using group index calculation.
424
+ - Fixed DRC parsing for quoted categories in klayout plugin.
425
+ - Removed mode solver warnings about evaluating permittivity of a `Medium2D`.
426
+ - Maximum number of grid points in an EME simulation is now based solely on transverse grid points. Maximum number of EME cells is unchanged.
427
+ - Fixed handling of polygons with holes (interiors) in `subdivide()` function. The function now properly converts polygons with interiors into `PolySlab` geometries using subtraction operations with `GeometryGroup`.
428
+ - Fix to `outer_dot` when frequencies stored in the data were not in increasing order. Previously, the result would be provided with re-sorted frequencies, which would not match the order of the original data.
429
+ - Fixed bug where an extra spatial coordinate could appear in `complex_flux` and `ImpedanceCalculator` results.
430
+ - Fixed normal for `Box` shape gradient computation to always point outward from boundary which is needed for correct PEC handling.
431
+ - Fixed `Box` gradients within `GeometryGroup` where the group intersection boundaries were forwarded.
432
+ - Fixed `Box` gradients to use automatic permittivity detection for inside/outside permittivity.
433
+ - Improved degenerate mode handling in the mode solver to ensure modes respect the bi-orthogonality condition.
434
+
435
+ ### Removed
436
+ - Removed deprecated `use_complex_fields` parameter from `TwoPhotonAbsorption` and `KerrNonlinearity`. Parameters `beta` and `n2` are now real-valued only, as is `n0` if specified.
437
+ - Removed the Adjoint plugin.
438
+ - Deprecation of Python 3.9 support.
439
+
440
+ ### Breaking Changes
441
+ - Native web and batch support of `ModalComponentModeler` and `TerminalComponentModeler` required changing these classes schemas considerably.
442
+ - Equivalent behaviour is available using a different workflow.
443
+ - `folder_name`, `verbose`, `path_dir`, `batch_cached`, `verbose`, `callback_url` fields have been removed. They are accessible through the `tidy3d.web` interface.
444
+ - Edge singularity correction at PEC and lossy metal edges defaults to `True`.
445
+ - `angle_threshold` in `CornerFinderSpec` now defaults to `pi/4`.
446
+ - `WavePort` has been refactored to use `MicrowaveModeSpec`. The fields `voltage_integral`, and `current_integral` have been removed.
447
+ - Impedance specifications are now defined in `MicrowaveModeSpec.impedance_specs`. Please see our [migration guide](https://docs.flexcompute.com/projects/tidy3d/en/v2.10.0/api/microwave/microwave_migration.html) for details on updating your code.
448
+
449
+ ### Planned Deprecation
450
+ **Note: These changes only affect the microwave and smatrix plugins.**
451
+ - Renamed path integral classes for improved consistency. Please see our [migration guide](https://docs.flexcompute.com/projects/tidy3d/en/v2.10.0/api/microwave/microwave_migration.html) for details on updating your code. Old class naming is aliased to the new classes for 2.10.
452
+ - `VoltageIntegralAxisAligned` → `AxisAlignedVoltageIntegral`
453
+ - `CurrentIntegralAxisAligned` → `AxisAlignedCurrentIntegral`
454
+ - `CustomPathIntegral2D` → `Custom2DPathIntegral`
455
+ - `CustomVoltageIntegral2D` → `Custom2DVoltageIntegral`
456
+ - `CustomCurrentIntegral2D` → `Custom2DCurrentIntegral`
457
+ - Path integral and impedance calculator classes have been refactored and moved from the microwave plugin into Tidy3D components. They are now publicly exported via the top-level package `__init__.py`.
458
+
459
+ ## [2.9.3]
460
+
461
+ ### Added
462
+
463
+ ### Changed
464
+
465
+ ### Fixed
466
+ - Fixed `pyproject.toml` and `tidy3d.__version__` mismatch.
467
+
468
+ ## [2.9.2]
469
+
470
+ ### Added
471
+
472
+ ### Changed
473
+ - Improved Nexus platform configuration support and instantiation. Includes improvements to use the new `tidy3d configure ... --nexus-url <url>` CLI functionality.
474
+
475
+ ### Fixed
476
+
477
+ ## [2.9.1] - 2025-08-13
478
+
479
+ ### Changed
480
+ - Validate mode solver object for large number of grid points on the modal plane.
481
+
482
+ ### Fixed
483
+ - Fixed missing amplitude factor and handling of negative normal direction case when making adjoint sources from `DiffractionMonitor`.
484
+ - Improved the robustness of batch jobs. The batch state, including all `task_ids`, is now saved to `batch.hdf5` immediately after upload. This fixes an issue where an interrupted batch (e.g., due to a kernel crash or network loss) would be unrecoverable.
485
+ - Fixed warning for running symmetric adjoint simulations by port to not trigger when there is a single port.
486
+ - Bug in `CoaxialLumpedPort` where source injection is off when the `normal_axis` is not `z`.
487
+ - Validation of `freqs` in the `ComponentModeler` and `TerminalComponentModeler`.
488
+ - Calculation of voltage and current in the `WavePort`, when one type of path integral is supplied and the transmission line mode is lossy.
489
+ - Polygon vertices cleanup in `ClipOperation.intersections_plane`.
490
+ - Removed sources from `sim_inf_structure` simulation object in `postprocess_adj` to avoid source and background medium validation errors.
491
+ - Revert overly restrictive validation of `freqs` in the `ComponentModeler` and `TerminalComponentModeler`.
492
+ - Fixed `ElectromagneticFieldData.to_zbf()` to support single frequency monitors and apply the correct flattening order.
493
+
494
+ ## [2.9.0] - 2025-08-04
495
+
496
+ ### Added
497
+ - Fields `convex_resolution`, `concave_resolution`, and `mixed_resolution` in `CornerFinderSpec` can be used to take into account the dimensions of autodetected convex, concave, or mixed geometric features when `dl_min` is automatically inferred during automatic grid generation.
498
+ - `LayerRefinementSpec` now supports automatic thin gap meshing through fields `gap_meshing_iters` and `dl_min_from_gap_width`.
499
+ - Added `eps_lim` keyword argument to `Simulation.plot_eps()` for manual control over the permittivity color limits.
500
+ - Added `thickness` parameter to `LossyMetalMedium` for computing surface impedance of a thin conductor.
501
+ - `priority` field in `Structure` and `MeshOverrideStructure` for setting the behavior in structure overlapping region. When its value is `None`, the priority is automatically determined based on the material property and simulation's `structure_priority_mode`.
502
+ - Automatically apply `matplotlib` styles when importing `tidy3d` which can be reverted via the `td.restore_matplotlib_rcparams()` function.
503
+ - Added `TriangleMesh.from_height_expression` class method to create a mesh from an analytical height function defined on a 2D grid and `TriangleMesh.from_height_grid` class method to create a mesh from height values sampled on a 2D grid.
504
+ - Added heat sources with custom spatial dependence. It is now possible to add a `SpatialDataArray` as the `rate` in a `HeatSource`.
505
+ - Added Transient Heat simulations. It is now possible to run transient Heat simulations. This can be done by specifying `analysis_spec` of `HeatChargeSimulation` object as `UnsteadyHeatAnalysis`.
506
+ - A `num_grid_cells` field to `WavePort`, which ensures that there are 5 grid cells across the port. Grid refinement can be disabled by passing `None` to `num_grid_cells`.
507
+ - Implemented `FreqRange` utility class for frequency/wavelength handling with constructor methods `from_freq_interval()`, `from_wavelength()`, and `from_wvl_interval()`.
508
+ - Add support for `np.unwrap` in `tidy3d.plugins.autograd`.
509
+ - Add Nunley variant to germanium material library based on Nunley et al. 2016 data.
510
+ - Add `PointDipole.sources_from_angles()` that constructs a list of `PointDipole` objects needed to emulate a dipole oriented at a user-provided set of polar and azimuthal angles.
511
+ - Added `priority` parameter to `web.run()` and related functions to allow vGPU users to set task priority (1-10) in the queue.
512
+ - `EMEFieldMonitor` now supports `interval_space`.
513
+ - `Simulation.precision` option allows to select `"double"` precision for very high-accuracy results. Note that this is very rarely needed, and doubles the simulation computational weight and correspondingly FlexCredit cost.
514
+ - Added material type `PMCMedium` for perfect magnetic conductor.
515
+ - `ModeSimulation.plot()` method that plots the mode simulation plane by default, or the containing FDTD simulation if any of ``x``, ``y``, or ``z`` is passed.
516
+ - Enable singularity correction at PEC and lossy metal edges.
517
+ - New `VolumeMesher` simulation type and associated `VolumeMeshMonitor` and `VolumeMesherData`, which can be used to run the unstructured meshing for a `HeatChargeSimulation` separately before running the solver.
518
+ - The current validator for Conduction simulations has been modified so that it checks that in a Conduction simulation there is at least one structure defined with `ChargeConductorMedium` in the `charge` field of a `MultiPhysicsMedium`. This is necessary to ensure simulations are properly set up in the back-end since it relies on the `conductivity` field of `ChargeConductorMedium` and not that of `Medium`.
519
+ - Access field decay values in `SimulationData` via `sim_data.field_decay` as `TimeDataArray`.
520
+
521
+ ### Changed
522
+ - Relaxed bounds checking of path integrals during `WavePort` validation.
523
+ - Internal adjoint helper methods are now prefixed with an underscore to separate them from the public API.
524
+ - Drop the dependency on `gdspy`, which has been unmaintained for over two years. Interfaces previously relying on `gdspy` now use its maintained successor, `gdstk`, with equivalent functionality.
525
+ - Small (around 1e-4) numerical precision improvements in EME solver.
526
+ - Adjoint source frequency width is adjusted to decay sufficiently before zero frequency when possible to improve accuracy of simulation normalization when using custom current sources.
527
+ - Change `VisualizationSpec` validator for checking validity of user specified colors to only issue a warning if matplotlib is not installed instead of an error.
528
+ - Improved performance of `tidy3d.web.delete_old()` for large folders.
529
+ - `tidy3d.plugins.autograd.interpolate_spline()` and `tidy3d.plugins.autograd.add_at()` can now be called with keyword arguments during tracing.
530
+ - Zero-size dimensions automatically receive periodic boundary conditions instead of raising an error.
531
+ - Set `ModeSpec` precision to `double` by default for more accurate mode solver results. Does not apply to `EMEModeSpec`, where the `auto` precision is still default for speed and cost.
532
+ - Switched to an analytical gradient calculation for spatially-varying pole-residue models (`CustomPoleResidue`).
533
+ - Significantly improved performance of the `tidy3d.plugins.autograd.grey_dilation` morphological operation and its gradient calculation. The new implementation is orders of magnitude faster, especially for large arrays and kernel sizes.
534
+ - Warnings are now generated (instead of errors) when instantiating `PML`, `StablePML`,
535
+ or `Absorber` classes (or when invoking `pml()`, `stable_pml()`, or `absorber()` functions)
536
+ with fewer layers than recommended.
537
+ - Warnings and error messages originating from `Structure`, `Source`, or `Monitor` classes now refer to problematic objects by their user-supplied `name` attribute, alongside their index.
538
+ - File downloads are atomic. Interruptions or failures during download will no longer result in incomplete files.
539
+ - Warnings are now generated (instead of errors) when instantiating `PML`, `StablePML`, or `Absorber` classes (or when invoking `pml()`, `stable_pml()`, or `absorber()` functions) with fewer layers than recommended.
540
+ - `Simulation.subsection` can no longer take `symmetry` as an argument - the symmetry is always taken from the original simulation.
541
+ - If a mode simulation is crossing a symmetry plane of the larger simulation domain, but the mode plane is not symmetric, a warning is issued that it will be expanded symmetrically. Previously this warning only happened during the solver run.
542
+ - Enhanced `PolySlab` and `Cylinder` gradient computation via adaptive field sampling along geometry boundaries instead of fixed-grid center sampling.
543
+ - Shape derivatives have been sped up significantly, especially for simulations containing many structures in a `GeometryGroup`.
544
+ - By default, batch downloads will skip files that already exist locally. To force re-downloading and replace existing files, pass the `replace_existing=True` argument to `Batch.load()`, `Batch.download()`, or `BatchData.load()`.
545
+ - The `BatchData.load_sim_data()` function now overwrites any previously downloaded simulation files (instead of skipping them).
546
+ - Tighter `TOL_EIGS` used for mode solver, since `scipy` sometimes failed to find modes.
547
+
548
+ ### Fixed
549
+
550
+ - Fixed bug in broadband adjoint source creation when forward simulation had a pulse amplitude greater than 1 or a nonzero pulse phase.
551
+ - Fixed shaping of `CustomMedium` gradients when permittivity data includes a frequency dimension with multiple entries.
552
+ - Bug in contains check for `LumpedElement`, which should allow the case of a `LumpedElement` touching the simulation boundaries.
553
+ - Bug when generating a grid with snapping points near the simulation boundaries.
554
+ - Fixed field colocation in `EMEModeSolverMonitor`.
555
+ - Internal interpolation errors with some versions of `xarray` and `numpy`.
556
+ - If `ModeSpec.angle_rotation=True` for a mode object, validate that the structure rotation can be successfully done. Also, error if the medium cannot be rotated (e.g. anisotropic or custom medium), which would previously have just produced wrong results.
557
+ - Characteristic impedance calculations in the `ImpedanceCalculator` using definitions that rely on flux, which were giving incorrect results for lossy transmission lines.
558
+ - Validation for `CustomGridBoundaries`, which was previously allowing unsorted arrays and arrays with less than two entries.
559
+ - `DiffractionMonitor` results to apply finite grid field corrections for higher precision when comparing e.g. to `FluxMonitor` computations of total power.
560
+ - Bug when validating the grid resolution near `CoaxialLumpedPort`.
561
+ - Arrow lengths are now scaled consistently in the X and Y directions, and their lengths no longer exceed the height of the plot window.
562
+ - Plots of objects defined by shape intersection logic will no longer display thin line artifacts.
563
+ - Fixed incorrect gradient computation in PyTorch plugin (`to_torch`) for functions returning multi-element arrays.
564
+ - `MonitorData.get_amplitude()` no longers multiplies by a factor of `1j` and now directly returns the complex value of the data.
565
+ - `EMESimulationData.port_modes_tuple` is now symmetry-expanded.
566
+ - Fixed `Medium2D` validation error message when invalid data is passed to `ss`.
567
+ - The phase of the amplitudes of a `DiffractionMonitor` was correctly centered such that the origin is at the monitor center.
568
+ - Giving opposite boundaries different names no longer causes a symmetry validator failure.
569
+ - Fixed issue with parameters in `InverseDesignResult` sometimes being outside of the valid parameter range.
570
+ - Fixed performance regression for multi-frequency adjoint calculations.
571
+ - Disallow `EMEFieldMonitor` in EME simulations with `EMELengthSweep`.
572
+ - Fixed bug in adjoint postprocessing frequency batching that was causing gradients to be zero or incorrect. The error was surfacing when selecting a subset of the monitor frequencies in the objective function.
573
+
574
+ ## [2.8.5] - 2025-07-07
575
+
576
+ ### Fixed
577
+ - Bug in `PlaneWave` defined with a negative `angle_theta` which would lead to wrong injection.
578
+ - `GaussianBeam` and `AstigmaticGaussianBeam` default `num_freqs` reset to 1 (it was set to 3 in v2.8.0) and a warning is issued for a broadband, angled beam for which `num_freqs` may not be sufficiently large.
579
+ - Set the maximum `num_freqs` to 20 for all broadband sources (we have been warning about the introduction of this hard limit for a while).
580
+ - Solver error for EME simulations with bends, introduced when support for 2D EME simulations was added.
581
+ - Fixed handling of symmetry when creating adjoint field sources and added warning when broken up adjoint simulations do not have the same symmetry as the forward simulation.
582
+
583
+ ## [2.8.4] - 2025-05-15
584
+
585
+ ### Added
586
+ - The method `Geometry.reflected` can be used to create a reflected copy of any geometry off a plane. As for other transformations, for efficiency, `reflected` `PolySlab` directly returns an updated `PolySlab` object rather than a `Transformed` object, except when the normal of the plane of reflection has a non-zero component along the slab axis, in which case `Transformed` is still returned.
587
+ - Validation check for unit error in grid spacing.
588
+ - Validation that when symmetry is imposed along a given axis, the boundary conditions on each side of the axis are identical.
589
+
590
+ ### Changed
591
+ - Supplying autograd-traced values to geometric fields (`center`, `size`) of simulations, monitors, and sources now logs a warning and falls back to the static value instead of erroring.
592
+ - Attempting to differentiate server-side field projections now raises a clear error instead of silently failing.
593
+ - Improved error message and handling when attempting to load a non-existent task ID.
594
+ - `ClipOperation` now fails validation if traced fields are detected.
595
+ - Warn if more than 20 frequencies are used in EME, as this may lead to slower or more expensive simulations.
596
+ - EME now supports 2D simulations.
597
+ - 'EMESimulation' now supports 'PermittivityMonitor'.
598
+
599
+ ### Fixed
600
+ - Fixed issue with `CustomMedium` gradients where other frequencies would wrongly contribute to the gradient.
601
+ - Fixed bug when computing `PolySlab` bounds in plotting functions.
602
+
603
+ ## [2.8.3] - 2025-04-24
604
+
605
+ ### Added
606
+ - Ability to select payment option when submitting jobs from the Python client.
607
+ - Periodic repetition of EME subgrids via `num_reps` or `EMEPeriodicitySweep`.
608
+ - Methods `EMEExplicitGrid.from_structures` and `EMECompositeGrid.from_structure_groups` to place EME cell boundaries at structure bounds.
609
+ - 'ModeSimulation' now supports 'PermittivityMonitor'.
610
+ - Classmethod `from_frequency_range` in `GaussianPulse` for generating a pulse whose amplitude in the frequency_range [fmin, fmax] is maximized, which is particularly useful for running broadband simulations.
611
+ - Differentiable function `td.plugins.autograd.interpolate_spline` for 1D linear, quadratic, and cubic spline interpolation, supporting differentiation with respect to the interpolated values (`y_points`) and optional endpoint derivative constraints.
612
+ - `SteadyEnergyBandMonitor` in the Charge solver.
613
+ - Pretty printing enabled with `rich.print` for the material library, materials, and their variants. In notebooks, this can be accessed using `rich.print` or `display`, or by evaluating the material library, a material, or a variant in a cell.
614
+ - `FieldData` and `ModeData` support exporting E fields to a Zemax Beam File (ZBF) with `.to_zbf()` (warning: experimental feature).
615
+ - `FieldDataset` supports reading E fields from a Zemax Beam File (ZBF) with `.from_zbf()` (warning: experimental feature).
616
+ - Unstructured grid now supports 2D/3D box-shaped refinement regions and 1D refinement lines of arbitrary direction.
617
+
618
+ ### Changed
619
+ - Performance enhancement for adjoint gradient calculations by optimizing field interpolation.
620
+ - Auto grid in EME simulations with multiple `freqs` provided uses the largest instead of raising an error.
621
+ - Increased maximum number of frequencies in an EME simulation from 20 to 500
622
+ - Named mediums now display by name for brevity; materials/variants print concise summaries including references.
623
+
624
+ ### Fixed
625
+ - Fixed `reverse` property of `td.Scene.plot_structures_property()` to also reverse the colorbar.
626
+ - Fixed bug in surface gradient computation where fields, instead of gradients, were being summed in frequency.
627
+
628
+ ## [2.8.2] - 2025-04-09
629
+
630
+ ### Added
631
+ - `fill` and `fill_structures` argument in `td.Simulation.plot_structures()` and `td.Simulation.plot()` respectively to disable fill and plot outlines of structures only.
632
+ - New subpixel averaging option `ContourPathAveraging` applied to dielectric material boundaries.
633
+ - A property `interior_angle` in `PolySlab` that stores angles formed inside polygon by two adjacent edges.
634
+ - `eps_component` argument in `td.Simulation.plot_eps()` to optionally select a specific permittivity component to plot (eg. `"xx"`).
635
+ - Monitor `AuxFieldTimeMonitor` for aux fields like the free carrier density in `TwoPhotonAbsorption`.
636
+ - Broadband handling (`num_freqs` argument) to the TFSF source.
637
+ - Ability to define a `WavePort` using only a voltage or current path integral, with the missing quantity inferred via power conservation.
638
+
639
+ ### Fixed
640
+ - Compatibility with `xarray>=2025.03`.
641
+ - Inaccurate gradient when auto-grabbing permittivities for structures using `td.PolySlab` when using dispersive material models.
642
+ - Fixed scaling for adjoint sources when differentiating with respect to `FieldData` to account for the mesh size of the monitor and thus the created source. This aligns adjoint gradient magnitudes with numerical finite difference gradients for field data.
643
+ - Warn when mode solver pml covers a significant portion of the mode plane.
644
+ - TFSF server errors related to the auxiliary plane wave source that would previously happen on the server are now caught upon simulation creation.
645
+ - Opposite arrow curvature for mode sources and monitors with non-zero bendind radius when plotted in the figure's Y axis.
646
+
647
+ ### Changed
648
+ - `num_freqs` in Gaussian beam type sources limited to 20, which should besufficient for all cases.
649
+ - The `angle_phi` parameter of `ModeSpec` is only limited to multiples of `np.pi / 2` if `angle_rotation` is set to `True`, as other values would currently not work correctly.
650
+ - The `ramp_up_iters` parameter of the `ChargeSolver` was changed back to 1 for efficiency. It can be increased in cases with e.g. high doping when convergence is more difficult.
651
+
652
+ ## [2.8.1] - 2025-03-20
653
+
654
+ ### Added
655
+ - New `LobeMeasurer` tool in the `microwave` plugin that locates lobes in antenna patterns and calculates lobe measures like half-power beamwidth and sidelobe level.
656
+ - Validation step that raises a `ValueError` when no frequency-domain monitors are present, preventing invalid adjoint runs.
657
+ - Metal surface roughness models: modified Hammerstad, Huray Snowball, and Cannonball-Huray.
658
+ - Support for Fermi-Dirac statistics in Charge solver. This option can be activated when defining the analysis type `IsothermalSteadyChargeDCAnalysis` with `fermi_dirac=True`. This option will provide more accurate results in simulations where very high doping may lead the pseudo-Fermi energy levels to approach either the conduction or the valence energy levels.
659
+
660
+ ### Changed
661
+
662
+ - Dependencies for the `design` plugin can now be installed via `pip install tidy3d[design]`.
663
+
664
+ ### Fixed
665
+ - Bug in `LayerRefinementSpec` that refines grids outside the layer region when one in-plane dimension is of size infinity.
666
+ - Querying tasks was sometimes erroring unexpectedly.
667
+ - Fixed automatic creation of missing output directories.
668
+ - Bug in handling of tuple-type gradients that could lead to empty tuples or failing gradient calculations when differentiating w.r.t. (for instance) `td.Box.center`.
669
+ - Bug causing incorrect field projection results when multiple projection monitors with numerous sampling points were used.
670
+ - Improved accuracy for normal E-field components in mode solver at microwave frequencies.
671
+ - Deleting tasks using `web.delete(task_id)` would error when deleting tasks in the tidy3d root folder and others would not get completely removed in the Web GUI.
672
+
673
+ ## [2.8.0] - 2025-03-04
674
+
675
+ ### Added
676
+
677
+ - Autograd support for polyslab transformations.
678
+ - Support for differentiation with respect to `ComplexPolySlab.vertices`.
679
+ - Introduce RF material library. Users can now import `rf_material_library` from `tidy3d.plugins.microwave`.
680
+ - Users can specify the background medium for a structure in automatic differentiation by supplying `Structure.background_permittivity`.
681
+ - `DirectivityMonitor` to compute antenna directivity and associated `DirectivityData` data container.
682
+ - Ability to directly create `DirectivityData` from an `xarrray.Dataset` containing electromagnetic fields, where the flux is calculated by integrating the fields over the surface of a sphere.
683
+ - `DirectivityData` includes parameters of interest like radiation intensity and gain. In addition, antenna parameters can be decomposed into contributions from individual polarization components according to a specified polarization basis, either `linear` or `circular`. The linear polarization basis can be optionally rotated by `tilt_angle` from the theta-axis.
684
+ - Added `plot_length_units` to `Simulation` and `Scene` to allow for specifying units, which improves axis labels and scaling when plotting.
685
+ - Added the helper function `compute_power_delivered_by_port` to `TerminalComponentModeler` which computes power delivered to a microwave network from a port.
686
+ - Added the account function `account` to check credit balance and daily free simulation balance.
687
+ - Added `WavePort` to the `TerminalComponentModeler` which is the suggested port type for exciting transmission lines.
688
+ - Added plotting functionality to voltage and current path integrals in the `microwave` plugin.
689
+ - Added convenience functions `from_terminal_positions` and `from_circular_path` to simplify setup of `VoltageIntegralAxisAligned` and `CustomCurrentIntegral2D`, respectively.
690
+ `ComponentModeler.batch_data` convenience property to access the `BatchData` corresponding to the component modeler run.
691
+ - Added optimization methods to the Design plugin. The plugin has been expanded to include Bayesian optimization, genetic algorithms and particle swarm optimization. Explanations of these methods are available in new and updated notebooks.
692
+ - Added new support functions for the Design plugin: automated batching of `Simulation` objects, and summary functions with `DesignSpace.estimate_cost` and `DesignSpace.summarize`.
693
+ - Added validation and repair methods for `TriangleMesh` with inward-facing normals.
694
+ - Added `from_admittance_coeffs` to `PoleResidue`, which allows for directly constructing a `PoleResidue` medium from an admittance function in the Laplace domain.
695
+ - Added material type `LossyMetalMedium` that has high DC-conductivity. Its boundaries can be modeled by a surface impedance boundary condition (SIBC). This is treated as a subpixel method, which can be switched by setting `SubpixelSpec(lossy_metal=method)` where `method` can be `Staircasing()`, `VolumetricAveraging()`, or `SurfaceImpedance()`.
696
+ - Added mode solver option `precision='auto'` to automatically select single or double precision for optimizing performance and accuracy.
697
+ - Added `LinearLumpedElement` as a new supported `LumpedElement` type. This enhancement allows for the modeling of two-terminal passive networks, which can include any configuration of resistors, inductors, and capacitors, within the `Simulation`. Simple RLC networks are described using `RLCNetwork`, while more complex networks can be represented by their admittance transfer function through `AdmittanceNetwork`.
698
+ - Option for the `ModeSolver` and `ModeSolverMonitor` to store only a subset of field components.
699
+ - Added an option to simulate plane wave propagation at fixed angles by setting parameter `angular_spec=FixedAngleSpec()` when defining a `PlaneWave` source.
700
+ - The universal `tidy3d.web` can now also be used to handle `ModeSolver` simulations.
701
+ - Support for differentiation with respect to `PolySlab.slab_bounds`.
702
+ - `VisualizationSpec` that allows `Medium` instances to specify color and transparency plotting attributes that override default ones.
703
+ - `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.
704
+ - Support for quasi-uniform grid specifications via `QuasiUniformGrid` that subclasses from `GridSpec1d`. The grids are almost uniform, but can adjust locally to the edge of structure bounding boxes, and snapping points.
705
+ - New field `min_steps_per_sim_size` in `AutoGrid` that sets minimal number of grid steps per longest edge length of simulation domain.
706
+ - New field `shadow` in `MeshOverrideStructure` that sets grid size in overlapping region according to structure list or minimal grid size.
707
+ - New field `drop_outside_sim` in `MeshOverrideStructure` to specify whether to drop an override structure if it is outside the simulation domain, but it overlaps with the simulation domain when projected to an axis.
708
+ - Scientific notation for frequency range warnings.
709
+ - `MultiphysicsMedium` allows for the modularization definition of physical properties. So in addition to the usual optical properties, one can now add heat properties or electric properties.
710
+ - Added :zap: Charge Solver API. It is now possible to solve the Drift-Diffusion (DD) equations for semiconductors. These simulations can be set up with the new class `HeatChargeSimulation` (which supersedes `HeatSimulation`) in a way similar to that of Heat simulations. The solver has currently limited capabilities (which will be expanded in future releases): steady only, isothermal, Boltzmann statistics (non-degenerate semiconductors only).
711
+ - `SemiconductorMedium` has been added. This is used in combination with `MultiPhysicsMedium` to define the mediums used in the Charge solver. It allows to specify mobility, bandgap narrowing, and generation/recombination models as well as doping. Doping can be defined as constant or through "doping boxes" or, more generally, via `SpatialDataArray` objects for full flexibility.
712
+ - Mobility models for `SemiconductorMedium`: `ConstantMobilityModel`, `CaugheyThomasMobility`
713
+ - Bandgap narrowing models for `SemiconductorMedium`: `SlotboomBandGapNarrowing`
714
+ - Generation-recombination models for `SemiconductorMedium`: `ShockleyReedHallRecombination`, `RadiativeRecombination`, `AugerRecombination`
715
+ - Accessors and length functions implemented for `Result` class in design plugin.
716
+ - New interface for mode solver simulations via `ModeSimulation` class.
717
+ - Advanced option `dist_type` that allows `LinearLumpedElement` to be distributed across grid cells in different ways. For example, restricting the network portion to a single cell and using PEC wires to connect to the desired location of the terminals.
718
+ - New `layer_refinement_specs` field in `GridSpec` that takes a list of `LayerRefinementSpec` for automatic mesh refinement and snapping in layered structures. Structure corners on the cross section perpendicular to layer thickness direction can be automatically identified. Mesh is automatically snapped and refined around those corners.
719
+ - Function `translated_copy` in `ElectromagneticFieldData` to facilitate computing overlaps between field data at different locations.
720
+ - `PlaneWaveBeamProfile`, `GaussianBeamProfile` and `AstigmaticGaussianBeamProfile` components to compute field data associated to such beams based on their corresponding analytical expressions, and compute field overlaps with other data.
721
+ - `num_freqs` argument to the `PlaneWave` source.
722
+ - Support for running multiple adjoint simulations from a single forward simulation in adjoint pipeline depending on monitor configuration.
723
+ - Ability to the `TerminalComponentModeler` that enables the computation of antenna parameters and figures of merit, such as gain, radiation efficiency, and reflection efficiency. When there are multiple ports in the `TerminalComponentModeler`, these antenna parameters may be calculated with user-specified port excitation magnitudes and phases.
724
+ - `RectangularAntennaArrayCalculator` class to compute the array factor and far-field radiation patterns for rectangular phased antenna arrays.
725
+ - Added validation for the monitors frequency range to be consistent with the frequency range defined for the sources.
726
+ - `Simulation.grid_info` property to collect various properties of the grids in the simulation.
727
+ - `angle_rotation` in `ModeSpec` to improve accuracy in some cases when `angle_theta` is defined. This option is disabled by default but it can be tried when very high accuracy is required in `ModeSource` and `ModeMonitor` objects that are placed in slanted waveguides.
728
+
729
+ ### Changed
730
+
731
+ - Priority is given to `snapping_points` in `GridSpec` when close to structure boundaries, which reduces the chance of them being skipped.
732
+ - Gradients for autograd are computed server-side by default. They can be computed locally (requiring more data download) by passing `local_gradient=True` to the `web.run()` and related functions.
733
+ - Passing `path_dir` to `ComponentModeler` methods is deprecated in favor of setting `ComponentModeler.path_dir` and will result in an error if the two don't match.
734
+ - `BatchData` is now a mapping and can be accessed and iterated over like a Python dictionary (`.keys()`, `.values()`, `.items()`).
735
+ - `MethodRandom` and `MethodRandomCustom` have been removed from the Design plugin, and `DesignSpace.run_batch` has been superseded by `.run`.
736
+ - Design plugin has been significantly reworked to improve ease of use and allow for new optimization methods.
737
+ - Behavior of `FieldProjector` now matches the server-side computation, which does not truncate the integration surface when it extends into PML regions.
738
+ - Enabled the user to set the `ModeMonitor.colocate` field and changed to `True` by default (fields were actually already returned colocated even though this field was `False` previously).
739
+ - More robust mode solver at radio frequencies.
740
+ - Disallow very small polygons when subdividing 2D structures.
741
+ - For efficiency, `translated`, `scaled`, and `rotated` `PolySlab`-s now return updated `PolySlab` objects rather than a `Transformed` object, except when the rotation axis is not the same as the slab axis, in which case `Transformed` is still returned.
742
+ - Default choice of frequency in `Simulation.plot_eps` and `Simulation.plot_structures_eps` is now the central frequency of all sources in the simulation. If the central frequencies differ, the permittivity is evaluated at infinite frequency, and a warning is emitted.
743
+ - Mode solver fields are more consistently normalized with respect to grid-dependent sign inversions in high order modes.
744
+ - `MeshOverrideStructure` accepts `Box` as geometry. Other geometry types will raise a warning and convert to bounding box.
745
+ - Double precision mode solver is now supported in EME.
746
+ - `estimate_cost` is now called at the end of every `web.upload` call.
747
+ - Internal refactor of adjoint shape gradients using `GradientSurfaceMesh`.
748
+ - Enhanced progress bar display in batch operations with better formatting, colors, and status tracking.
749
+ - `ModeMonitor` and `ModeSolverMonitor` now use the default `td.ModeSpec()` with `num_modes=1` when `mode_spec` is not provided.
750
+ - Update sidewall angle validator to clarify angle should be specified in radians.
751
+ - Reduced the complex tolerance in the mode solver below which permittivity is considered lossless, in order to correctly compute very low-loss modes.
752
+ -`HeatChargeSimulation` supersedes `HeatSimulation`. Though both of those can be used for Heat simulation interchangeably, the latter has been deprecated and will disappear in the future.
753
+ - `FluidSpec` and `SolidSpec` are now deprecated in favor of `FluidMedium` and `SolidMedium`. Both can still be used interchangeably.
754
+ - Exclude `FluxMonitor` frequencies from adjoint design region gradient monitors since we do not differentiate through `FluxData`
755
+ - Check for empty source list in `wvl_mat_min` in `Simulation` and raise user friendly error if no sources exist in the simulation.
756
+ - The coordinate of snapping points in `GridSpec` can take value `None`, so that mesh can be selectively snapped only along certain dimensions.
757
+ - Grid snapping for `MeshOverrideStructure` with `shadow=False` is only on if the structure refines the mesh.
758
+ - Renamed `SkinDepthFitterParam` --> `SurfaceImpedanceFitterParam` used in `LossyMetalMedium`. `plot` in `LossyMetalMedium` now plots complex-valued surface impedance.
759
+ - Changed plot_3d iframe url to tidy3d production environment.
760
+ - `num_freqs` is now set to 3 by default for the `PlaneWave`, `GaussianBeam`, and `AnalyticGaussianBeam` sources, which makes the injection more accurate in broadband cases.
761
+ - Nonlinear models `KerrNonlinearity` and `TwoPhotonAbsorption` now default to using the physical real fields instead of complex fields.
762
+ - Added warning when a lumped element is not completely within the simulation bounds, since now lumped elements will only have an effect on the `Simulation` when they are completely within the simulation bounds.
763
+ - Allow `ModeData` to be passed to path integral computations in the `microwave` plugin.
764
+ - Default number of grid cells refining lumped elements is changed to 1, and some of the generated `MeshOverrideStructure` are replaced by grid snapping points.
765
+ - Simulation tasks now print a link to the task's folder.
766
+
767
+ ### Fixed
768
+
769
+ - Significant speedup for field projection computations.
770
+ - Fix numerical precision issue in `FieldProjectionCartesianMonitor`.
771
+ - Bug where lumped elements in the `Simulation` were being overwritten by the `TerminalComponentModeler`.
772
+ - Bug in `Simulation.subsection` where lumped elements were not being correctly removed.
773
+ - Bug when adding 2D structures to the `Simulation` that are composed of multiple overlapping polygons.
774
+ - Fields stored in `ModeMonitor` objects were computed colocated to the grid boundaries, but the built-in `ModeMonitor.colocate=False` was resulting in wrong results in some cases, most notably if symmetries are also involved.
775
+ - Small inaccuracy when applying a mode solver `bend_radius` when the simulation grid is not symmetric w.r.t. the mode plane center. Previously, the radius was defined w.r.t. the middle grid coordinate, while now it is correctly applied w.r.t. the plane center.
776
+ - Silence warning in graphene from checking fit quality at large frequencies.
777
+ - `CustomCurrentSource` now correctly validates its current dataset.
778
+ - Better plotting of grids, respecting 2D and 1D simulation edge cases.
779
+ - Bug when `td.inf` are in `attrs` and files saved and loaded to .json twice.
780
+ - Cached property cleared in copying an object with `validate=False`.
781
+ - Error when `JaxSimulation` passed to `ModeSolver.simulation`: now it will be converted to a regular `Simulation`, with a warning.
782
+ - Thread-safe creation of `TIDY3D_DIR`.
783
+ - NumPy 2.1 compatibility issue where `numpy.float64` values passed to xarray interpolation would raise TypeError.
784
+ - Validation error in inverse design plugin when simulation has no sources by adding a source existence check before validating pixel size.
785
+ - System-dependent floating-point precision issue in EMEGrid validation.
786
+ - Fixed magnitude of gradient computation in `CustomMedium` by accounting properly for full volume element when permittivity data is defined over less dimensions than the medium.
787
+ - Fixed key ordering in design plugin when returning `Result` from an optimization method run.
788
+ - Bug in `Batch`, where duplicate folders might be created in the Web UI if the folder did not already exist.
789
+ - Make gauge selection for non-converged modes more robust.
790
+ - Fixed extremely long runtime generated by `RunTimeSpec` in the presence of `LossyMetalMedium`.
791
+ - Fixed `ComponentModeler.to_file` when its batch is empty.
792
+ - In web api, mode solver is patched with remote data so that certain methods like `plot_field` show remote data.
793
+ - Fixed common cross-referencing typo in docstrings.
794
+ - Added `viz_spec` property to `AbstractStructure` to fix error when plotting structures that have no `medium`.
795
+ - Fixed invalid adjoint source creation by disallowing sources made from non-traced fields.
796
+
797
+ ## [2.7.9] - 2025-01-22
798
+
799
+ ### Fixed
800
+ - Potential task name mismatches between forward and adjoint simulations in batch tasks.
801
+ - Magnitude of gradient computation in `CustomMedium` by accounting properly for full volume element when permittivity data is defined over fewer dimensions than the medium.
802
+
803
+ ## [2.7.8] - 2024-11-27
804
+
805
+ ### Changed
806
+ - `BatchData` is now a mapping and can be accessed and iterated over like a Python dictionary (`.keys()`, `.values()`, `.items()`).
807
+
808
+ ### Fixed
809
+ - Gradient inaccuracy when a multi-frequency monitor is used but a single frequency is selected.
810
+ - Revert single cell center approximation for custom medium gradient.
811
+
812
+ ## [2.7.7] - 2024-11-15
813
+
814
+ ### Added
815
+ - Autograd support for local field projections using `FieldProjectionKSpaceMonitor`.
816
+ - Function `components.geometry.utils.flatten_groups` now also flattens transformed groups when requested.
817
+ - Differentiable `smooth_min`, `smooth_max`, and `least_squares` functions in `tidy3d.plugins.autograd`.
818
+ - Differential operators `grad` and `value_and_grad` in `tidy3d.plugins.autograd` that behave similarly to the autograd operators but support auxiliary data via `aux_data=True` as well as differentiation w.r.t. `DataArray`.
819
+ - `@scalar_objective` decorator in `tidy3d.plugins.autograd` that wraps objective functions to ensure they return a scalar value and performs additional checks to ensure compatibility of objective functions with autograd. Used by default in `tidy3d.plugins.autograd.value_and_grad` as well as `tidy3d.plugins.autograd.grad`.
820
+ - Autograd support for simulations without adjoint sources in `run` as well as `run_async`, which will not attempt to run the simulation but instead return zero gradients. This can sometimes occur if the objective function gradient does not depend on some simulations, for example when using `min` or `max` in the objective.
821
+
822
+ ### Changed
823
+ - `CustomMedium` design regions require far less data when performing inverse design by reducing adjoint field monitor size for dims with one pixel.
824
+ - Calling `.values` on `DataArray` no longer raises a `DeprecationWarning` during automatic differentiation.
825
+ - Minimum number of PML layers set to 6.
826
+ - `Structure.background_permittivity : float` for specifying background medium for shape differentiation deprecated in favor of `Structure.background_medium : Medium` for more generality.
827
+ - Validate mode objects so that if a bend radius is defined, it is not smaller than half the size of the modal plane along the radial direction (i.e. the bend center is not inside the mode plane).
828
+
829
+ ### Fixed
830
+ - Regression in local field projection leading to incorrect projection results.
831
+ - Bug when differentiating with respect to `Cylinder.center`.
832
+ - `xarray` 2024.10.0 compatibility for autograd.
833
+ - Some failing examples in the expressions plugin documentation.
834
+ - Inaccuracy in transforming gradients from edge to `PolySlab.vertices`.
835
+ - Bug in `run_async` where an adjoint simulation would sometimes be assigned to the wrong forward simulation.
836
+ - Validate against nonlinearity or modulation in `FullyAnisotropicMedium.from_diagonal`.
837
+ - Add warning to complex-field nonlinearities, which may require more careful physical interpretation.
838
+
839
+ ## [2.7.6] - 2024-10-30
840
+
841
+ ### Added
842
+ - Users can pass the `shading` argument in the `SimulationData.plot_field` to `Xarray.plot` method. When `shading='gouraud'`, the image is interpolated, producing a smoother visualization.
843
+ - Users can manually specify the background medium for a structure to be used for geometry gradient calculations by supplying `Structure.background_permittivity`. This is useful when there are overlapping structures or structures embedded in other mediums.
844
+ - Autograd functions can now be called directly on `DataArray` (e.g., `np.sum(data_array)`) in objective functions.
845
+ - Automatic differentiation support for local field projections with `FieldProjectionAngleMonitor` and `FieldProjectionCartesianMonitor` using `FieldProjector.project_fields(far_field_monitor)`.
846
+
847
+ ### Changed
848
+ - Improved autograd tracer handling in `DataArray`, resulting in significant speedups for differentiation involving large monitors.
849
+ - Triangulation of `PolySlab` polygons now supports polygons with collinear vertices.
850
+ - Frequency and wavelength utilities under `tidy3d.frequencies` and `tidy3d.wavelengths`.
851
+
852
+ ### Fixed
853
+ - Minor gradient direction and normalization fixes for polyslab, field monitors, and diffraction monitors in autograd.
854
+ - Resolved an issue where temporary files for adjoint simulations were not being deleted properly.
855
+ - Resolve several edge cases where autograd boxes were incorrectly converted to numpy arrays.
856
+ - Resolve issue where scalar frequencies in metric definitions (`ModeAmp(f=freq)` instead of `ModeAmp(f=[freq])`) would erroneously fail validation.
857
+
858
+ ## [2.7.5] - 2024-10-16
859
+
860
+ ### Added
861
+ - `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))`.
862
+ - Support for arbitrary padding sizes for all padding modes in `tidy3d.plugins.autograd.functions.pad`.
863
+ - `Expression.filter(target_type, target_field)` method for extracting object instances and fields from nested expressions.
864
+ - Additional constraints and validation logic to ensure correct setup of optimization problems in `invdes` plugin.
865
+ - `tidy3d.plugins.pytorch` to wrap autograd functions for interoperability with PyTorch via the `to_torch` wrapper.
866
+
867
+ ### Changed
868
+ - Renamed `Metric.freqs` --> `Metric.f` and made frequency argument optional, in which case all frequencies from the relevant monitor will be extracted. Metrics can still be initialized with both `f` or `freqs`.
869
+
870
+ ### Fixed
871
+ - Some validation fixes for design region.
872
+ - Bug in adjoint source creation that included empty sources for extraneous `FieldMonitor` objects, triggering unnecessary errors.
873
+ - Correct sign in objective function history depending on `Optimizer.maximize`.
874
+ - Fix to batch mode solver run that could create multiple copies of the same folder.
875
+ - Fixed ``ModeSolver.plot`` method when the simulation is not at the origin.
876
+ - Gradient calculation is orders of magnitude faster for large datasets and many structures by applying more efficient handling of field interpolation and passing to structures.
877
+ - Bug with infinite coordinates in `ClipOperation` not working with shapely.
878
+
879
+ ## [2.7.4] - 2024-09-25
880
+
881
+ ### Added
882
+ - New `tidy3d.plugins.expressions` module for constructing and serializing mathematical expressions and simulation metrics like `ModeAmp` and `ModePower`.
883
+ - Support for serializable expressions in the `invdes` plugin (`InverseDesign(metric=ModePower(...))`).
884
+ - Added `InitializationSpec` as the default way to initialize design region parameters in the `invdes` plugin (`DesignRegion(initialization_spec=RandomInitializationSpec(...))`).
885
+ - Callback support in `invdes.Optimizer` and support for running the optimizer for a fixed number of steps via the `num_steps` argument in `Optimizer.continue_run()`.
886
+ - Convenience method `Structure.from_permittivity_array(geometry, eps_data)`, which creates structure containing `CustomMedium` with `eps_data` array sampled within `geometry.bounds`.
887
+
888
+ ### Changed
889
+ - All filter functions in `plugins/autograd` now accept either an absolute size in pixels or a `radius` and `dl` argument.
890
+ - Reverted fix for TFSF close to simulation boundaries that was introduced in 2.7.3 as it could cause different results in some cases with nonuniform mesh along the propagation direction.
891
+
892
+ ### Fixed
893
+ - Ensure `path` argument in `run()` function is respected when running under autograd or the adjoint plugin.
894
+ - Bug in `Simulation.subsection` (used in the mode solver) when nonlinear materials rely on information about sources outside of the region.
895
+
896
+ ## [2.7.3] - 2024-09-12
897
+
898
+ ### Added
899
+ - Added value_and_grad function to the autograd plugin, importable via `from tidy3d.plugins.autograd import value_and_grad`. Supports differentiating functions with auxiliary data (`value_and_grad(f, has_aux=True)`).
900
+ - `Simulation.num_computational_grid_points` property to examine the number of grid cells that compose the computational domain corresponding to the simulation. This can differ from `Simulation.num_cells` based on boundary conditions and symmetries.
901
+ - Support for `dilation` argument in `JaxPolySlab`.
902
+ - Support for autograd differentiation with respect to `Cylinder.radius` and `Cylinder.center` (for elements not along axis dimension).
903
+ - `Cylinder.to_polyslab(num_pts_circumference, **kwargs)` to convert a cylinder into a discretized version represented by a `PolySlab`.
904
+ - `tidy3d.plugins.invdes.Optimizer` now accepts an optional optimization direction via the `maximize` argument (defaults to `maximize=True`).
905
+
906
+ ### Changed
907
+ - `PolySlab` now raises error when differentiating and dilation causes damage to the polygon.
908
+ - Validator `boundaries_for_zero_dims` to raise error when Bloch boundaries are used along 0-sized dims.
909
+ - `FieldProjectionKSpaceMonitor` support for 2D simulations with `far_field_approx = True`.
910
+
911
+ ### Fixed
912
+ - `DataArray` interpolation failure due to incorrect ordering of coordinates when interpolating with autograd tracers.
913
+ - Error in `CustomSourceTime` when evaluating at a list of times entirely outside of the range of the envelope definition times.
914
+ - Improved passivity enforcement near high-Q poles in `FastDispersionFitter`. Failed passivity enforcement could lead to simulation divergences.
915
+ - More helpful error and suggestion if users try to differentiate w.r.t. unsupported `FluxMonitor` output.
916
+ - Removed positive warnings in Simulation validators for Bloch boundary conditions.
917
+ - Improve accuracy in `Box` shifting boundary gradients.
918
+ - Improve accuracy in `FieldData` operations involving H fields (like `.flux`).
919
+ - Better error and warning handling in autograd pipeline.
920
+ - Added the option to specify the `num_freqs` argument and `kwargs` to the `.to_source` method for both `ModeSolver` and `ComponentModeler`.
921
+ - Fixes to TFSF source in some 2D simulations, and in some cases when the injection plane is close to the simulation domain boundaries.
922
+
923
+ ## [2.7.2] - 2024-08-07
924
+
925
+ ### Added
926
+ - Mode solver plugin now supports 'EMESimulation'.
927
+ - `TriangleMesh` class: automatic removal of zero-area faces, and functions `fill_holes` and `fix_winding` to attempt mesh repair.
928
+ - Added progress bar for EME simulations.
929
+ - Support for grid specifications from grid cell boundary coordinates via `CustomGridBoundaries` that subclasses from `GridSpec1d`.
930
+ - More convenient mesh importing from another simulation through `grid_spec = GridSpec.from_grid(sim.grid)`.
931
+ - `autograd` gradient calculations can be performed on the server by passing `local_gradient = False` into `web.run()` or `web.run_async()`.
932
+ - Automatic differentiation with `autograd` supports multiple frequencies through single, broadband adjoint simulation when the objective function can be formulated as depending on a single dataset in the output `SimulationData` with frequency dependence only.
933
+ - Convenience method `EMESimulation.subsection` to create a new EME simulation based on a subregion of an existing one.
934
+ - Added `flux` and `poynting` properties to `FieldProjectionCartesianData`.
935
+
936
+ ### Changed
937
+ - Mode solver now always operates on a reduced simulation copy.
938
+ - Moved `EMESimulation` size limit validators to preupload.
939
+ - Error if field projection monitors found in 2D simulations, except `FieldProjectionAngleMonitor` or `FieldProjectionCartesianMonitor` with `far_field_approx = True`. Support for other monitors and for exact field projection will be coming in a subsequent Tidy3D version.
940
+
941
+ ### Fixed
942
+ - Error when loading a previously run `Batch` or `ComponentModeler` containing custom data.
943
+ - Error when plotting mode plane PML and the simulation has symmetry.
944
+ - Validators using `TriangleMesh.intersections_plane` will fall back on bounding box in case the method fails for a non-watertight mesh.
945
+ - Bug when running the same `ModeSolver` first locally then remotely, or vice versa, in which case the cached data from the first run is always returned.
946
+ - Gradient monitors for `PolySlab` only store fields at the center location along axis, reducing data usage.
947
+ - Validate the forward simulation on the client side even when using `local_gradient=False` for server-side gradient processing.
948
+ - Gradient inaccuracies in `PolySlab.vertices`, `Medium.conductivity`, and `DiffractionData` s-polarization.
949
+ - Adjoint field monitors no longer store H fields, which aren't needed for gradient calculation.
950
+ - `MeshOverrideStructures` in a `Simulation.GridSpec` are properly handled to remove any derivative tracers.
951
+
952
+ ## [2.7.1] - 2024-07-10
953
+
954
+ ### Added
955
+ - Support for differentiation with respect to `GeometryGroup.geometries` elements.
956
+ - Users can now export `SimulationData` to MATLAB `.mat` files with the `to_mat_file` method.
957
+ - `ModeSolver` methods to plot the mode plane simulation components, including `.plot()`, `.plot_eps()`, `.plot_structures_eps()`, `.plot_grid()`, and `.plot_pml()`.
958
+ - Support for differentiation with respect to monitor attributes that require interpolation, such as flux and intensity.
959
+ - Support for automatic differentiation with respect to `.eps_inf` and `.poles` contained in dispersive mediums `td.PoleResidue` and `td.CustomPoleResidue`.
960
+ - Support for `FieldProjectionAngleMonitor` for 2D simulations with `far_field_approx = True`.
961
+
962
+ ### Fixed
963
+ - Bug where boundary layers would be plotted too small in 2D simulations.
964
+ - Bug when plotting transformed geometries.
965
+ - Bug when snapping `CoaxialLumpedPort` to grid cell boundaries.
966
+ - Errors in `PolySlab` when using autograd differentiation with non-zero `sidewall_angle` and `dilation`.
967
+ - Error in `EMESimulationData.smatrix_in_basis` when using older versions of xarray.
968
+ - Gradients for `Box` objects when simulation size is < 3D.
969
+
970
+ ## [2.7.0] - 2024-06-17
971
+
972
+ ### Added
973
+ - `HeatSimulation` is now under the more generic class `HeatChargeSimulation`. This new class sallows for imulations of both HEAT and electric CONDUCTION types. One-way coupling between these is possible in which the CONDUCTION simulation is used to compute Joule heating which is subsequently used as a source in the HEAT simulation.
974
+ - EME solver through `EMESimulation` class.
975
+ - 2D heat simulations are now fully supported.
976
+ - `tidy3d.plugins.adjoint.web.run_local` used in place of `run` will skip validators that restrict the size or number of `input_structures`.
977
+ - Introduces the `microwave` plugin which includes `ImpedanceCalculator` for computing the characteristic impedance of transmission lines.
978
+ - `Simulation` now accepts `LumpedElementType`, which currently only supports the `LumpedResistor` type. `LumpedPort` together with `LumpedResistor` make up the new `TerminalComponentModeler` in the `smatrix` plugin.
979
+ - Uniaxial medium Lithium Niobate to material library.
980
+ - Properties `num_time_steps_adjoint` and `tmesh_adjoint` to `JaxSimulation` to estimate adjoint run time.
981
+ - Ability to add `path` to `updated_copy()` method to recursively update sub-components of a tidy3d model. For example `sim2 = sim.updated_copy(size=new_size, path="structures/0/geometry")` creates a recursively updated copy of `sim` where `sim.structures[0].geometry` is updated with `size=new_size`.
982
+ - Python 3.12 support. Python 3.8 deprecation. Updated dependencies.
983
+ - Tidy3D objects may store arbitrary metadata in an `.attrs` dictionary.
984
+ - `JaxSimulation` now supports the following GDS export methods: `to_gds()`, `to_gds_file()`, `to_gdspy()`, and `to_gdstk()`.
985
+ - `RunTimeSpec` accepted by `Simulation.run_time` to adaptively set the run time based on Q-factor, propagation length, and other factors.
986
+ - `JaxDataArray` now supports selection by nearest value via `JaxDataArray.sel(..., method="nearest")`.
987
+ - Convenience method `constant_loss_tangent_model` in `FastDispersionFitter` to fit constant loss tangent material model.
988
+ - Classmethods in `DispersionFitter` to load complex-valued permittivity or loss tangent data.
989
+ - Pre-upload validator to check that mode sources overlap with more than 2 grid cells.
990
+ - Support `2DMedium` for `Transformed`/`GeometryGroup`/`ClipOperation` geometries.
991
+ - `num_proc` argument to `tidy3d.plugins.adjoint.web.run_local` to control the number of processes used on the local machine for gradient processing.
992
+ - Support for complex and self-intersecting polyslabs in adjoint module via `JaxComplexPolySlab`.
993
+ - Support for `.gz` files in `Simulation` version updater.
994
+ - Warning if a nonuniform custom medium is intersecting `PlaneWave`, `GaussianBeam`, `AstigmaticGaussianBeam`, `FieldProjectionCartesianMonitor`, `FieldProjectionAngleMonitor`, `FieldProjectionKSpaceMonitor`, and `DiffractionMonitor`.
995
+ - Added a `CoaxialLumpedPort` and `CoaxialLumpedResistor` for coaxial type transmission lines and excitations.
996
+ - Automatic differentiation supported natively in Tidy3D components, and through the `web.run()` and `web.run_async()` functions through `autograd`.
997
+ - A batch of `ModeSolver` objects can be run concurrently using `tidy3d.plugins.mode.web.run_batch()`
998
+ - `RectangularWaveguide.plot_field` optionally draws geometry edges over fields.
999
+ - `RectangularWaveguide` supports layered cladding above and below core.
1000
+ - `SubpixelSpec` accepted by `Simulation.subpixel` to select subpixel averaging methods separately for dielectric, metal, and PEC materials. Specifically, added support for conformal mesh methods near PEC structures that can be specified through the field `pec` in the `SubpixelSpec` class. Note: previously, `subpixel=False` was implementing staircasing for every material except PEC. Now, `subpixel=False` implements direct staircasing for all materials. For PEC, the behavior of `subpixel=False` in Tidy3D < 2.7 is now achieved through `subpixel=SubpixelSpec(pec=HeuristicPECStaircasing())`, while `subpixel=True` in Tidy3D < 2.7 is now achieved through `subpixel=SubpixelSpec(pec=Staircasing())`. The default is `subpixel=SubpixelSpec(pec=PECConformal())` for more accurate PEC modelling.
1001
+ - Lossless `Green2008` variant for crystalline silicon added to material library.
1002
+ - `GridSpec` supports `snapping_points` that enforce grid boundaries to pass through them.
1003
+ - Support for unstructured datasets (`TriangularGridDataset` and `TetrahedralGridDataset`) in custom medium classes.
1004
+ - Support for `Transformed`/`GeometryGroup`/`ClipOperation` geometries in heat solver.
1005
+ - Parameter `relative_min_dl` in `UniformUnstructuredGrid` and `DistanceUnstructuredGrid` to control minimal mesh size.
1006
+ - Improved validation for `HeatSimulation`.
1007
+ - Functions to clean unstructured datasets from degenerate cells and unused points.
1008
+
1009
+ ### Changed
1010
+ - IMPORTANT NOTE: differentiable fields in the `adjoint` plugin (`JaxBox.size`, `JaxBox.center`, `JaxPolySlab.vertices`) no longer store the derivative information after the object is initialized. For example, if using JaxPolySlab.vertices directly in an objective function, the vertices will have no effect on the gradient. Instead, this information is now stored in a field of the same name with `_jax` suffix, eg. `JaxPolySlab.vertices_jax`. For some applications, such as evaluating penalty values, please change to `radius_penalty.evaluate(polyslab.vertices_jax)` or use the vertices as generated by your parameterization functions (`make_vertices(params)`).
1011
+ - `run_time` of the adjoint simulation is set more robustly based on the adjoint sources and the forward simulation `run_time` as `sim_fwd.run_time + c / fwdith_adj` where `c=10`.
1012
+ - `FieldTimeMonitor` restriction to record at a maximum of 5000 time steps if the monitor is not zero-dimensional, to avoid creating unnecessarily large amounts of data.
1013
+ - Bumped `trimesh` version to `>=4,<4.2`.
1014
+ - Make directories in path passed to `.to_gds_file()` methods, if they don't exist.
1015
+ - Changed sign of mode solver PML conductivity to match the `exp(-1j * omega * t)` convention used everywhere else. Previously, loss due to PML was coming out as negative `k_eff` of the mode, while now it comes out as positive `k_eff`, in line with material loss.
1016
+ - Augmented the PML mode solver profile to the form `s(x) = kappa(x) + 1j * sigma(x) / (omega * EPSILON_0)`. Previously, `kappa` was not used. The parameters are currently set to `kappa_min = 1`, `kappa_max = 3`, `sigma_max = 2`. These are not yet exposed to the user.
1017
+ - Also scaling `sigma_max` by the average relative impedance in the mode solver PML region.
1018
+ - `tidy3d convert` from `.lsf` files to tidy3d scripts has moved to another repository at `https://github.com/hirako22/Lumerical-to-Tidy3D-Converter`.
1019
+ - Relax validation of smallest triangle area in `TriangleMesh`.
1020
+ - Default variant for silicon dioxide in material library switched from `Horiba` to `Palik_Lossless`.
1021
+ - Sources and monitors which are exactly at the simulation domain boundaries will now error. They can still be placed very close to the boundaries, but need to be on the inside of the region.
1022
+ - Relaxed `dt` stability criterion for 1D and 2D simulations.
1023
+ - Switched order of angle and bend transformations in mode solver when both are present.
1024
+
1025
+ ### Fixed
1026
+ - Bug in PolySlab intersection if slab bounds are `inf` on one side.
1027
+ - Better error message when trying to transform a geometry with infinite bounds.
1028
+ - `JaxSimulation.epsilon` properly handles `input_structures`.
1029
+ - `FieldData.flux` in adjoint plugin properly returns `JaxDataArray` containing frequency coordinate `f` instead of summing over values.
1030
+ - Proper error message when trying to compute Poynting vector for adjoint field data.
1031
+ - Bug in plotting and computing tilted plane intersections of transformed 0 thickness geometries.
1032
+ - `Simulation.to_gdspy()` and `Simulation.to_gdstk()` now place polygons in GDS layer `(0, 0)` when no `gds_layer_dtype_map` is provided, instead of erroring.
1033
+ - `task_id` now properly stored in `JaxSimulationData`.
1034
+ - Bug in `FastDispersionFitter` when poles move close to input frequencies.
1035
+ - Bug in plotting polarization vector of angled sources.
1036
+ - Bug in `SpatialDataArray.reflect()` that was causing errors for older versions of `xarray`.
1037
+ - `ModeSolver.plot_field` correctly returning the plot axes.
1038
+ - Avoid error if non-positive refractive index used for integration resolution in adjoint.
1039
+ - Make `Batch.monitor` robust if the run status is not found.
1040
+ - Bugs in slicing unstructured datasets along edges.
1041
+ - Correct behavior of temperature monitors in the presence os symmetry.
1042
+
1043
+ ## [2.6.4] - 2024-04-23
1044
+
1045
+ ### Fixed
1046
+ - Set `importlib-metadata`, `boto3`, `requests`, and `click` version requirements to how they were in Tidy3D v2.5.
1047
+ - Bug in `td.FullyAnisotropicMedium` when added to `adjoint.JaxStructureStaticMedium`.
1048
+ - Bug when extra `**kwargs` passed to `Design.run_batch()`.
1049
+
1050
+ ## [2.6.3] - 2024-04-02
1051
+
1052
+ ### Added
1053
+ - Added new validators in `HeatSimulation`: no structures with dimensions of zero size, no all-Neumann boundary conditions, non-empty simulation domain.
1054
+ - `web.Batch` uses multi-threading for upload and download operations. The total time for many tasks is reduced by an order of magnitude.
1055
+
1056
+ ### Changed
1057
+ - Revert forbidden `"` in component names.
1058
+
1059
+ ## [2.6.2] - 2024-03-21
1060
+
1061
+ ### Changed
1062
+ - Characters `"` and `/` not allowed in component names.
1063
+ - Change error when `JaxPolySlab.sidewall_angle != 0.0` to a warning, enabling optimization with slanted sidewalls if a lower accuracy gradient is acceptable.
1064
+ - Simplified output and logging in `web.Batch` with `verbose=True`.
1065
+
1066
+ ### Fixed
1067
+ - Compute time stepping speed shown `tidy3d.log` using only the number of time steps that was run in the case of early shutoff. Previously, it was using the total number of time steps.
1068
+ - Bug in PolySlab intersection if slab bounds are `inf` on one side.
1069
+ - Divergence in the simultaneous presence of PML, absorber, and symmetry.
1070
+ - Fixed validator for `ModeSpec.bend_radius == 0`, which was not raising an error.
1071
+
1072
+ ## [2.6.1] - 2024-03-07
1073
+
1074
+ ### Added
1075
+ - `tidy3d.plugins.design.Results` store the `BatchData` for batch runs in the `.batch_data` field.
1076
+ - Prompting user to check solver log when loading solver data if warnings were found in the log, or if the simulation diverged or errored.
1077
+
1078
+ ### Changed
1079
+ - Slightly reorganized `web.run` logging when `verbose=True` to make it clearer.
1080
+
1081
+ ### Fixed
1082
+ - Fix to 3D surface integration monitors with some surfaces completely outside of the simulation domain which would sometimes still record fields.
1083
+ - Better error handling if remote `ModeSolver` creation gives response of `None`.
1084
+ - Validates that certain incompatible material types do not have intersecting bounds.
1085
+ - Fixed handling of the `frequency` argument in PEC medium.
1086
+ - Corrected plotting cmap if `val='re'` passed to `SimulationData.plot_field`.
1087
+ - Bug when converting point `FieldMonitor` data to scalar amplitude for adjoint source in later jax versions.
1088
+ - Handle special case when vertices overlap in `JaxPolySlab` to give 0 grad contribution from edge.
1089
+ - Corrected some mistakes in the estimation of the solver data size for each monitor type, which affects the restrictions on the maximum monitor size that can be submitted.
1090
+ - Bug in visualizing a slanted cylinder along certain axes in 2D.
1091
+ - Bug in `ModeSolver.reduced_simulation_copy` that was causing mode profiles to be all `NaN`.
1092
+ - Bug in `Simulation.subsection()` that was causing zero-size dimensions not to be preserved.
1093
+ - Bug in `CustomGrid` that was causing an error when using for zero-size dimensions.
1094
+ - When downloading gzip-ed solver data, automatically create the parent folder of the `to_file` path if it does not exist.
1095
+
1096
+ ## [2.6.0] - 2024-02-21
1097
+
1098
+ ### Added
1099
+ - Automatic subdivision of 2D materials with inhomogeneous substrate/superstrate.
1100
+ - Mode field profiles can be stored directly from a `ModeMonitor` by setting `store_fields_direction`.
1101
+ - Users can toggle https ssl version through `from tidy3d.web.core.environment import Env` and `Env.set_ssl_version(ssl_version: ssl.TLSVersion)`
1102
+ - Free-carrier absorption (FCA) and free-carrier plasma dispersion (FCPD) nonlinearities inside `TwoPhotonAbsorption` class.
1103
+ - `log_path` argument in `set_logging_file`, set to `False` by default.
1104
+ - `ErosionDilationPenalty` to `tidy3d.plugins.adjoint.utils.penalty` to penalize parameter arrays that change under erosion and dilation. This is a simple and effective way to penalize features that violate minimum feature size or radius of curvature fabrication constraints in topology optimization.
1105
+ - `tidy3d.plugins.design` tool to explore user-defined design spaces.
1106
+ - `ModeData.dispersion` and `ModeSolverData.dispersion` are calculated together with the group index.
1107
+ - A utility function `td.medium_from_nk()` that automatically constructs a non-dispersive medium when permittivity>=1, and a single-pole Lorentz medium when permittivity<1.
1108
+ - Integration of the `documentation` alongside the main codebase repository.
1109
+ - Integration of the `tidy3d-notebooks` repository.
1110
+ - `tidy3d develop` CLI and development guide on the main documentation.
1111
+ - Added a convenience method `Simulation.subsection()` to a create a new simulation based on a subregion of another one.
1112
+ - Users can toggle task caching through `from tidy3d.web.core.environment import Env` and `Env.enable_caching(True)` to enable, `Env.enable_caching(False)` to disable, or `Env.enable_caching(None)` to use global setting from web client account page.
1113
+
1114
+ ### Changed
1115
+ - `DataArray.to_hdf5()` accepts both file handles and file paths.
1116
+ - `ModeSolverMonitor` is deprecated. Mode field profiles can be retrieved directly from `ModeMonitor` with `store_fields_direction` set.
1117
+ - The log file for a simulation run has been modified to include more information including warnings collected during execution.
1118
+ - `poetry` based installation. Removal of `setup.py` and `requirements.txt`.
1119
+ - Upgrade to sphinx 6 for the documentation build, and change of theme.
1120
+ - Remote mode solver web api automatically reduces the associated `Simulation` object to the mode solver plane before uploading it to server.
1121
+ - All solver output is now compressed. However, it is automatically unpacked to the same `simulation_data.hdf5` by default when loading simulation data from the server.
1122
+ - Internal refactor of `adjoint` plugin to separate `jax`-traced fields from regular `tidy3d` fields.
1123
+ - Added an optional argument `field` in class method `.from_vtu()` of `TriangularGridDataset` and `TetrahedralGridDataset` for specifying the name of data field to load.
1124
+
1125
+ ### Fixed
1126
+ - Add dispersion information to dataframe output when available from mode solver under the column "dispersion (ps/(nm km))".
1127
+ - Skip adjoint source for diffraction amplitudes of NaN.
1128
+ - Helpful error message if `val` supplied to `SimulationData.plot_field` not supported.
1129
+ - Fixed validator that warns if angled plane wave does not match simulation boundaries, which was not warning for periodic boundaries.
1130
+ - Validates that no nans are present in `DataArray` values in custom components.
1131
+ - Removed nans from Cartesian temperature monitors in thermal simulations by using nearest neighbor interpolation for values outside of heat simulation domain.
1132
+ - Removed spurious warnings realted to reloading simulation containing `PerturbationMedium` with `CustomChargePerturbation`/`CustomHeatPerturbation`.
1133
+
1134
+ ## [2.5.2] - 2024-01-11
1135
+
1136
+ ### Fixed
1137
+ - Internal storage estimation for 3D surface integration monitors now correctly includes only fields on the surfaces, and not the whole volume.
1138
+
1139
+ ## [2.5.1] - 2024-01-08
1140
+
1141
+ ### Added
1142
+ - `ModeData.dispersion` and `ModeSolverData.dispersion` are calculated together with the group index.
1143
+ - String matching feature `contains_str` to `assert_log_level` testing utility.
1144
+ - Warning in automatic grid generation if a structure has a non-zero size along a given direction that is too small compared to a single mesh step.
1145
+ - `assert_log_level` adds string matching with `contains_str` and ensures no higher log level recorded than expected.
1146
+ - `AssertLogLevel` context manager for testing log level and automatically clearing capture.
1147
+ - More robust validation for boundary conditions and symmetry in 1D and 2D simulations.
1148
+
1149
+ ### Changed
1150
+ - `jax` and `jaxlib` versions bumped to `0.4.*`.
1151
+ - Improved and unified warning message for validation failure of dependency fields in validators.
1152
+
1153
+ ### Fixed
1154
+ - Error in automatic grid generation in specific cases with multiple thin structures.
1155
+
1156
+ ## [2.5.0] - 2023-12-13
1157
+
1158
+ ### Added
1159
+ - 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.
1160
+ - 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.
1161
+ - Validator for surface field projection monitors that warns if projecting backwards relative to the monitor's normal direction.
1162
+ - Validator for field projection monitors when far field approximation is enabled but the projection distance is small relative to the near field domain.
1163
+ - Ability to manually specify a medium through which to project fields, when using field projection monitors.
1164
+ - Added support for two-photon absorption via `TwoPhotonAbsorption` class. Added `KerrNonlinearity` that implements Kerr effect without third-harmonic generation.
1165
+ - Can create `PoleResidue` from LO-TO form via `PoleResidue.from_lo_to`.
1166
+ - Added `TriangularGridDataset` and `TehrahedralGridDataset` for storing and manipulating unstructured data.
1167
+ - Support for an anisotropic medium containing PEC components.
1168
+ - `SimulationData.mnt_data_from_file()` method to load only a single monitor data object from a simulation data `.hdf5` file.
1169
+ - `_hash_self` to base model, uses `hashlib` to hash a Tidy3D component the same way every session.
1170
+ - `ComponentModeler.plot_sim_eps()` method to plot the simulation permittivity and ports.
1171
+ - Support for 2D PEC materials.
1172
+ - Ability to downsample recorded near fields to speed up server-side far field projections.
1173
+ - `FieldData.apply_phase(phase)` to multiply field data by a phase.
1174
+ - Optional `phase` argument to `SimulationData.plot_field` that applies a phase to complex-valued fields.
1175
+ - Ability to window near fields for spatial filtering of far fields for both client- and server-side field projections.
1176
+ - Support for multiple frequencies in `output_monitors` in `adjoint` plugin.
1177
+ - GDSII export functions `to_gds_file`, `to_gds`, `to_gdspy`, and `to_gdstk` to `Simulation`, `Structure`, and `Geometry`.
1178
+ - `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.
1179
+ - 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.
1180
+ - `Geometry.intersections_tilted_plane` calculates intersections with any plane, not only axis-aligned ones.
1181
+ - `Transformed` class to support geometry transformations.
1182
+ - Methods `Geometry.translated`, `Geometry.scaled`, and `Geometry.rotated` can be used to create transformed copies of any geometry.
1183
+ - Time zone in webAPI logging output.
1184
+ - 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.
1185
+ - Solver for thermal simulation (see `HeatSimulation` and related classes).
1186
+ - Specification of material thermal properties in medium classes through an optional field `.heat_spec`.
1187
+
1188
+ ### Changed
1189
+ - 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.
1190
+ - 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.
1191
+ - 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`).
1192
+ - 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.
1193
+ - 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.
1194
+ - API for specifying one or more nonlinear models via `NonlinearSpec.models`.
1195
+ - `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.
1196
+ - 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.
1197
+ - Restriction on the maximum memory that a monitor would need internally during the solver run, even if the final monitor data is smaller.
1198
+ - Restriction on the maximum size of mode solver data produced by a `ModeSolver` server call.
1199
+ - Updated versions of `boto3`, `requests`, and `click`.
1200
+ - python 3.7 no longer tested nor supported.
1201
+ - Removed warning that monitors now have `colocate=True` by default.
1202
+ - 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.
1203
+ - Remove warning that monitors now have `colocate=True` by default.
1204
+ - Internal refactor of Web API functionality.
1205
+ - `Geometry.from_gds` doesn't create unnecessary groups of single elements.
1206
+
1207
+ ### Fixed
1208
+ - Fixed energy leakage in TFSF when using complex fields.
1209
+ - Fixed the duplication of log messages in Jupyter when `set_logging_file` is used.
1210
+ - If input to circular filters in adjoint have size smaller than the diameter, instead of erroring, warn user and truncate the filter kernel accordingly.
1211
+ - 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.
1212
+ - Proper equality checking between `Tidy3dBaseModel` instances, which takes `DataArray` values and coords into account and handles `np.ndarray` types.
1213
+ - Correctly set the contour length scale when exporting 2D (or 1D) structures with custom medium to GDSII.
1214
+ - Improved error handling if file can not be downloaded from server.
1215
+ - Fix for detection of file extensions for file names with dots.
1216
+ - Restrict to `matplotlib` >= 3.5, avoiding bug in plotting `CustomMedium`.
1217
+ - Fixes `ComponentModeler` batch file being different in different sessions by use of deterministic hash function for computing batch filename.
1218
+ - Can pass `kwargs` to `ComponentModeler.plot_sim()` to use in `Simulation.plot()`.
1219
+ - Ensure that mode solver fields are returned in single precision if `ModeSolver.ModeSpec.precision == "single"`.
1220
+ - If there are no adjoint sources for a simulation involved in an objective function, make a mock source with zero amplitude and warn user.
1221
+
1222
+ ## [2.4.3] - 2023-10-16
1223
+
1224
+ ### Added
1225
+ - `Geometry.zero_dims` method that uses `Geometry.bounds` and speeds up the validator for zero-sized geometries.
1226
+
1227
+ ### Changed
1228
+ - Limited number of distinct sources to 1000. In cases where a complicated spatial dependence of the source is desired, a ``CustomFieldSource`` or a ``CustomCurrentSource`` can be used instead of multiple distinct sources.
1229
+
1230
+ ### Fixed
1231
+ - Properly handle `.freqs` in `output_monitors` of adjoint plugin.
1232
+ - Simulation updater for `.hdf5` files with custom data.
1233
+ - Fix to solver geometry parsing in some edge cases of slanted polyslab and STL geometries that could lead to an error or divergence.
1234
+ - Fix to errors in some edge cases of a TFSF source setup.
1235
+
1236
+ ## [2.4.2] - 2023-9-28
1237
+
1238
+ ### Added
1239
+ - Warnings for too many frequencies in monitors; too many modes requested in a ``ModeSpec``; too many number of grid points in a mode monitor or mode source.
1240
+
1241
+ ### Changed
1242
+ - Time domain monitors warn about data usage if all defaults used in time sampler specs.
1243
+
1244
+ ### Fixed
1245
+ - Faster sorting of modes in `ModeSolverData.overlap_sort` by avoiding excessive data copying.
1246
+ - Ensure same `Grid` is generated in forward and adjoint simulations by setting `GridSpec.wavelength` manually in adjoint.
1247
+ - Properly handling of `JaxBox` derivatives both for multi-cell and single cell thickness.
1248
+ - Properly handle `JaxSimulation.monitors` with `.freqs` as `np.ndarray` in adjoint plugin.
1249
+ - Properly handle `JaxDataArray.sel()` with single coordinates and symmetry expansion.
1250
+ - Properly handle `JaxDataArray * xr.DataArray` broadcasting.
1251
+ - Stricter validation of `JaxDataArray` coordinates and values shape.
1252
+
1253
+ ## [2.4.1] - 2023-9-20
1254
+
1255
+ ### Added
1256
+ - `ModeSolverData.pol_fraction` and `ModeSolverData.pol_fraction_waveguide` properties to compute polarization fraction of modes using two different definitions.
1257
+ - `ModeSolverData.to_dataframe()` and `ModeSolverData.modes_info` for a convenient summary of various modal properties of the computed modes.
1258
+ - Loss upper bound estimation in `PoleResidue` material model.
1259
+ - Command line tool `tidy3d convert` for conversion from `.lsf` project files into equivalent python scripts implementing the project in Tidy3D. Usage: `tidy3d convert example.lsf tidy3d_script.py`.
1260
+
1261
+ ### Changed
1262
+ - Output task URL before and after simulation run and make URLs blue underline formatting.
1263
+ - Support to load and save compressed HDF5 files (`.hdf5.gz`) directly from `Tidy3dBaseModel`.
1264
+ - Line numbers no longer printed in webapi log output.
1265
+ - Empty list returned if the folder cannot be queried in `web.get_tasks()`.
1266
+
1267
+ ### Fixed
1268
+ - Filtering based on `ModeSpec.filter_pol` now uses the user-exposed `ModeSolverData.pol_fraction` property. This also fixes the previous internal handling which was not taking the nonuniform grid, as well as and the propagation axis direction for modes in angled waveguides. In practice, the results should be similar in most cases.
1269
+ - Bug with truly anisotropic `JaxCustomMedium` in adjoint plugin.
1270
+ - Bug in adjoint plugin when `JaxBox` is less than 1 grid cell thick.
1271
+ - Bug in `adjoint` plugin where `JaxSimulation.structures` did not accept structures containing `td.PolySlab`.
1272
+
1273
+ ## [2.4.0] - 2023-9-11
1274
+
1275
+ ### Added
1276
+ - Configuration option `config.log_suppression` can be used to control the suppression of log messages.
1277
+ - `web.abort()` and `Job.abort()` methods allowing user to abort running tasks without deleting them. If a task is aborted, it cannot be restarted later, a new one needs to be created and submitted.
1278
+ - `FastDispersionFitter` for fast fitting of material dispersion data.
1279
+ - `Simulation.monitors_data_size` property mapping monitor name to its data size in bytes.
1280
+ - Source with arbitrary user-specified time dependence through `CustomSourceTime`.
1281
+ - Interface for specifying material heat and charge perturbation models.
1282
+ Specifically, non-dispersive and dispersive mediums with heat and/or charge perturbation models can be defined through classes `PerturbationMedium` and `PerturbationPoleResidue`,
1283
+ where perturbations to each parameter is specified using class `ParameterPerturbation`.
1284
+ A convenience function `Simulation.perturbed_mediums_copy` is added to class `Simulation` which applies heat and/or charge fields to mediums containing perturbation models.
1285
+ - Added `hlim` and `vlim` kwargs to `Simulation.plot()` and `Simulation.plot_eps()` for setting horizontal and vertical plot limits.
1286
+ - Added support for chi3 nonlinearity via `NonlinearSusceptibility` class.
1287
+ - Spatial downsampling allowed in ``PermittivityMonitor`` through the ``interval_space`` argument.
1288
+ - `ClipOperation` geometry type allows the construction of complex geometries through boolean operations.
1289
+ - Operations on geometry (`+`, `|`, `*`, `&`, `-`, `^`) will create the appropriate `ClipOperation` or `GeometryGroup`.
1290
+ - `Geometry.from_shapely` to extrude shapely primitives into Tidy3D geometry.
1291
+ - `Geometry.from_gds` to extrude GDS cells into geometry groups with support for holes.
1292
+ - `components.geometry.utils.traverse_geometry` used internally to traverse geometry trees.
1293
+ - `components.geometry.utils.flatten_groups` used internally to validate large geometry trees.
1294
+
1295
+ ### Changed
1296
+ - Add `width` and `height` options to `Simulation.plot_3d()`.
1297
+ - `sim_with_source()`, `sim_with_monitor()`, and `sim_with_mode_solver_monitor()` methods allowing the `ModeSolver` to create a copy of its `Simulation` with an added `ModeSource`, `ModeMonitor`, or `ModeSolverMonitor`, respectively.
1298
+ - `nyquist_step` also taking the frequency range of frequency-domain monitors into account.
1299
+ - Added option to allow DC component in `GaussianPulse` spectrum, by setting `remove_dc_component=False` in `GaussianPulse`.
1300
+ - Jax installation from `pip install "tidy3d[jax]"` handled same way on windows as other OS if python >= 3.9.
1301
+ - `colocate` introduced as an argument to `ModeSolver` and a Field in `ModeSolverMonitor`, set to True by default.
1302
+ - `FieldTimeMonitor`-s and `FieldMonitor`-s that have `colocate=True` return fields colocated to the grid boundaries rather than centers. This matches better user expectations for example when the simulation has a symmetry (explicitly defined, or implicit) w.r.t. a given axis. When colocating to centers, fields would be `dl / 2` away from that symmetry plane, and components that are expected to go to zero do not (of course, they still do if interpolated to the symmetry plane). Another convenient use case is that it is easier to place a 2D monitor exactly on a grid boundary in the automatically generated grid, by simply passing an override structure with the monitor geometry.
1303
+ - In these monitors, `colocate` is now set to `True` by default. This is to avoid a lot of potential confusion coming from returning non-colocated fields by default, when colocated fields need to be used when computing quantities that depend on more than one field component, like flux or field intensity.
1304
+ - Field colocation for computations like flux, Poynting, and modal overlap also happen to cell boundaries rather than centers. The effect on final results
1305
+ should be close to imperceptible as verified by a large number of backend tests and our online examples. Any difference can be at most on the scale of
1306
+ the difference that can be observed when slightly modifying the grid resolution.
1307
+ - `GeometryGroup` accepts other `GeometryGroup` instances as group elements.
1308
+ - FDTD and mode solver tasks always upload `hdf5.gz` file instead of `hdf5` or `json`.
1309
+ - `web.download_json()` will download `simulation.hdf5.gz` and unzip it, then load the json from the hdf5 file.
1310
+ - `SimulationTask.get_simulation_hdf5()` will download simulation.hdf5.gz and unzip it to hdf5 file.
1311
+ - The width of Tidy3D logging output is changed to 80 characters.
1312
+ - Upgrades to `pydantic==2.*` with `pydantic.v1` imports.
1313
+ - Uses `ruff` for linting instead of `pylint`.
1314
+ - Added lower bound validator to `freqs` in mode solver.
1315
+ - Added lower bound validator to `group_index_step` in `ModeSpec`.
1316
+ - `ComponentModeler.freqs` now a `FreqArray`, so it can be initialized from numpy, list or tuple.
1317
+
1318
+ ### Fixed
1319
+ - Handles `TIDY3D_ENV` properly when set to `prod`.
1320
+ - Redundant phase compensation for shifted source in smatrix plugin.
1321
+ - Bug in angled mode solver with negative `angle_theta`.
1322
+ - Properly include `JaxSimulation.input_structures` in `JaxSimulationData.plot_field()`.
1323
+ - Numerically stable sigmoid function in radius of curvature constraint.
1324
+ - Spatial monitor downsampling when the monitor is crossing a symmetry plane or Bloch boundary conditions.
1325
+ - Cast `JaxDataArray.__abs__` output to `jnp.array`, reducing conversions needed in objective functions.
1326
+ - Correct color and zorder for line segments when plotting 2D geometries.
1327
+ - Bug in `Simulation.eps_bounds` that was always setting the lower bound to 1.
1328
+ - Extended lower limit of frequency range for `Graphene` to zero.
1329
+ - Improved warnings for `Medium2D`.
1330
+ - Improved mode solver handling of 1D problem to avoid singular matrix issue.
1331
+ - Set `colocate=False` automatically in output `FieldMonitor` objects in adjoint plugin, warning instead of erroring for backwards compatibility.
1332
+ - Validation for `ModeSpec.group_index_step` working incorrectly if the value was set to 1.
1333
+
1334
+ ## [2.3.3] - 2023-07-28
1335
+
1336
+ ### Added
1337
+
1338
+ ### Changed
1339
+
1340
+ ### Fixed
1341
+ - Adjoint plugin import failures after `jax.numpy.DeviceArray` -> `jax.Array` in jax 0.4.14.
1342
+ - Fixed definition of shapely box bounds in Geometry.intersections_2dbox()
1343
+
1344
+ ## [2.3.2] - 2023-7-21
1345
+
1346
+ ### Added
1347
+
1348
+ ### Changed
1349
+ - Surface integration monitor validator changed to error only if *all* integration surfaces are outside of the simulation domain.
1350
+ - Inverse design convenience utilities in `plugins.adjoint.utils` for image filtering (`ConicFilter`), projection (`BinaryProjector`), and radius of curvature penalization (`RadiusPenalty`).
1351
+
1352
+ ### Fixed
1353
+ - Properly handle sign flip in `ModeMonitor` outputs with `direction="-"` in adjoint plugin.
1354
+ - Bug in `CustomMedium.grids`, which was giving incorrect grid boundaries at edges.
1355
+ - Out of date endpoint in `migrate` option of webapi.
1356
+
1357
+ ## [2.3.1] - 2023-7-14
1358
+
1359
+ ### Added
1360
+ - Support for differentiating with respect to `JaxMedium.conductivity`.
1361
+ - Validating that every surface (unless excluded in ``exclude_surfaces``) of a 3D ``SurfaceIntegrationMonitor`` (flux monitor or field projection monitor) is not completely outside the simulation domain.
1362
+
1363
+ ### Changed
1364
+ - Source validation happens before simulation upload and raises an error if no source is present.
1365
+ - Warning instead of error if structure out of simulation bounds.
1366
+ - Internal refactor of `ComponentModeler` to simplify logic.
1367
+ - (Changed effective 2.3.0) Backward-direction mode amplitudes from `ModeMonitors` have a flipped sign compared to previous versions.
1368
+ Previously, the amplitudes were computed directly through the dot product ``amp = (mode, field)``, while, since 2.3.0, we use ``amp = (mode, field) / (mode, mode)`` instead.
1369
+ The modes are already normalized to unit directed flux, such that ``(mode, mode) = 1`` for forward modes, and ``(mode, mode) = -1`` for backward modes
1370
+ (the dot product of a mode with itself is equal to the flux through the mode plane). Therefore, the change in the ``amp`` formula is equivalent to a sign change for
1371
+ backward modes. This makes their interpretation more intuitive, since the amplitude is now ``1`` if the recorded field and a mode match exactly. A ``-1`` amplitude means
1372
+ that the fields match exactly except for a ``pi`` phase shift. This interpretation is also now independent of forward/backward direction.
1373
+
1374
+ ### Fixed
1375
+ - Point-like objects correctly appear as single points using `plt.scatter`.
1376
+ - Cleaner display of `ArrayLike` in docs.
1377
+ - `ArrayLike` validation properly fails with `None` or `nan` contents.
1378
+ - Apply finite grid correction to the fields when calculating the Poynting vector from 2D monitors.
1379
+ - `JaxCustomMedium` properly handles complex-valued permittivity.
1380
+
1381
+ ## [2.3.0] - 2023-6-30
1382
+
1383
+ ### Added
1384
+ - Specification of spatial permittivity distribution of dispersive material using user-supplied data through `CustomPoleResidue`, `CustomSellmeier`, `CustomLorentz`, `CustomDebye`, and `CustomDrude` components.
1385
+ - `CustomAnisotropicMedium` where each component can take user-supplied data to define spatial permittivity distribution of non-dispersive or dispersive material.
1386
+ - `Coords.spatial_interp` to interpolate spatial data avoiding pitfalls of `xarray.interp` in directions where there is a single data point.
1387
+ - All medium types accept `allow_gain` which is `False` by default, but allows the medium to be active if `True`.
1388
+ - Causality validation in `PoleResidue` model.
1389
+ - Group index calculation added to mode monitors and available through `ModeData.n_group`.
1390
+ - Support for `JaxGeometryGroup` in adjoint plugin.
1391
+ - Support for gradients w.r.t. `FieldMonitor` data from `output_monitors` in adjoint plugin.
1392
+ - `estimate_cost()` method for `Job` and `Batch`.
1393
+ - `s3utils.get_s3_sts_token` accepts extra query parameters.
1394
+ - `plugins.mode.web` to control the server-side mode solver.
1395
+ - Support for `JaxDataArray.interp`, allowing differentiable linear interpolation.
1396
+ - Support for `JaxSimulationData.get_intensity()`, allowing intensity distribution to be differentiated in `adjoint` plugin.
1397
+ - Support for `JaxFieldData.flux` to compute differentiable flux value from `FieldData`.
1398
+ - All custom medium types accept `subpixel` which is `False` by default, but applies subpixel averaging of the permittivity on the interfaces of the structure (including exterior boundary and intersection interfaces with other structures) if `True` and simulation's `subpixel` is also `True`.
1399
+
1400
+ ### Changed
1401
+ - Add `Medium2D` to full simulation in tests.
1402
+ - `DispersionFitter` and `StableDispersionFitter` unified in a single `DispersionFitter` interface.
1403
+ - `StableDispersionFitter` deprecated, with stable fitter now being run instead through `plugins.dispersion.web.run(DispersionFitter)`.
1404
+ - Removed validator from `CustomFieldSource` that ensured data spanned the source geometry. Now the current values are extrapolated outside of the supplied data ranges.
1405
+ - `CustomMedium` now take fields `permittivity` and `conductivity`. `eps_dataset` will be deprecated in v3.0.
1406
+ - Moved `CustomMedium._interp` to `Coords.spatial_interp` to be used by custom current sources.
1407
+ - Adjoint simulations no longer contain unused gradient permittivity monitors, reducing processing time.
1408
+ - `Batch` prints total estimated cost if `verbose=True`.
1409
+ - Unified config and authentication.
1410
+ - Remove restriction that `JaxCustomMedium` must not be a 3D pixelated array.
1411
+ - Limit total number of input structures in adjoint plugin for performance reasons.
1412
+ - `ModeSolver` and `ModeSolverMonitor` now contain `direction` field that explicitly specifies the mode propagation direction (default is "+").
1413
+ - Added an `interpolate` option to `CustomCurrentSource` and `UniformCurrentSource`, which uses linear interpolation to emulate exact placement of the source along directions where the source has zero size, rather than snapping to the nearest grid location, similar to the behavior for `PointDipole`. Default: `True`.
1414
+
1415
+ ### Fixed
1416
+ - Plotting 2D materials in `SimulationData.plot_field` and other circumstances.
1417
+ - More segments in plotting of large cylinder and sphere cross-sections.
1418
+ - Proper handling of nested list of custom data components in IO, needed for custom dispersive medium coefficients.
1419
+ - `ElectromagneticFieldData.outer_dot` now works correctly for `FieldData`, not only `ModeSolverData`.
1420
+ - Fix to the setting of the mode solver PML parameters that produces better results for modes which do not decay in the PML, and fewer spurious modes.
1421
+ - Fix to single-precision mode solver to do the type conversion on the final matrix only rather than at intermediate steps, which improves accuracy in some cases.
1422
+ - Improvements to graphene medium fit.
1423
+ - Schema titles in `ArrayLike` fields.
1424
+ - Fix `web.estimate_cost` error/time-out for large simulations, it should now always work but may take some time for complex cases.
1425
+ - A more accurate injection and decomposition of backward propagating waveguide modes in lossy and gyrotropic systems.
1426
+
1427
+ ## [2.2.3] - 2023-6-15
1428
+
1429
+ ### Added
1430
+
1431
+ ### Changed
1432
+
1433
+ ### Fixed
1434
+ - Callback URL: "call_back_url" replaced with proper "callbackUrl".
1435
+
1436
+ ## [2.2.2] - 2023-5-25
1437
+
1438
+ ### Added
1439
+
1440
+ ### Changed
1441
+ - Tidy3D component `.to_hdf5()` and `.from_hdf5()` now accept custom encoder and decoder functions for more flexible IO.
1442
+
1443
+ ### Fixed
1444
+ - `JaxDataArrays` are properly handled when reading and writing to file, dramatically reducing the VJP simulation download size in server-side adjoint.
1445
+ - A bug in a total-field scattered-field (TFSF) validator which was causing unnecessary errors when a TFSF surface intersected with 2D materials.
1446
+ - CI tests working with binary installation of gdstk instead of compiling from source.
1447
+
1448
+ ## [2.2.1] - 2023-5-23
1449
+
1450
+ ### Added
1451
+
1452
+ ### Changed
1453
+
1454
+ ### Fixed
1455
+ - Downgrade `typing_extensions` to `<=4.5.0` to avoid bug with pydantic for python <= 3.9.
1456
+ - Bug in `ModeSolver` which was causing a preconditioner to be applied even when it is not needed.
1457
+
1458
+ ## [2.2.0] - 2023-5-22
1459
+
1460
+ ### Added
1461
+ - Fully anisotropic medium class (`FullyAnisotropicMedium`) that allows to simulate materials with permittivity and conductivity tensors oriented arbitrary with respect to simulation grid.
1462
+ - Adjoint processing is done server side by default, to avoid unnecessary downloading of data.
1463
+ - `JaxPolySlab` in `adjoint` plugin, which can track derivatives through its `.vertices`.
1464
+ - `run_local` and `run_async_local` options in `tidy3d.plugins.adjoint.web` to provide way to run adjoint processing locally.
1465
+ - `web.test()` to simply test if the authentication is configured correctly and raise exception otherwise.
1466
+ - `SimulationTask.get_running_tasks()` to get a list of running tasks from the server.
1467
+ - Retry for set number of seconds in web functions if internet connection errors.
1468
+ - Argument `scale` to `ModeSolver.plot_field` to control plot scaling.
1469
+ - `Simulation.plot_3d()` method to make 3D rendering of simulation.
1470
+
1471
+ ### Changed
1472
+ - Perfect electric conductors (PECs) are now modeled as high-conductivity media in both the frontend and backend mode solvers, and their presence triggers the use of a preconditioner to improve numerical stability and robustness. Consequently, the mode solver provides more accurate eigenvectors and field distributions when PEC structures are present.
1473
+ - Include source amplitude in `amp_time`.
1474
+ - Increased the maximum allowed estimated simulation data storage to 50GB. Individual monitors with projected data larger than 10GB will trigger a warning.
1475
+ - `PolySlab.inside` now uses `matplotlib.path.contains_points` for better performance.
1476
+ - `JaxCustomMedium` accepts a maximum of 250,000 grid cells to avoid slow server-side processing.
1477
+ - `PolySlab.inside` now uses `matplotlib.path.contains_points`.
1478
+ - `JaxCustomMedium` accepts a maximum of 250,000 grid cells.
1479
+ - Logging messages are suppressed and summarized to avoid repetitions.
1480
+
1481
+ ### Fixed
1482
+ - Log messages provide the correct caller origin (file name and line number).
1483
+ - `Medium2D` is removed from the list of allowed options for `Simulation.medium` in the documentation.
1484
+ - Symmetry works properly in `adjoint` plugin.
1485
+
1486
+ ## [2.1.1] - 2023-4-25
1487
+
1488
+ ### Added
1489
+
1490
+ ### Changed
1491
+ - `adjoint` plugin now filters out adjoint sources that are below a threshold in amplitude relative to the maximum amplitude of the monitor data, reducing unnecessary processing by eliminating sources that won't contribute to the gradient.
1492
+ - `web.run_async` uses `Batch` under the hood instead of `asyncio`.
1493
+
1494
+ ### Fixed
1495
+ - More helpful error messages from HTTP responses.
1496
+ - Bug in `_validate_no_structures_pml`, which was using wrong pml thicknesses.
1497
+ - Broken `callback_url` in webapi.
1498
+
1499
+ ## [2.1.0] - 2023-4-18
1500
+
1501
+ ### Added
1502
+ - Group index calculation added to ModeSpec.
1503
+ - Waveguide plugin for quickly calculating modes in dielectric waveguides.
1504
+ - `ElectromagneticFieldData.dot_intep` to calculate mode overlap integrals between modes with different discretizations.
1505
+ - `ElectromagneticFieldData.mode_area` to calculate the effective mode area.
1506
+ - `ElectromagneticFieldData.intensity` returns the sum of the squared components of the electric field.
1507
+ - Group index calculation added to ModeSolver.
1508
+ - Web interface prints clickable link to task on Tidy3D web interface.
1509
+ - Allow configuration through API key in python via `tidy3d.web.configure(apikey: str)` function.
1510
+
1511
+ ### Changed
1512
+ - `adjoint` plugin now filters out adjoint sources that are below a threshold in amplitude relative to the maximum amplitude of the monitor data, reducing unnecessary processing by eliminating sources that won't contribute to the gradient.
1513
+ - `ArrayLike` fields use `np.ndarray` internally instead of `TidyNDArray` subclass. Tidy3D objects are no longer hashable, instead, hash the `obj.json()` string.
1514
+
1515
+ ### Fixed
1516
+ - `web.Batch` monitoring is more robust, will not raise exception if a job errors or diverges. In this case, the progressbar text will render in red.
1517
+ - More robust handling for 2D structure validator.
1518
+
1519
+ ## [2.0.3] - 2023-4-11
1520
+
1521
+ ### Added
1522
+
1523
+ ### Changed
1524
+ - Times logged in `tidy3d.log` during solver run now split into `Solver time` (time-stepping only), `Field projection time` (after the time stepping if any field projection monitors present) and `Data write time` (when the raw data is packaged to disk). Previously, `Solver time` used to include the `Field projection time` and not `Data write time`.
1525
+
1526
+ ### Fixed
1527
+ - Port name duplication in smatrix plugin for multimode ports.
1528
+ - Web functions create the leading directories for the supplied filename if they don't exist.
1529
+ - Some docstring examples that were giving warnings.
1530
+ - `web.monitor()` only prints message when condition met.
1531
+ - PML boxes have non-zero extent along any dimensions where the simulation has 0 size, to fix plotting issues for 2D simulations.
1532
+ - Improved PEC handling around curved interfaces and structure intersections. Old handling accessible with `subpixel=False` (previously, it was independent of the subpixel setting).
1533
+ - Fix to field projections sometimes containing `NaN` values.
1534
+
1535
+ ## [2.0.2] - 2023-4-3
1536
+
1537
+ ### Added
1538
+
1539
+ ### Changed
1540
+
1541
+ ### Fixed
1542
+ - Bug in web interface when `Simulation` upload was not putting quotes around `td.inf` values.
1543
+
1544
+ ## [2.0.1] - 2023-3-31
1545
+
1546
+ ### Added
1547
+
1548
+ ### Changed
1549
+ - Default Tidy3D logging level is now set to `'WARNING'`.
1550
+ - Tidy3D is no longer pip installable from `tidy3d-beta` on PyPI.
1551
+ - Plugins must be imported from their respective directories, eg. `from tidy3d.plugins.mode import ModeSolver`.
1552
+ - Removed `Geometry.intersections()`.
1553
+ - Log level only accepts upper case strings.
1554
+ - `PolySlab` `reference_plane` is `"middle"` by default.
1555
+ - Boundary conditions are now `PML()` by default.
1556
+ - `PointDipole` sources now have a continuous dependence on the source position, as opposed to snapping to Yee grid locations. Behavior is controlled by the `interpolate` argument, set to `True` by default.
1557
+ - `smatrix` plugin accepts list of frequencies and returns data as an `xarray.DataArray` instead of a nested `dict`.
1558
+ - `importlib-metadata` version set to `>= 6.0.0`.
1559
+
1560
+ ### Fixed
1561
+ - Helpful error message if user has insufficient credits.
1562
+
1563
+ ## [1.10.0] - 2023-3-28
1564
+
1565
+ ### Added
1566
+ - `TriangleMesh` class for modeling geometries specified by triangle surface meshes, with support for STL file import.
1567
+ - Total-field scattered-field (TFSF) source which allows angled plane waves to be injected into a finite region of space (the total-field region), such that only scattered fields exist outside this region (scattered-field region).
1568
+ - `Medium2D` class for surface conductivity model of a 2D material.
1569
+ - Entries in `material_library` for graphene and some common TMDs.
1570
+ - Ability to create a 2D representation of a thin 3D material.
1571
+ - `SimulationData.plot_field` accepts new field components and values, including the Poynting vector.
1572
+ - `SimulationData.get_poynting_vector` for calculating the 3D Poynting vector at the Yee cell centers.
1573
+ - Post-init validation of Tidy3D components.
1574
+ - Validate post-Simulation init to error if any structures have bounds that terminate inside of the PML.
1575
+ - Validate `slab_bounds` for `PolySlab`.
1576
+
1577
+ ### Changed
1578
+ - Tidy3D account authentication done solely through API key. Migration option offered for users with old username / password authentication.
1579
+ - `export_matlib_to_file` in `material_library` exports material's full name in addition to abbreviation.
1580
+ - Simpler progress bars for `run_async`.
1581
+ - Medium property `n_cfl` added to adjust time step size according to CFL condition.
1582
+ - In the mode solver plugin, regular methods in `solver.py` transformed into classmethods.
1583
+ - `ArrayLike` types are stored internally as `np.ndarray` and written to json as lists. `constrained_array()` provides way to validate `ArrayLike` values based on `ndim` and `dtype`.
1584
+ - Pip installing tidy3d automatically creates `~/.tidy3d` directory in home directory.
1585
+ - Percentage done and field decay determined through http request.
1586
+ - `SourceTime` plotting methods `.plot()` and `.plot_spectrum()` accept a `val` kwarg, which selects which part of the data (`'real'`, `'imag'`, or `'abs'`) to plot, rather than plotting all at once.
1587
+
1588
+ ### Fixed
1589
+ - Bug in remote file transfer when client environment has no correct certificate authority pem file install locally.
1590
+ - Tidy3D exceptions inherit from `ValueError` so they are handled properly by pydantic.
1591
+ - Two unstable materials in `material_library`: `Cu_JohnsonChristy1972` and `Ni_JohnsonChristy1972`. `TiOx_HoribStable` added for improved stability.
1592
+ - Bug in infinite long cylinder when the `reference_plane` is not at the bottom or the cylinder is slanted.
1593
+
1594
+ ## [1.9.3] - 2023-3-08
1595
+
1596
+ ### Fixed
1597
+ - Allow new `tidy3d.config.logging_level` to accept lower case for backwards compatibility.
1598
+
1599
+ ## [1.9.2] - 2023-3-08
1600
+
1601
+ ### Added
1602
+ - `set_logging_console` allows redirection of console messages to stderr.
1603
+
1604
+ ### Changed
1605
+ - Use custom logger to avoid changing global logging state when importing tidy3d.
1606
+ - Separate logging configuration from custom exception definitions.
1607
+
1608
+ ## [1.9.1] - 2023-3-06
1609
+
1610
+ ### Fixed
1611
+ - Avoiding shapely warning in some cases when checking intersection with an empty shape.
1612
+ - `Medium.eps_model` error when supplied a list of frequencies rather than a numpy array.
1613
+ - Set install requirement `rich<12.6.0` to fix double output in webapi functions.
1614
+
1615
+ ## [1.9.0] - 2023-3-01
1616
+
1617
+ ### Added
1618
+ - Specification of relative permittivity distribution using raw, user-supplied data through a `CustomMedium` component.
1619
+ - Automatic differentiation through `Tidy3D` simulations using `jax` through `tidy3d.plugins.adjoint`.
1620
+ - New Drude model variants for Gold and Silver in the `material_library`.
1621
+ - Plugin `ComplexPolySlab` for supporting complex polyslabs containing self-intersecting polygons during extrusion.
1622
+ - Asynchronous running of multiple simulations concurrently using `web.run_async`.
1623
+ - Jax-compatible `run_async` in the `adjoint` plugin for efficiently running multi-simulation objectives concurrently and differentiating result.
1624
+ - Warning in `Simulation.epsilon` if many grid cells and structures provided and slow run time expected as a result.
1625
+ - `verbose` option in `tidy3d.web` functions and containers. If `False`, there will be no non-essential output when running simulations over web api.
1626
+ - Warning if PML or absorbing boundaries are used along a simulation dimension with zero size.
1627
+
1628
+ ### Changed
1629
+ - Saving and loading of `.hdf5` files is made orders of magnitude faster due to an internal refactor.
1630
+ - `PolySlab.from_gds` supports `gds_cell` from both `gdspy` and `gdstk`, both packages are made optional requirements.
1631
+ - Adjoint plugin `JaxCustomMedium` is made faster and can handle several thousand pixels without significant overhead.
1632
+ - Jax is made an optional requirement. The adjoint plugin supports jax versions 0.3 and 0.4 for windows and non-windows users, respectively.
1633
+ - Issue a deprecation warning that `Geometry.intersections` will be renamed to `Geometry.intersections_plane` in 2.0.
1634
+ - Limit some warnings to only show for the first structure for which they are encountered.
1635
+ - Billed flex unit no longer shown at the end of `web.run` as it may take a few seconds until it is available. Instead, added a `web.real_cost(task_id)` function to get the cost after a task run.
1636
+ - Refactored `tidy3d.web` for more robustness and test coverage.
1637
+
1638
+ ### Fixed
1639
+ - Progressbars always set to 100% when webapi functions are finished.
1640
+ - Faster handling of `Geometry.intersects` and `Geometry.inside` by taking into account geometry bounds.
1641
+ - Numpy divide by zero warning in mode solver fixed by initializing jacobians as real instead of complex.
1642
+ - Bug in validators for 2D objects being in homogeneous media which were looking at the infinite plane in which the objects lie. This can also significantly speed up some validators in the case of many structures.
1643
+ - Sources and monitors with bend radii are displayed with curved arrows.
1644
+
1645
+ ## [1.8.4] - 2023-2-13
1646
+
1647
+ ### Fixed
1648
+ - Error importing `Axes` type with most recent `matplotlib` release (3.7).
1649
+
1650
+ ## [1.8.3] - 2023-1-26
1651
+
1652
+ ### Fixed
1653
+ - Bug in `Simulation.epsilon` with `coord_key="centers"` in which structures were not rendered.
1654
+ - Missing `@functools.wrap` in `ensure_freq_in_range` decorator from `medium.py` causing incorrect docstrings.
1655
+
1656
+ ## [1.8.2] - 2023-1-12
1657
+
1658
+ ### Added
1659
+ - Warning if users install via `tidy3d-beta` on pip, from now on, best to use `tidy3d` directly.
1660
+ - Support for dispersive media in `AnisotropicMedium`
1661
+
1662
+ ### Changed
1663
+ - Support shapely version >=2.0 for all python versions.
1664
+ - Internally refactor `Simulation.epsilon` and move `eps_diagonal` to `Structure` in preparation for future changes.
1665
+ - Readme displays updated instructions for installing tidy3d (remove beta version mention).
1666
+
1667
+ ### Fixed
1668
+ - Field decay warning in mode solver when symmetry present.
1669
+ - Formatting bug in Tidy3d custom exceptions.
1670
+
1671
+ ### Removed
1672
+
1673
+ ## [1.8.1] - 2022-12-30
1674
+
1675
+ ### Added
1676
+ - Environment variable `TIDY3D_SSL_VERIFY` to optionally disable SSL authentication (default is `True`).
1677
+ - Billed FlexUnit cost displayed at the end of `web.monitor`.
1678
+
1679
+ ### Fixed
1680
+ - Bug on Windows systems with submitting `CustomFieldSource` data to the server.
1681
+ - Fix to `FieldData.symmetry_expanded_copy` for monitors with `colocate=True`.
1682
+
1683
+ ### Changed
1684
+ - The `Simulation` version updater is called every time a `Simulation` object is loaded, not just `from_file`.
1685
+ - Boundary specifications that rely on the default `Periodic` boundary now print a deprecation warning, as the default boundaries will change to
1686
+ `PML` in Tidy3D 2.0.
1687
+
1688
+ ## [1.8.0] - 2022-12-14
1689
+
1690
+ ### Added
1691
+ - `CustomFieldSource` that can inject arbitrary source fields.
1692
+ - `ElectromagneticFieldData.flux` property for data corresponding to 2D monitors, and `ElectromagneticFieldData.dot`
1693
+ method for computing the overlap integral over two sets of frequency-domain field data.
1694
+ - Data corresponding to 2D `FieldMonitor` and `FieldTimeMonitor`, as well as to `ModeSolverMonitor`, now also stores `grid_correction` data
1695
+ related to the finite grid along the normal direction. This needs to be taken into account to avoid e.g. numerical oscillations of the flux
1696
+ with the exact position of the monitor that is due to the interpolation from the grid cell boundaries. These corrections are automatically
1697
+ applied when using the `flux` and `dot` methods.
1698
+ - Resonance finding plugin for estimating resonance frequency and Q-factor of multiple resonances from time-domain data.
1699
+ Accessed through `tidy3d.plugins.ResonanceFinder`.
1700
+ - New `.updated_copy(**kwargs)` method to all tidy3d objects to add a more convenient shortcut to copying an instance with updated fields,
1701
+ i.e. `med.copy(update=dict(permittivity=3.0))` becomes `med.updated_copy(permittivity=3.0)`.
1702
+ - Test support for python 3.11.
1703
+ - `sidewall_angle` option for `Cylinder` that allows a `Cylinder` to be tuned into a conical frustum or a cone.
1704
+ - `reference_plane` for `PolySlab` that provides options to define the vertices at the bottom, middle, or top of the `PolySlab`.
1705
+ - Automesh generation: `MeshOverrideStructure` that allows for a direct grid size specification in override structures,
1706
+ and `dl_min` that bounds the minimal grid size.
1707
+ - More material models to the material database such as gold from Olman2012.
1708
+ - In `AdvancedFitterParam` for `StableDispersionFitter`, `random_seed` option to set the random seed,
1709
+ and `bound_f_lower` to set the lower bound of pole frequency.
1710
+ - Introduced the option to project fields at near, intermediate, and far distances using an exact Green's function formalism which does not
1711
+ make far-field approximations. This can be enabled in any `AbstractFieldProjectionMonitor` by setting `far_field_approx=False`. A tutorial notebook
1712
+ as a comprehensive reference for field projections was added to the documentation.
1713
+ - Tracking of modes in `ModeSolverData` based on overlap values, controlled through `ModeSpec.track_freq`.
1714
+ - Native broadband support for `GassuainBeam` `AstigmaticGaussianBeam`, and `ModeSource` through the `num_freqs` argument.
1715
+ - Apodization option for frequency-domain monitors to ignore temporal data in the beginning and/or end of a simulation
1716
+
1717
+ ### Changed
1718
+ - Minimum flex unit charge reduced from `0.1` to `0.025`.
1719
+ - Default Courant factor was changed from `0.9` to `0.99`.
1720
+ - A point dipole source placed on a symmetry plane now always has twice the amplitude of the same source in a simulation without the
1721
+ symmetry plane, as expected by continuity with the case when the dipole is slightly off the symmetry plane, in which case
1722
+ there are effectively two dipoles, the original one and its mirror image. Previously, the amplitude was only doubled for dipoles polarized normal
1723
+ to the plane, because of Yee grid specifics.
1724
+ - `FluxMonitor` and `FluxTimeMonitor` no longer snap fields to centers, but instead provide continuous interpolation of the flux over the
1725
+ exact geometry of the monitor.
1726
+ - Major refactor to internal handling of data structures, including pure `Dataset` components that do not depend on other `Tidy3D` components and may
1727
+ therefore be used to define custom data in `Tidy3D` models.
1728
+ - Speed and memory usage improvement when writing and reading Tidy3d models to and from `.hdf5` files.
1729
+ - Writing `Tidy3D` models containing custom data to `.json` file will log a warning and exclude the raw data from the file for performance reasons.
1730
+ - Material database reorganization and fixing a few references to the dispersion data.
1731
+ - The name `Near2Far` has been replaced with `FieldProjection`. For example, `Near2FarAngleMonitor` is now `FieldProjectionAngleMonitor`.
1732
+ - The API for far field projections has been simplified and several methods have now become properties.
1733
+ For example, the radar cross section is now accessed as `.radar_cross_section`, not `.radar_cross_section()`.
1734
+ - Added a method `renormalize_fields` to `AbstractFieldProjectionData` to re-project far fields to different projection distances.
1735
+ - The API for `DiffractionData` was refactored to unify it with the API for `AbstractFieldProjectionData`.
1736
+ - The user no longer needs to supply `orders_x` and `orders_y` when creating a `DiffractionMonitor`; all allowed orders are automatically
1737
+ generated and returned in the resulting `DiffractionData`.
1738
+ - The user no longer needs to supply a `medium` when creating a `DiffractionMonitor` or any `AbstractFieldProjectionMonitor`; the medium through
1739
+ which fields are to be projected is now determined automatically based on the medium in which the monitor is placed.
1740
+ - The following attributes of `AbstractFieldProjectionMonitor` are now properties rather than methods:
1741
+ `fields_spherical`, `fields_cartesian`, `power`, `radar_cross_section`.
1742
+
1743
+ ### Fixed
1744
+ - Some issues in `DiffractionMonitor` that is not `z`-normal that could lead to solver errors or wrong results.
1745
+ - Bug leading to solver error when `Absorber` boundaries with `num_layers = 0` are used.
1746
+ - Bug leading to solver error when a `FieldMonitor` crosses a `BlochBoundary` and not all field components are recorded.
1747
+ - When running a `Batch`, `path_dir` is created if not existing.
1748
+ - Ignore shapely `STRtree` deprecation warning.
1749
+ - Ignore x axis when plotting 1D `Simulation` cross sections to avoid plot irregularities.
1750
+ - Local web api tests.
1751
+ - Use Tidy3D logger for some warnings that used to use default python logging.
1752
+
1753
+ ### Changed
1754
+
1755
+ - Replaced `gdspy` dependency with `gdstk`.
1756
+
1757
+ ## [1.7.1] - 2022-10-10
1758
+
1759
+ ### Added
1760
+ - `medium` field in `DiffractionMonitor` for decomposition of fields that are not in vacuum.
1761
+
1762
+ ### Fixed
1763
+ - Bug in meshing an empty simulation with zero size along one dimension.
1764
+ - Bug causing error in the solver when a `PermittivityMonitor` is present in the list of monitors and is not at the end of the list.
1765
+
1766
+ ## [1.7.0] - 2022-10-03
1767
+
1768
+ ### Added
1769
+ - `DiffractionMonitor` to compute the power amplitude distribution in all diffraction orders in simulations of periodic structures.
1770
+ - `PolySlab` can be oriented along `x` or `y`, not just `z`.
1771
+
1772
+ ### Removed
1773
+ - Loading components without validation no longer supported as it is too unpredictable.
1774
+ - Webplots plugin was removed as it was cumbersome to maintain and no longer used in web UI.
1775
+
1776
+ ## [1.6.3] - 2022-9-13
1777
+
1778
+ ### Added
1779
+ - Type field for `DataArray` subclasses written to `hdf5`.
1780
+
1781
+ ### Fixed
1782
+ - Docstring for `FluxMonitor` and `FluxTimeMonitor`.
1783
+
1784
+ ### Removed
1785
+ - Explicit error message about `grid_size` deprecation.
1786
+
1787
+ ## [1.6.2] - 2022-9-6
1788
+
1789
+ ### Added
1790
+ - Support for `Near2Far` monitors in the presence of simulation symmetries.
1791
+
1792
+ ### Fixed
1793
+ - Bug in 3D `Near2Far` monitors where surfaces defined in `exclude_surfaces` will no actually be excluded.
1794
+ - Bug in getting angles from `k`-space values in `Near2FarKSpaceMonitor`.
1795
+ - Bug in `SimulationData.plot_field` when getting the position along the normal axis for a 2D plot.
1796
+
1797
+ ## [1.6.1] - 2022-8-31
1798
+
1799
+ ### Fixed
1800
+ - Bug in new simulation upload on Windows machines.
1801
+
1802
+ ## [1.6.0] - 2022-8-29
1803
+
1804
+ ### Added
1805
+ - New classes of near-to-far monitors for server-side computation of the near field to far field projection.
1806
+ - Option to exclude `DataArray` Fields from a `Tidy3dBaseModel` json.
1807
+ - Option to save/load all models to/from `hdf5` format.
1808
+ - Option to load base models without validation.
1809
+ - Support negative sidewall angle for slanted `PolySlab`-s.
1810
+ - Option to specify only a subset of the S-matrix to compute in the S-matrix plugin, as well as to provide mapping between elements (due to symmetries).
1811
+ - More Lorentz-Drude material models to the material database.
1812
+
1813
+ ### Fixed
1814
+ - Raise a more meaningful error if login failed after `MAX_ATTEMPTS`.
1815
+ - Environment login credentials set to `""` are now ignored and credentials stored to file are still looked for.
1816
+ - Improved subpixel coefficients computation around sharp edges, corners, and three-structure intersections.
1817
+
1818
+ ### Changed
1819
+ - Major refactor of the way data structures are used internally.
1820
+ - `ModeFieldMonitor` -> `ModeSolerMonitor` with associated `ModeSolverData`. `ModeSolverData` is now also stored internally in `ModeSolver`,
1821
+ and the `plot_field` method can be called directly from `ModeSolver` instead of `ModeSolverData`.
1822
+ - Field data for monitors that have a zero size along a given dimension is now interpolated to the exact `monitor.center` along that dimension.
1823
+ - Removed `nlopt` from requirements, user-side material fitting now uses `scipy`.
1824
+ - New Field `normalize_index` in `Simulation` - used to be input parameter when loading simulation data. A given `SimulationData`
1825
+ can still be renormalized to a different source later on using the new `SimulationData.renormalize`.
1826
+ - `FluxMonitor` and `FluxTimeMonitor`-s can now have a 3D box geometry, in which case the flux going out of all box surfaces is computed (optionally,
1827
+ some surfaces can be excluded).
1828
+ - Frequency-domain monitors require a non-empty list of frequencies.
1829
+ - Reduced the minimum flex unit cost to run a simulation to `0.1`.
1830
+ - Reduced the premium cost for dispersive materials in typical cases.
1831
+ - Added a cost for monitors that should be negligible in typical cases but affects large monitors that significantly slow down the simulation.
1832
+
1833
+ ## [1.5.0] - 2022-7-21
1834
+
1835
+ ### Fixed
1836
+ - Bug in computing the `bounds` of `GeometryGroup`.
1837
+ - Bug in auto-mesh generation.
1838
+
1839
+ ### Added
1840
+ - Ability to compute field projections server-side.
1841
+
1842
+ ### Changed
1843
+ - All Tidy3D components apart from data structures are now fully immutable.
1844
+ - Stopped support for python 3.6, improved support for python 3.10.
1845
+ - Web material fitter for lossless input data (no `k` data provided) will now return a lossless medium.
1846
+ - `sort_by` changed to `filter_pol` in `ModeSpec`.
1847
+ - `center` no longer a field of all `Geometry` components, instead only present when needed,
1848
+ removed in `PolySlab` and `GeometryGroup`. `Planar` geometries no longer have a mandatory `length` field, but
1849
+ have `center_axis` and `lengt_axis` properties for the center and length along the extrusion axis. `PolySlab` now defined exclusively through `slab_bounds`,
1850
+ while `Cylinder` through `center` and `length`.
1851
+ - In mode solver, allow precision to switch between double and single precision.
1852
+ - Near-to-far transformation tool is no longer a plugin, but is now part of Tidy3D's new core data structures
1853
+
1854
+ ## [1.4.1] - 2022-6-13
1855
+
1856
+ ### Fixed
1857
+ - Bug in plotting polarization of a normal incidence source for some `angle_phi`.
1858
+ - Bloch vector values required to be real rather than complex.
1859
+ - Web security mitigation.
1860
+
1861
+ ## [1.4.0] - 2022-6-3
1862
+
1863
+ ### Fixed
1864
+ - Bug in plotting when alpha is turned off in permittivity overlay.
1865
+ - Bug in plotting polarization of an angled incidence source (S,P -> P,S).
1866
+ - Throw warning if user tries to download data instances in `yaml` or `json` format.
1867
+ - Arrow length plotting issues for infinite sources.
1868
+ - Issues with nonuniform mesh not extending exactly to simulation boundaries.
1869
+
1870
+ ### Added
1871
+ - Bloch periodic boundary conditions, enabling modeling of angled plane wave.
1872
+ - `GeometryGroup` object to associate several `Geometry` instances in a single `Structure` leading to improved performance for many objects.
1873
+ - Ability to uniquely specify boundary conditions on all 6 `Simulation` boundaries.
1874
+ - Options in field monitors for spatial downsampling and evaluation at Yee grid centers.
1875
+ - `BatchData.load()` can load the data for a batch directly from a directory.
1876
+ - Utility for updating `Simulation` objects from old versions of `Tidy3d` to current version.
1877
+ - Explicit `web.` functions for downloading only `simulation.json` and `tidy3d.log` files.
1878
+
1879
+ ### Changed
1880
+ - `Batch` objects automatically download their json file upon `download` and `load`.
1881
+ - Uses `shapely` instead of `gdspy` to merge polygons from a gds cell.
1882
+ - `ComponentModeler` (S matrix tool) stores the `Batch` rather than the `BatchData`.
1883
+ - Custom caching of properties to speed up subsequent calculations.
1884
+ - Tidy3D configuration now done through setting attributes of `tidy3d.config` object.
1885
+
1886
+ ## [1.3.3] - 2022-5-18
1887
+
1888
+ ### Fixed
1889
+
1890
+ - Bug in `Cylinder.inside` when `axis != 2`.
1891
+
1892
+ ### Added
1893
+
1894
+ - `AstigmaticGaussianBeam` source.
1895
+
1896
+ ### Changed
1897
+
1898
+ - Internal functions that may require hashing the simulation many times now use a `make_static` decorator. This pre-computes the simulation hash and stores it,
1899
+ and makes sure that the simulation has not changed at the beginning and end of the function execution.
1900
+ - Speeding up initialization of `PolySlab` when there is no dilation or slant angle.
1901
+ - Allow customizing data range that colormap covers in `plot_field`.
1902
+ - Speeding up of the automatic grid generation using Rtree and other improvements.
1903
+ - Better handling of http response errors.
1904
+ - In `web.monitor`, the estimated cost is only displayed when available; avoid "Unable to get cost" warning.
1905
+ - In `PolySlab.from_gds`, the selected polygons are first merged if possible, before the `PolySlab`-s are made. This avoids bugs e.g. in the case of slanted walls.
1906
+
1907
+ ## [1.3.2] - 2022-4-30
1908
+
1909
+ ### Fixed
1910
+
1911
+ - Bug in nonuniform mesh where the simulation background medium may be taken into account if higher than other structures overriding it.
1912
+
1913
+ ## [1.3.1] - 2022-4-29
1914
+
1915
+ ### Added
1916
+
1917
+ ### Changed
1918
+
1919
+ - The `copy()` method of Tidy3D components is deep by default.
1920
+ - Maximum allowed number of distinct materials is now 65530.
1921
+
1922
+ ### Fixed
1923
+
1924
+ - Monitor/source opacity values also applied to associated arrows.
1925
+ - Auto meshing in the presence of symmetries ignores anything outside of the main symmetry quadrant.
1926
+ - If an interface is completely covered by another structure, it is ignored by the mesher.
1927
+
1928
+ ## [1.3.0] - 2022-4-26
1929
+
1930
+ ### Added
1931
+
1932
+ - New `grid_spec` Field in `Simulation` that allows more flexibility in defining the mesh.
1933
+ - `GridSpec1d` class defining how the meshing along each dimension should be done, with subclasses `UniformGrid` and `CustomGrid` that cover the functionality
1934
+ previously offered by supplying a float or a list of floats to `Simulation.grid_size`. New functionality offered by `AutoGrid` subclass, with the
1935
+ mesh automatically generated based on the minimum required steps per wavelength.
1936
+ - New `PointDipole` source.
1937
+ - Opacity kwargs for monitor and source in `sim.plot`.
1938
+ - Separated `plotly`-based requirements from core requirements file, can be added with `"pip install tidy3d-beta[plotly]"`.
1939
+
1940
+ ### Changed
1941
+ - `Simulation.grid_spec` uses the default `GridSpec`, which has `AutoGrid(min_steps_per_wvl=10)` in each direction. To initialize a `Simulation` then it is no
1942
+ longer needed to provide grid information, if sources are added to the simulation. Otherwise an error will be raised asking to provide a wavelength for the auto mesh.
1943
+ - `VolumeSource` is now called `UniformCurrentSource`.
1944
+ - S-matrix module now places the monitors exactly at the port locations and offsets the source slightly for numerical reasons (more accurate).
1945
+ - Fixed bug in `PolySlab` visualization with sidewalls.
1946
+ - Inheritance structure of `Source` reorganized.
1947
+ - Better handling of only one `td.inf` in `Box.from_bounds`.
1948
+ - Added proper label to intensity plots.
1949
+ - Made all attributes `Field()` objects in `data.py` to clean up docs.
1950
+ - Proper handling of `Medium.eps_model` at frequency of `td.inf` and `None`.
1951
+
1952
+ ### Removed
1953
+ - `Simulation.grid_size` is removed in favor of `Simulation.grid_spec`.
1954
+
1955
+ ## [1.2.2] - 2022-4-16
1956
+
1957
+ ### Added
1958
+ - `SimulationDataApp` GUI for visualizing contents of `SimulationData` in `tidy3d.plugings`.
1959
+ - `SimulationPlotly` interface for generating `Simulation.plot()` figures using `plotly` instead of `matplotlib`.
1960
+ - New `PermittivityMonitor` and `PermittivityData` to store the complex relative permittivity as used in the simulation.
1961
+ - The maximum credit cost for a simulation can now be queried using `web.estimate_cost`. It is also displayed by default during `web.upload`.
1962
+
1963
+ ### Changed
1964
+ - Faster plotting for matplotlib and plotly.
1965
+ - `SimulationData` normalization keeps track of source index and can be normalized when loading directly from .hdf5 file.
1966
+ - Monitor data with symmetries now store the minimum required data to file and expands the symmetries on the fly.
1967
+ - Significant speedup in plotting complicated simulations without patch transparency.
1968
+ - When a list of `dl` is provided as a `grid_size` along a given direction, the grid is placed such that the total size `np.sum(dl)` is centered at the simulation center.
1969
+ Previously, a grid boundary was always placed at the simulation center.
1970
+
1971
+ ## [1.2.1] - 2022-3-30
1972
+
1973
+ ### Added
1974
+
1975
+ ### Changed
1976
+
1977
+ - `webapi` functions now only authenticate when needed.
1978
+ - Credentials storing folder only created when needed.
1979
+ - Added maximum number of attempts in authentication.
1980
+ - Made plotly plotting faster.
1981
+ - Cached Simulation.medium and Simulation.medium_map computation.
1982
+
1983
+ ## [1.2.0] - 2022-3-28
1984
+
1985
+ ### Added
1986
+ - `PolySlab` geometries support dilation and angled sidewalls.
1987
+ - Percent done monitoring of jobs running longer than 10 seconds.
1988
+ - Can use vectorized spherical coordinates in `tidy3d.plugins.Near2Far`.
1989
+ - `ModeSolver` returns a `ModeSolverData` object similar to `SimulationData`, containing all the information about the modes.
1990
+ - `ModeFieldMonitor` and `ModeFieldData` allow the results of a mode solve run server-side to be stored.
1991
+ - Plotting of `ModeFieldData` fields in `SimulationData.plot_field` and `ModeSolverData.plot_field`.
1992
+ - Ordering of modes by polarization fraction can be specified in `ModeSpec`.
1993
+ - Angled mode sources.
1994
+
1995
+ ### Changed
1996
+ - Significant speed improvement for `Near2Far` calculations.
1997
+ - `freq` no longer passed to `ModeSolver` upon init, instead a list of `freqs` passed to `ModeSolver.solve`.
1998
+ - Mode solver now returns `ModeSolverData` object containing information about the mode fields and propagation constants as data arrays over frequency and mode index.
1999
+ - Reorganized some of the internal `Source` classes.
2000
+ - Major improvements to `Batch` objects. `Batch.run()` returns a `BatchData` object that maps `task_name` to `SimulationData`.
2001
+ - Infinity stored as `str` in json outputs, conforming to json file specifications.
2002
+ - No longer need to specify one of `x/y/z` in `SimulationData.plot_field` if the monitor has a zero-sized dimension.
2003
+ - `Simulation.run_time` but must be > 0 to upload to server.
2004
+
2005
+ ## [1.1.1] - 2022-3-2
2006
+
2007
+ ### Added
2008
+
2009
+ ### Changed
2010
+
2011
+ - Fixed issue where smatrix was not uploaded to pyPI.
2012
+
2013
+ ## [1.1.0] - 2022-3-1
2014
+
2015
+ ### Added
2016
+
2017
+ - `Simulation` symmetries now fully functional.
2018
+ - Ability to perform near-to-far transformations from multiple surface monitors oriented along the x, y or z directions using `tidy3d.plugins.Near2Far`.
2019
+ - `tidy3d.plugins.ComponentModeler` tool for scattering matrix calculations.
2020
+
2021
+ ### Changed
2022
+
2023
+ - Major enhancements to near field to far field transformation tool: multiple monitors supported with arbitrary configuration, user control over sampling point density.
2024
+ - Fixed visualization bug in symmetry.
2025
+
2026
+ ## [1.0.2] - 2022-2-24
2027
+
2028
+ ### Added
2029
+ - Clarified license terms to not include scripts written using the tidy3d python API.
2030
+ - Simulation symmetries are now enabled but currently only affect the mode solver, if the mode plane lies on the simulation center and there's a symmetry.
2031
+ - Validator that mode objects with symmetries are either entirely in the main quadrant, or lie on the symmetry axis.
2032
+ - `Simulation.plotly()` makes a plotly figure of the cross section.
2033
+ - Dispersion fitter can parse urls from refractiveindex.info
2034
+ - Clarified license terms to not include scripts written using the tidy3d python API.
2035
+
2036
+ ### Changed
2037
+ - Fixed a bug in python 3.6 where polyslab vertices loaded differently from file.
2038
+
2039
+ ## [1.0.1] - 2022-2-16
2040
+
2041
+ ### Added
2042
+ - `Selmeier.from_dispersion()` method to quickly make a single-pole fit for lossless weakly dispersive materials.
2043
+ - Stable dispersive material fits via webservice.
2044
+ - Allow to load dispersive data directly by providing URL to txt or csv file
2045
+ - Validates simulation based on discretized size.
2046
+
2047
+ ### Changed
2048
+ - `Polyslab.from_gds` returns a list of `PolySlab` objects imported from all polygons in given layer and dtype, can optionally specify single dtype.
2049
+ - Warning about structure close to PML disabled if Absorber type.
2050
+ - Source dft now ignores insignificant time amplitudes for speed.
2051
+ - New color schemes for plots.
2052
+
2053
+ ## [1.0.0] - 2022-1-31
2054
+
2055
+ ### Added
2056
+ - Stable dispersive material fits via webservice.
2057
+
2058
+ ### Changed
2059
+ - Refined and updated documentation.
2060
+
2061
+ ## [0.2.0] - 2022-1-29
2062
+
2063
+ ### Added
2064
+
2065
+ - `FieldMonitor.surface()` to split volume monitors into their surfaces.
2066
+ - Units and annotation to data.
2067
+ - Faster preprocessing.
2068
+ - Web authentication using environment variables `TIDY3D_USER` and `TIDY3D_PASS`.
2069
+ - `callback_url` in web API to put job metadata when a job is finished.
2070
+ - Support for non uniform grid size definition.
2071
+ - Gaussian beam source.
2072
+ - Automated testing through tox and github actions.
2073
+
2074
+ ## [0.1.1] - 2021-11-09
2075
+ ### Added
2076
+
2077
+ - PML parameters and padding Grid with pml pixels by [@momchil-flex](https://github.com/momchil-flex) in #64
2078
+ - Documentation by [@tylerflex](https://github.com/tylerflex) in #63
2079
+ - Gds import from [@tylerflex](https://github.com/tylerflex) in #69
2080
+ - Logging, by [@tylerflex](https://github.com/tylerflex) in #70
2081
+ - Multi-pole Drude medium by [@weiliangjin2021](https://github.com/weiliangjin2021) in #73
2082
+ - Mode Solver: from [@tylerflex](https://github.com/tylerflex) in #74
2083
+ - Near2Far from [@tylerflex](https://github.com/tylerflex) in #77
2084
+
2085
+ ### Changed
2086
+ - Separated docs from [@tylerflex](https://github.com/tylerflex) in #78
2087
+
2088
+ ## [0.1.0] - 2021-10-21
2089
+
2090
+ ### Added
2091
+ - Web API implemented by converting simulations to old tidy3D
2092
+
2093
+ ## Alpha Release Changes
2094
+
2095
+ ### 22.1.1
2096
+ - Solver speed improvement (gain depending on simulation + hardware details).
2097
+ - Bringing the speed of the non-angled mode solver back to pre-21.4.2 levels.
2098
+
2099
+ ### 21.4.4
2100
+ - Improvements to subpixel averaging for dispersive materials.
2101
+ - Enabled web login using environment variables ``TIDY3D_USER`` and ``TIDY3D_PASS``.
2102
+
2103
+ ### 21.4.3
2104
+ - Bugfix when running simulation with zero ``run_time``.
2105
+ - More internal logging.
2106
+ - Fixed unstable ``'Li1993_293K'`` variant of ``cSi`` in the material library.
2107
+
2108
+ ### 21.4.2.2
2109
+ - Bugfix when downloading data on Windows.
2110
+ - Bugfix in material fitting tool when target tolerance is not reached.
2111
+
2112
+ ### 21.4.2
2113
+ - New Gaussian beam source and `example usage <examples/GratingCoupler.html>`__.
2114
+ - Modal sources and monitors in bent and in angled waveguides with `tutorial <examples/Modes_bent_angled.html>`__.
2115
+ - Nyquist-limit sampling in frequency-domain monitors (much faster without loss of accuracy).
2116
+ - Support for Drude model of material dispersion.
2117
+ - Small bugfixes to some of the other dispersion models.
2118
+ - PEC boundaries applied by default at the truncation of any boundary with PML, avoiding potential
2119
+ issues with using periodic boundaries under the PML instead.
2120
+ - Source normalization no longer adding a spurious frequency-dependent phase to the fields.
2121
+ - Fixed bug in unpacking monitor fields with symmetries and ``interpolate=False``.
2122
+ - Lots of streamlining on the backend side.
2123
+
2124
+ ### 21.4.1
2125
+ - Fixed bug with zero-size monitor plotting.
2126
+ - Fixed bug with empty simulation run introduced in 21.4.0.
2127
+
2128
+ ### 21.4.0
2129
+ - A few small fixes.
2130
+
2131
+ ### 21.3.1.6
2132
+ - Fixed nonlinear constraint in dispersive material fitting tool.
2133
+ - Fixed potential issue when a monitor stores neither `'E'` nor `'H'`.
2134
+ - Fixed some backwards compatibility issues introduced in 21.3.1.5.
2135
+
2136
+ ### 21.3.1.5
2137
+ - Frequency monitors can now optionally store the complex permittivity at the same locations where
2138
+ the E-fields are recorded, at the monitor frequencies.
2139
+ - Frequency monitors now also have an `'interpolate'` keyword, which defaults to `True` and
2140
+ reproduces the behavior of previous versions. If set to `False`, however, the raw fields
2141
+ evaluated at their corresponding Yee grid locations are returned, instead of the fields interpolated
2142
+ to the Yee cell centers. This also affects the returned permittivity, if requested.
2143
+ - Reorganized internal source time dependence handling, enabling more complicated functionality
2144
+ in the future, like custom source time.
2145
+ - Total field in the simulation now sampled at the time step of the peak of the source time dependence,
2146
+ for better estimation of the shutoff factor.
2147
+ - A number of bug fixes, especially in the new plotting introduced in 21.3.1.4.
2148
+
2149
+ ### 21.3.1.4
2150
+ - Reorganized plotting:
2151
+ - Speeding up structure visualizations.
2152
+ - Structures now shown based on primitive definitions rather than grid discretization. This
2153
+ then shows the physical structures but not what the simulation "sees". Will add an option to
2154
+ display the grid lines in next version.
2155
+ - Bumped down matplotlib version requirement to 3.2 and python version requirement to 3.6.
2156
+ - Improved handling of PEC interfaces.- Reorganized and extended internal logging.
2157
+ - Added ``tidy3d.__version__``.
2158
+ - A number of fixes to the example notebooks and the colab integration.
2159
+
2160
+ ### 21.3.1.3
2161
+ - Bumping back python version requirement from 3.8 to 3.7.
2162
+
2163
+ ### 21.3.1.2
2164
+ - Hotfix to an internal bug in some simulation runs.
2165
+
2166
+ ### 21.3.1.1
2167
+ - New dispersion fitting tool for material data and accompanying `tutorial <examples/Fitting.html>`__.
2168
+ - (`beta`) Non-uniform Cartesian meshing now supported. The grid coordinates are provided
2169
+ by hand to `Simulation`. Next step is implementing auto-meshing.
2170
+ - `DispersionModel` objects can now be directly used as materials.
2171
+ - Fixed bug to `Cylinder` subpixel averaging.
2172
+ - Small bugs fixes/added checks for some edge cases.
2173
+
2174
+ ### 21.3.1.0
2175
+ - Rehash of symmetries and support for mode sources and monitors with symmetries.
2176
+ - Anisotropic materials (diagonal epsilon tensor).
2177
+ - Rehashed error handling to output more runtime errors to tidy3d.log.
2178
+ - Job and Batch classes for better simulation handling (eventually to fully replace webapi functions).
2179
+ - A large number of small improvements and bug fixes.
2180
+
2181
+ [2.12.0.dev0]: https://github.com/flexcompute/tidy3d/compare/v2.11.2...v2.12.0.dev0
2182
+ [2.11.2]: https://github.com/flexcompute/tidy3d/compare/v2.11.1...v2.11.2
2183
+ [2.11.1]: https://github.com/flexcompute/tidy3d/compare/v2.11.0...v2.11.1
2184
+ [2.11.0]: https://github.com/flexcompute/tidy3d/compare/v2.10.2...v2.11.0
2185
+ [2.10.2]: https://github.com/flexcompute/tidy3d/compare/v2.10.1...v2.10.2
2186
+ [2.10.1]: https://github.com/flexcompute/tidy3d/compare/v2.10.0...v2.10.1
2187
+ [2.10.0]: https://github.com/flexcompute/tidy3d/compare/v2.9.3...v2.10.0
2188
+ [2.9.3]: https://github.com/flexcompute/tidy3d/compare/v2.9.2...v2.9.3
2189
+ [2.9.2]: https://github.com/flexcompute/tidy3d/compare/v2.9.1...v2.9.2
2190
+ [2.9.1]: https://github.com/flexcompute/tidy3d/compare/v2.9.0...v2.9.1
2191
+ [2.9.0]: https://github.com/flexcompute/tidy3d/compare/v2.8.5...v2.9.0
2192
+ [2.8.5]: https://github.com/flexcompute/tidy3d/compare/v2.8.4...v2.8.5
2193
+ [2.8.4]: https://github.com/flexcompute/tidy3d/compare/v2.8.3...v2.8.4
2194
+ [2.8.3]: https://github.com/flexcompute/tidy3d/compare/v2.8.2...v2.8.3
2195
+ [2.8.2]: https://github.com/flexcompute/tidy3d/compare/v2.8.1...v2.8.2
2196
+ [2.8.1]: https://github.com/flexcompute/tidy3d/compare/v2.8.0...v2.8.1
2197
+ [2.8.0]: https://github.com/flexcompute/tidy3d/compare/v2.7.9...v2.8.0
2198
+ [2.7.9]: https://github.com/flexcompute/tidy3d/compare/v2.7.8...v2.7.9
2199
+ [2.7.8]: https://github.com/flexcompute/tidy3d/compare/v2.7.7...v2.7.8
2200
+ [2.7.7]: https://github.com/flexcompute/tidy3d/compare/v2.7.6...v2.7.7
2201
+ [2.7.6]: https://github.com/flexcompute/tidy3d/compare/v2.7.5...v2.7.6
2202
+ [2.7.5]: https://github.com/flexcompute/tidy3d/compare/v2.7.4...v2.7.5
2203
+ [2.7.4]: https://github.com/flexcompute/tidy3d/compare/v2.7.3...v2.7.4
2204
+ [2.7.3]: https://github.com/flexcompute/tidy3d/compare/v2.7.2...v2.7.3
2205
+ [2.7.2]: https://github.com/flexcompute/tidy3d/compare/v2.7.1...v2.7.2
2206
+ [2.7.1]: https://github.com/flexcompute/tidy3d/compare/v2.7.0...v2.7.1
2207
+ [2.7.0]: https://github.com/flexcompute/tidy3d/compare/v2.6.4...v2.7.0
2208
+ [2.6.4]: https://github.com/flexcompute/tidy3d/compare/v2.6.3...v2.6.4
2209
+ [2.6.3]: https://github.com/flexcompute/tidy3d/compare/v2.6.2...v2.6.3
2210
+ [2.6.2]: https://github.com/flexcompute/tidy3d/compare/v2.6.1...v2.6.2
2211
+ [2.6.1]: https://github.com/flexcompute/tidy3d/compare/v2.6.0...v2.6.1
2212
+ [2.6.0]: https://github.com/flexcompute/tidy3d/compare/v2.5.2...v2.6.0
2213
+ [2.5.2]: https://github.com/flexcompute/tidy3d/compare/v2.5.1...v2.5.2
2214
+ [2.5.1]: https://github.com/flexcompute/tidy3d/compare/v2.5.0...v2.5.1
2215
+ [2.5.0]: https://github.com/flexcompute/tidy3d/compare/v2.4.3...v2.5.0
2216
+ [2.4.3]: https://github.com/flexcompute/tidy3d/compare/v2.4.2...v2.4.3
2217
+ [2.4.2]: https://github.com/flexcompute/tidy3d/compare/v2.4.1...v2.4.2
2218
+ [2.4.1]: https://github.com/flexcompute/tidy3d/compare/v2.4.0...v2.4.1
2219
+ [2.4.0]: https://github.com/flexcompute/tidy3d/compare/v2.3.3...v2.4.0
2220
+ [2.3.3]: https://github.com/flexcompute/tidy3d/compare/v2.3.2...v2.3.3
2221
+ [2.3.2]: https://github.com/flexcompute/tidy3d/compare/v2.3.1...v2.3.2
2222
+ [2.3.1]: https://github.com/flexcompute/tidy3d/compare/v2.3.0...v2.3.1
2223
+ [2.3.0]: https://github.com/flexcompute/tidy3d/compare/v2.2.3...v2.3.0
2224
+ [2.2.3]: https://github.com/flexcompute/tidy3d/compare/v2.2.2...v2.2.3
2225
+ [2.2.2]: https://github.com/flexcompute/tidy3d/compare/v2.2.1...v2.2.2
2226
+ [2.2.1]: https://github.com/flexcompute/tidy3d/compare/v2.2.0...v2.2.1
2227
+ [2.2.0]: https://github.com/flexcompute/tidy3d/compare/v2.1.1...v2.2.0
2228
+ [2.1.1]: https://github.com/flexcompute/tidy3d/compare/v2.1.0...v2.1.1
2229
+ [2.1.0]: https://github.com/flexcompute/tidy3d/compare/v2.0.3...v2.1.0
2230
+ [2.0.3]: https://github.com/flexcompute/tidy3d/compare/v2.0.2...v2.0.3
2231
+ [2.0.2]: https://github.com/flexcompute/tidy3d/compare/v2.0.1...v2.0.2
2232
+ [2.0.1]: https://github.com/flexcompute/tidy3d/compare/v1.10.0...v2.0.1
2233
+ [1.10.0]: https://github.com/flexcompute/tidy3d/compare/v1.9.3...v1.10.0
2234
+ [1.9.3]: https://github.com/flexcompute/tidy3d/compare/v1.9.2...v1.9.3
2235
+ [1.9.2]: https://github.com/flexcompute/tidy3d/compare/v1.9.1...v1.9.2
2236
+ [1.9.1]: https://github.com/flexcompute/tidy3d/compare/v1.9.0...v1.9.1
2237
+ [1.9.0]: https://github.com/flexcompute/tidy3d/compare/v1.8.4...v1.9.0
2238
+ [1.8.4]: https://github.com/flexcompute/tidy3d/compare/v1.8.3...v1.8.4
2239
+ [1.8.3]: https://github.com/flexcompute/tidy3d/compare/v1.8.2...v1.8.3
2240
+ [1.8.2]: https://github.com/flexcompute/tidy3d/compare/v1.8.1...v1.8.2
2241
+ [1.8.1]: https://github.com/flexcompute/tidy3d/compare/v1.8.0...v1.8.1
2242
+ [1.8.0]: https://github.com/flexcompute/tidy3d/compare/v1.7.1...v1.8.0
2243
+ [1.7.1]: https://github.com/flexcompute/tidy3d/compare/v1.7.0...v1.7.1
2244
+ [1.7.0]: https://github.com/flexcompute/tidy3d/compare/v1.6.3...v1.7.0
2245
+ [1.6.3]: https://github.com/flexcompute/tidy3d/compare/v1.6.2...v1.6.3
2246
+ [1.6.2]: https://github.com/flexcompute/tidy3d/compare/v1.6.1...v1.6.2
2247
+ [1.6.1]: https://github.com/flexcompute/tidy3d/compare/v1.6.0...v1.6.1
2248
+ [1.6.0]: https://github.com/flexcompute/tidy3d/compare/v1.5.0...v1.6.0
2249
+ [1.5.0]: https://github.com/flexcompute/tidy3d/compare/v1.4.1...v1.5.0
2250
+ [1.4.1]: https://github.com/flexcompute/tidy3d/compare/v1.4.0...v1.4.1
2251
+ [1.4.0]: https://github.com/flexcompute/tidy3d/compare/v1.3.3...v1.4.0
2252
+ [1.3.3]: https://github.com/flexcompute/tidy3d/compare/v1.3.2...v1.3.3
2253
+ [1.3.2]: https://github.com/flexcompute/tidy3d/compare/v1.3.1...v1.3.2
2254
+ [1.3.1]: https://github.com/flexcompute/tidy3d/compare/v1.3.0...v1.3.1
2255
+ [1.3.0]: https://github.com/flexcompute/tidy3d/compare/v1.2.2...v1.3.0
2256
+ [1.2.2]: https://github.com/flexcompute/tidy3d/compare/v1.2.1...v1.2.2
2257
+ [1.2.1]: https://github.com/flexcompute/tidy3d/compare/v1.2.0...v1.2.1
2258
+ [1.2.0]: https://github.com/flexcompute/tidy3d/compare/v1.1.1...v1.2.0
2259
+ [1.1.1]: https://github.com/flexcompute/tidy3d/compare/v1.1.0...v1.1.1
2260
+ [1.1.0]: https://github.com/flexcompute/tidy3d/compare/v1.0.2...v1.1.0
2261
+ [1.0.2]: https://github.com/flexcompute/tidy3d/compare/v1.0.1...v1.0.2
2262
+ [1.0.1]: https://github.com/flexcompute/tidy3d/compare/v1.0.0...v1.0.1
2263
+ [1.0.0]: https://github.com/flexcompute/tidy3d/compare/v0.2.0...v1.0.0
2264
+ [0.2.0]: https://github.com/flexcompute/tidy3d/compare/0.1.1...v0.2.0
2265
+ [0.1.1]: https://github.com/flexcompute/tidy3d/compare/0.1.0...0.1.1
2266
+ [0.1.0]: https://github.com/flexcompute/tidy3d/releases/tag/0.1.0