tidy3d 2.10.2__tar.gz → 2.11.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 (413) hide show
  1. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/PKG-INFO +8 -3
  2. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/pyproject.toml +55 -63
  3. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/README.md +2 -2
  4. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/__init__.py +35 -8
  5. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/__main__.py +1 -1
  6. tidy3d-2.11.0.dev0/tidy3d/compat.py +31 -0
  7. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/README.md +4 -4
  8. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/apodization.py +23 -22
  9. tidy3d-2.11.0.dev0/tidy3d/components/autograd/__init__.py +42 -0
  10. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/autograd/boxes.py +10 -8
  11. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/autograd/derivative_utils.py +138 -76
  12. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/autograd/field_map.py +13 -12
  13. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/autograd/functions.py +7 -5
  14. tidy3d-2.11.0.dev0/tidy3d/components/autograd/types.py +132 -0
  15. tidy3d-2.11.0.dev0/tidy3d/components/autograd/utils.py +84 -0
  16. tidy3d-2.11.0.dev0/tidy3d/components/base.py +1956 -0
  17. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/base_sim/data/monitor_data.py +2 -3
  18. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/base_sim/data/sim_data.py +36 -31
  19. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/base_sim/monitor.py +14 -11
  20. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/base_sim/simulation.py +121 -62
  21. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/base_sim/source.py +10 -3
  22. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/bc_placement.py +23 -18
  23. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/beam.py +70 -62
  24. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/boundary.py +251 -163
  25. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/data_array.py +141 -93
  26. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/dataset.py +61 -60
  27. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/index.py +5 -3
  28. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/monitor_data.py +486 -264
  29. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/sim_data.py +39 -38
  30. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/unstructured/base.py +188 -122
  31. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/unstructured/tetrahedral.py +53 -29
  32. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/unstructured/triangular.py +38 -27
  33. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/utils.py +12 -4
  34. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/validators.py +22 -15
  35. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/zbf.py +20 -20
  36. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/dispersion_fitter.py +85 -52
  37. tidy3d-2.11.0.dev0/tidy3d/components/docstrings.py +301 -0
  38. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/eme/data/dataset.py +160 -56
  39. tidy3d-2.11.0.dev0/tidy3d/components/eme/data/monitor_data.py +162 -0
  40. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/eme/data/sim_data.py +127 -21
  41. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/eme/grid.py +100 -73
  42. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/eme/monitor.py +158 -31
  43. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/eme/simulation.py +280 -142
  44. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/eme/sweep.py +103 -20
  45. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/field_projection.py +53 -49
  46. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/file_util.py +5 -3
  47. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/frequencies.py +17 -16
  48. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/frequency_extrapolation.py +18 -15
  49. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/geometry/base.py +691 -218
  50. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/geometry/bound_ops.py +4 -1
  51. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/geometry/mesh.py +27 -21
  52. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/geometry/polyslab.py +94 -97
  53. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/geometry/primitives.py +333 -54
  54. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/geometry/triangulation.py +9 -5
  55. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/geometry/utils.py +72 -33
  56. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/geometry/utils_2d.py +80 -9
  57. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/grid/corner_finder.py +17 -13
  58. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/grid/grid.py +123 -41
  59. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/grid/grid_spec.py +317 -227
  60. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/grid/mesher.py +42 -38
  61. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/index.py +22 -20
  62. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/lumped_element.py +121 -127
  63. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/material/multi_physics.py +9 -9
  64. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/material/tcad/charge.py +74 -42
  65. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/material/tcad/heat.py +39 -32
  66. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/medium.py +988 -845
  67. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/base.py +6 -1
  68. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/data/dataset.py +5 -8
  69. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/data/monitor_data.py +38 -28
  70. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/formulas/circuit_parameters.py +5 -1
  71. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/impedance_calculator.py +26 -20
  72. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/mode_spec.py +55 -19
  73. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/monitor.py +4 -4
  74. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/factory.py +21 -19
  75. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/integrals/auto.py +7 -3
  76. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/integrals/base.py +7 -5
  77. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/integrals/current.py +21 -14
  78. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/integrals/voltage.py +10 -8
  79. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/mode_plane_analyzer.py +10 -6
  80. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/specs/base.py +30 -19
  81. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/specs/current.py +24 -15
  82. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/specs/impedance.py +12 -11
  83. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/specs/voltage.py +10 -6
  84. tidy3d-2.11.0.dev0/tidy3d/components/microwave/time.py +350 -0
  85. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/mode/data/sim_data.py +13 -9
  86. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/mode/derivatives.py +66 -14
  87. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/mode/mode_solver.py +209 -166
  88. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/mode/simulation.py +101 -60
  89. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/mode/solver.py +121 -87
  90. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/mode/transforms.py +21 -3
  91. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/mode_spec.py +280 -129
  92. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/monitor.py +413 -209
  93. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/nonlinear.py +40 -32
  94. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/parameter_perturbation.py +209 -201
  95. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/run_time_spec.py +3 -4
  96. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/scene.py +160 -112
  97. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/simulation.py +645 -474
  98. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/source/base.py +17 -13
  99. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/source/current.py +43 -14
  100. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/source/field.py +73 -74
  101. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/source/frame.py +2 -2
  102. tidy3d-2.11.0.dev0/tidy3d/components/source/freq_range.py +230 -0
  103. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/source/time.py +108 -50
  104. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/spice/analysis/ac.py +6 -6
  105. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/spice/analysis/dc.py +10 -10
  106. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/spice/sources/ac.py +12 -11
  107. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/spice/sources/dc.py +20 -17
  108. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/structure.py +109 -68
  109. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/subpixel_spec.py +30 -28
  110. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/analysis/heat_simulation_type.py +7 -7
  111. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/bandgap.py +8 -11
  112. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/bandgap_energy.py +9 -12
  113. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/boundary/charge.py +5 -7
  114. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/boundary/heat.py +24 -19
  115. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/boundary/specification.py +3 -3
  116. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/data/monitor_data/abstract.py +12 -16
  117. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/data/monitor_data/charge.py +58 -76
  118. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/data/monitor_data/heat.py +13 -14
  119. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/data/monitor_data/mesh.py +5 -5
  120. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/data/sim_data.py +95 -46
  121. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/doping.py +63 -22
  122. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/effective_DOS.py +17 -17
  123. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/generation_recombination.py +70 -55
  124. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/grid.py +85 -76
  125. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/mesher.py +9 -5
  126. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/mobility.py +17 -22
  127. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/monitors/abstract.py +20 -5
  128. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/monitors/charge.py +22 -7
  129. tidy3d-2.11.0.dev0/tidy3d/components/tcad/monitors/heat.py +38 -0
  130. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/monitors/mesh.py +9 -5
  131. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/simulation/heat.py +12 -7
  132. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/simulation/heat_charge.py +280 -246
  133. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/source/abstract.py +9 -5
  134. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/source/heat.py +8 -7
  135. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/time.py +18 -10
  136. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/time_modulation.py +40 -41
  137. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/transformation.py +19 -13
  138. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/types/__init__.py +0 -12
  139. tidy3d-2.11.0.dev0/tidy3d/components/types/base.py +321 -0
  140. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/types/monitor.py +4 -0
  141. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/types/monitor_data.py +2 -0
  142. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/types/third_party.py +6 -2
  143. tidy3d-2.11.0.dev0/tidy3d/components/types/time.py +29 -0
  144. tidy3d-2.11.0.dev0/tidy3d/components/types/utils.py +33 -0
  145. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/validators.py +183 -138
  146. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/viz/__init__.py +14 -3
  147. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/viz/axes_utils.py +31 -10
  148. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/viz/descartes.py +14 -10
  149. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/viz/plot_params.py +26 -20
  150. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/viz/plot_sim_3d.py +13 -3
  151. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/viz/styles.py +13 -5
  152. tidy3d-2.11.0.dev0/tidy3d/components/viz/visualization_spec.py +87 -0
  153. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/config/README.md +18 -3
  154. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/config/__init__.py +20 -3
  155. tidy3d-2.11.0.dev0/tidy3d/config/deprecations.py +97 -0
  156. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/config/legacy.py +8 -3
  157. tidy3d-2.11.0.dev0/tidy3d/config/loader.py +992 -0
  158. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/config/manager.py +32 -66
  159. tidy3d-2.11.0.dev0/tidy3d/config/migrations.py +272 -0
  160. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/config/profiles.py +7 -0
  161. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/config/registry.py +4 -1
  162. tidy3d-2.11.0.dev0/tidy3d/config/schema_utils.py +30 -0
  163. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/config/sections.py +39 -4
  164. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/config/serializer.py +6 -3
  165. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/constants.py +1 -1
  166. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/exceptions.py +4 -1
  167. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/log.py +63 -18
  168. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/material_library/material_library.py +26 -32
  169. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/material_library/material_reference.py +8 -6
  170. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/material_library/parametric_materials.py +27 -28
  171. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/material_library/util.py +4 -2
  172. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/packaging.py +28 -22
  173. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/differential_operators.py +6 -2
  174. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/functions.py +27 -8
  175. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/invdes/filters.py +34 -23
  176. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/invdes/misc.py +5 -1
  177. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/invdes/parametrizations.py +37 -18
  178. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/invdes/penalties.py +40 -23
  179. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/invdes/projections.py +6 -2
  180. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/invdes/symmetries.py +4 -2
  181. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/primitives/interpolate.py +18 -7
  182. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/primitives/misc.py +27 -12
  183. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/utilities.py +68 -55
  184. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/design/README.md +2 -0
  185. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/design/design.py +43 -33
  186. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/design/method.py +161 -111
  187. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/design/parameter.py +40 -31
  188. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/design/result.py +42 -39
  189. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/dispersion/fit.py +57 -46
  190. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/dispersion/fit_fast.py +8 -4
  191. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/dispersion/web.py +31 -29
  192. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/expressions/__init__.py +23 -1
  193. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/expressions/base.py +11 -13
  194. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/expressions/functions.py +11 -8
  195. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/expressions/metrics.py +15 -12
  196. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/expressions/operators.py +15 -13
  197. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/expressions/types.py +14 -18
  198. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/expressions/variables.py +3 -4
  199. tidy3d-2.11.0.dev0/tidy3d/plugins/invdes/__init__.py +50 -0
  200. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/invdes/base.py +3 -3
  201. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/invdes/design.py +56 -46
  202. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/invdes/initialization.py +39 -33
  203. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/invdes/optimizer.py +28 -30
  204. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/invdes/penalty.py +12 -12
  205. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/invdes/region.py +37 -35
  206. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/invdes/result.py +21 -20
  207. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/invdes/transformation.py +16 -12
  208. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/invdes/utils.py +1 -3
  209. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/invdes/validators.py +18 -15
  210. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/klayout/drc/drc.py +33 -22
  211. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/klayout/drc/results.py +14 -11
  212. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/klayout/util.py +4 -1
  213. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/array_factor.py +86 -56
  214. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/lobe_measurer.py +27 -22
  215. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/polyslab/polyslab.py +5 -1
  216. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/pytorch/wrapper.py +12 -5
  217. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/resonance/resonance.py +28 -14
  218. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/__init__.py +3 -1
  219. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/analysis/antenna.py +8 -4
  220. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/analysis/modal.py +16 -5
  221. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/analysis/terminal.py +24 -16
  222. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/component_modelers/base.py +50 -40
  223. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/component_modelers/modal.py +82 -80
  224. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/component_modelers/terminal.py +90 -46
  225. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/data/base.py +15 -13
  226. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/data/modal.py +7 -4
  227. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/data/terminal.py +68 -27
  228. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/ports/base.py +5 -5
  229. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/ports/base_lumped.py +13 -10
  230. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/ports/base_terminal.py +12 -8
  231. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/ports/coaxial_lumped.py +41 -36
  232. tidy3d-2.11.0.dev0/tidy3d/plugins/smatrix/ports/modal.py +272 -0
  233. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/ports/rectangular_lumped.py +44 -29
  234. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/ports/wave.py +56 -45
  235. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/run.py +44 -6
  236. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/types.py +9 -5
  237. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/utils.py +37 -30
  238. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/waveguide/rectangular_dielectric.py +121 -116
  239. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/rf.py +12 -0
  240. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/updater.py +49 -40
  241. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/version.py +1 -1
  242. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/__init__.py +1 -1
  243. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/asynchronous.py +11 -5
  244. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/autograd/autograd.py +406 -62
  245. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/autograd/backward.py +200 -64
  246. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/autograd/engine.py +1 -1
  247. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/autograd/forward.py +5 -2
  248. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/autograd/io_utils.py +23 -17
  249. tidy3d-2.11.0.dev0/tidy3d/web/api/autograd/types.py +47 -0
  250. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/autograd/utils.py +7 -4
  251. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/connect_util.py +4 -1
  252. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/container.py +260 -135
  253. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/material_fitter.py +16 -5
  254. tidy3d-2.11.0.dev0/tidy3d/web/api/material_library.py +64 -0
  255. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/mode.py +24 -18
  256. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/run.py +19 -16
  257. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/tidy3d_stub.py +7 -5
  258. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/webapi.py +107 -45
  259. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cache.py +88 -26
  260. tidy3d-2.11.0.dev0/tidy3d/web/cli/app.py +45 -0
  261. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cli/cache.py +7 -2
  262. tidy3d-2.11.0.dev0/tidy3d/web/cli/config.py +516 -0
  263. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cli/develop/documentation.py +6 -3
  264. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cli/develop/install.py +10 -10
  265. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/account.py +2 -2
  266. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/core_config.py +4 -2
  267. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/exceptions.py +4 -1
  268. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/file_util.py +1 -1
  269. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/http_util.py +7 -4
  270. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/s3utils.py +8 -4
  271. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/stub.py +4 -1
  272. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/task_core.py +60 -48
  273. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/task_info.py +66 -70
  274. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/types.py +2 -2
  275. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/tests/conftest.py +4 -1
  276. tidy3d-2.10.2/tidy3d/compat.py +0 -26
  277. tidy3d-2.10.2/tidy3d/components/autograd/__init__.py +0 -31
  278. tidy3d-2.10.2/tidy3d/components/autograd/types.py +0 -55
  279. tidy3d-2.10.2/tidy3d/components/autograd/utils.py +0 -55
  280. tidy3d-2.10.2/tidy3d/components/base.py +0 -1529
  281. tidy3d-2.10.2/tidy3d/components/eme/data/monitor_data.py +0 -60
  282. tidy3d-2.10.2/tidy3d/components/tcad/monitors/heat.py +0 -21
  283. tidy3d-2.10.2/tidy3d/components/types/base.py +0 -264
  284. tidy3d-2.10.2/tidy3d/components/types/utils.py +0 -14
  285. tidy3d-2.10.2/tidy3d/components/viz/visualization_spec.py +0 -62
  286. tidy3d-2.10.2/tidy3d/config/loader.py +0 -438
  287. tidy3d-2.10.2/tidy3d/plugins/invdes/__init__.py +0 -29
  288. tidy3d-2.10.2/tidy3d/plugins/smatrix/ports/modal.py +0 -58
  289. tidy3d-2.10.2/tidy3d/web/api/material_libray.py +0 -44
  290. tidy3d-2.10.2/tidy3d/web/cli/app.py +0 -409
  291. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/LICENSE +0 -0
  292. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/README.md +0 -0
  293. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/_runtime.py +0 -0
  294. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/__init__.py +0 -0
  295. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/base_sim/__init__.py +0 -0
  296. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/base_sim/data/__init__.py +0 -0
  297. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/README.md +0 -0
  298. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/__init__.py +0 -0
  299. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/data/unstructured/__init__.py +0 -0
  300. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/eme/__init__.py +0 -0
  301. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/eme/data/__init__.py +0 -0
  302. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/geometry/__init__.py +0 -0
  303. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/geometry/float_utils.py +0 -0
  304. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/grid/__init__.py +0 -0
  305. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/material/README.md +0 -0
  306. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/material/__init__.py +0 -0
  307. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/material/solver_types.py +0 -0
  308. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/material/tcad/__init__.py +0 -0
  309. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/material/types.py +0 -0
  310. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/__init__.py +0 -0
  311. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/data/__init__.py +0 -0
  312. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/data/data_array.py +0 -0
  313. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/formulas/__init__.py +0 -0
  314. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/__init__.py +0 -0
  315. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/integrals/__init__.py +0 -0
  316. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/specs/__init__.py +0 -0
  317. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/types.py +0 -0
  318. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/microwave/path_integrals/viz.py +0 -0
  319. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/mode/LICENSE +0 -0
  320. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/mode/__init__.py +0 -0
  321. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/mode/data/__init__.py +0 -0
  322. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/source/__init__.py +0 -0
  323. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/source/utils.py +0 -0
  324. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/spice/__init__.py +0 -0
  325. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/spice/analysis/__init__.py +0 -0
  326. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/spice/sources/__init__.py +0 -0
  327. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/spice/sources/types.py +0 -0
  328. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/spice/types.py +0 -0
  329. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/__init__.py +0 -0
  330. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/analysis/__init__.py +0 -0
  331. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/boundary/__init__.py +0 -0
  332. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/boundary/abstract.py +0 -0
  333. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/data/__init__.py +0 -0
  334. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/data/monitor_data/__init__.py +0 -0
  335. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/data/types.py +0 -0
  336. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/monitors/__init__.py +0 -0
  337. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/simulation/__init__.py +0 -0
  338. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/source/__init__.py +0 -0
  339. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/source/coupled.py +0 -0
  340. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/types.py +0 -0
  341. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/tcad/viz.py +0 -0
  342. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/types/mode_spec.py +0 -0
  343. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/types/simulation.py +0 -0
  344. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/types/workflow.py +0 -0
  345. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/viz/flex_color_palettes.py +0 -0
  346. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/components/viz/flex_style.py +0 -0
  347. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/material_library/__init__.py +0 -0
  348. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/__init__.py +0 -0
  349. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/README.md +0 -0
  350. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/__init__.py +0 -0
  351. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/constants.py +0 -0
  352. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/invdes/__init__.py +0 -0
  353. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/primitives/__init__.py +0 -0
  354. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/autograd/types.py +0 -0
  355. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/design/__init__.py +0 -0
  356. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/dispersion/__init__.py +0 -0
  357. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/dispersion/fit_web.py +0 -0
  358. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/expressions/README.md +0 -0
  359. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/invdes/README.md +0 -0
  360. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/klayout/README.md +0 -0
  361. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/klayout/__init__.py +0 -0
  362. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/klayout/drc/README.md +0 -0
  363. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/klayout/drc/__init__.py +0 -0
  364. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/klayout/drc/defaults.py +0 -0
  365. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/__init__.py +0 -0
  366. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/auto_path_integrals.py +0 -0
  367. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/custom_path_integrals.py +0 -0
  368. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/impedance_calculator.py +0 -0
  369. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/models/__init__.py +0 -0
  370. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/models/coupled_microstrip.py +0 -0
  371. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/models/microstrip.py +0 -0
  372. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/path_integrals.py +0 -0
  373. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/rf_material_library.py +0 -0
  374. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/rf_material_reference.py +0 -0
  375. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/microwave/viz.py +0 -0
  376. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/mode/LICENSE +0 -0
  377. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/mode/README.md +0 -0
  378. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/mode/__init__.py +0 -0
  379. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/mode/mode_solver.py +0 -0
  380. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/mode/web.py +0 -0
  381. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/polyslab/__init__.py +0 -0
  382. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/pytorch/README.md +0 -0
  383. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/pytorch/__init__.py +0 -0
  384. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/resonance/__init__.py +0 -0
  385. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/analysis/__init__.py +0 -0
  386. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/component_modelers/__init__.py +0 -0
  387. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/component_modelers/types.py +0 -0
  388. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/data/__init__.py +0 -0
  389. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/data/data_array.py +0 -0
  390. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/data/types.py +0 -0
  391. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/ports/__init__.py +0 -0
  392. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/smatrix/ports/types.py +0 -0
  393. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/plugins/waveguide/__init__.py +0 -0
  394. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/style.mplstyle +0 -0
  395. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/__init__.py +0 -0
  396. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/autograd/__init__.py +0 -0
  397. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/autograd/constants.py +0 -0
  398. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/cacert.pem +0 -0
  399. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/api/states.py +0 -0
  400. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cli/__init__.py +0 -0
  401. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cli/constants.py +0 -0
  402. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cli/develop/__init__.py +0 -0
  403. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cli/develop/index.py +0 -0
  404. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cli/develop/packaging.py +0 -0
  405. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cli/develop/tests.py +0 -0
  406. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cli/develop/utils.py +0 -0
  407. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/cli/readme.md +0 -0
  408. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/common.py +0 -0
  409. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/__init__.py +0 -0
  410. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/cache.py +0 -0
  411. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/constants.py +0 -0
  412. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/core/environment.py +0 -0
  413. {tidy3d-2.10.2 → tidy3d-2.11.0.dev0}/tidy3d/web/environment.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tidy3d
3
- Version: 2.10.2
3
+ Version: 2.11.0.dev0
4
4
  Summary: A fast FDTD solver
5
5
  License: LGPLv2+
6
6
  License-File: LICENSE
@@ -37,6 +37,7 @@ Requires-Dist: coverage (>=7.13.1,<8.0.0) ; extra == "dev"
37
37
  Requires-Dist: dask (>=2025.12.0,<2026.0.0)
38
38
  Requires-Dist: diff-cover (>=10.1.0,<11.0.0) ; extra == "dev"
39
39
  Requires-Dist: dill (>=0.4.0,<0.5.0) ; extra == "dev"
40
+ Requires-Dist: filelock (>=3.20.1,<4.0.0)
40
41
  Requires-Dist: gdstk (>=0.9.49,<0.10.0) ; extra == "dev" or extra == "docs" or extra == "gdstk"
41
42
  Requires-Dist: grcwa (>=0.1.2,<0.2.0) ; extra == "dev" or extra == "docs"
42
43
  Requires-Dist: h5netcdf (==1.0.2)
@@ -46,6 +47,7 @@ Requires-Dist: ipython (>=8.38.0,<9.0.0) ; extra == "dev" or extra == "dev" or e
46
47
  Requires-Dist: jinja2 (>=3.1.2,<4.0.0) ; extra == "dev" or extra == "docs"
47
48
  Requires-Dist: joblib (>=1.5.3,<2.0.0)
48
49
  Requires-Dist: jupyter (>=1.1.1,<2.0.0) ; extra == "dev" or extra == "docs"
50
+ Requires-Dist: libcst (>=1.5.0,<2.0.0) ; extra == "dev"
49
51
  Requires-Dist: matplotlib (>=3.10.0,<4.0.0)
50
52
  Requires-Dist: memory_profiler (>=0.61.0,<0.62.0) ; extra == "dev"
51
53
  Requires-Dist: mypy (==1.13.0) ; extra == "dev"
@@ -60,7 +62,8 @@ Requires-Dist: optax (>=0.2.2,<0.3.0) ; extra == "dev" or extra == "docs"
60
62
  Requires-Dist: pandas (>=2.2,<3.0)
61
63
  Requires-Dist: pre-commit (>=4,<5) ; extra == "dev" or extra == "tests"
62
64
  Requires-Dist: psutil (>=7.2.1,<8.0.0) ; extra == "dev" or extra == "tests"
63
- Requires-Dist: pydantic (>=2.0,<3.0)
65
+ Requires-Dist: pydantic (>=2.9,<3)
66
+ Requires-Dist: pydantic-settings (>=2.10.0,<3.0.0)
64
67
  Requires-Dist: pydata-sphinx-theme (>=0.13.3,<0.16.0) ; extra == "dev" or extra == "docs"
65
68
  Requires-Dist: pygad (==3.3.1) ; extra == "dev" or extra == "design"
66
69
  Requires-Dist: pyjwt (>=2.10.1,<3.0.0)
@@ -70,6 +73,7 @@ Requires-Dist: pyswarms (>=1.3.0,<2.0.0) ; extra == "dev" or extra == "design"
70
73
  Requires-Dist: pytest (>=8.1,<10.0.0) ; extra == "dev" or extra == "tests"
71
74
  Requires-Dist: pytest-cov (>=6.0.0,<7.0.0) ; extra == "dev" or extra == "tests"
72
75
  Requires-Dist: pytest-env (>=1.1.5,<2.0.0) ; extra == "dev" or extra == "tests"
76
+ Requires-Dist: pytest-testmon (>=2.1.3,<3.0.0) ; extra == "dev" or extra == "tests"
73
77
  Requires-Dist: pytest-timeout (>=2.4.0,<3.0.0) ; extra == "dev" or extra == "tests"
74
78
  Requires-Dist: pytest-xdist (>=3.6.1,<4.0.0) ; extra == "dev" or extra == "tests"
75
79
  Requires-Dist: requests (>=2.31.0,<3.0.0)
@@ -91,12 +95,13 @@ Requires-Dist: sphinx-notfound-page (>=1.1.0,<2.0.0) ; extra == "dev" or extra =
91
95
  Requires-Dist: sphinx-sitemap (>=2.5.1,<3.0.0) ; extra == "dev" or extra == "docs"
92
96
  Requires-Dist: sphinx-tabs (>=3.4.7,<4.0.0) ; extra == "dev" or extra == "docs"
93
97
  Requires-Dist: sphinxemoji (>=0.3.2,<0.4.0) ; extra == "dev" or extra == "docs"
94
- Requires-Dist: tidy3d-extras (==2.10.2) ; extra == "extras"
98
+ Requires-Dist: tidy3d-extras (==2.11.0.dev0) ; extra == "extras"
95
99
  Requires-Dist: tmm (>=0.2.0,<0.3.0) ; extra == "dev" or extra == "docs"
96
100
  Requires-Dist: toml (>=0.10.2,<0.11.0)
97
101
  Requires-Dist: tomlkit (>=0.13.2,<0.14.0)
98
102
  Requires-Dist: torch (>=2.2.0,<3.0.0) ; (sys_platform != "darwin") and (extra == "dev" or extra == "pytorch")
99
103
  Requires-Dist: torch (>=2.2.0,<3.0.0) ; (sys_platform == "darwin") and (extra == "dev" or extra == "pytorch")
104
+ Requires-Dist: towncrier (>=25.8.0,<26.0.0) ; extra == "dev"
100
105
  Requires-Dist: tox (>=4.33.0,<5.0.0) ; extra == "dev"
101
106
  Requires-Dist: trimesh (>=4.6,<5.0.0) ; extra == "dev" or extra == "tests" or extra == "trimesh" or extra == "heatcharge"
102
107
  Requires-Dist: typing-extensions (>=4.15.0,<5.0.0)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "tidy3d"
3
- version = "2.10.2"
3
+ version = "2.11.0.dev0"
4
4
  description = "A fast FDTD solver"
5
5
  authors = ["Tyler Hughes <tyler@flexcompute.com>"]
6
6
  license = "LGPLv2+"
@@ -33,7 +33,8 @@ numpy = ">=2.2.6,<2.5.0"
33
33
  matplotlib = "^3.10.0"
34
34
  shapely = "^2.0"
35
35
  pandas = "^2.2"
36
- pydantic = "^2.0"
36
+ pydantic = ">=2.9,<3"
37
+ pydantic-settings = "^2.10.0"
37
38
  PyYAML = "^6.0.3"
38
39
  dask = "^2025.12.0"
39
40
  toml = "^0.10.2"
@@ -48,6 +49,7 @@ click = "^8.1.0"
48
49
  responses = "^0.25.8"
49
50
  joblib = "^1.5.3"
50
51
  typing-extensions = "^4.15.0"
52
+ filelock = "^3.20.1"
51
53
  ### END NOT CORE
52
54
 
53
55
  ### Optional dependencies ###
@@ -65,10 +67,13 @@ pytest-timeout = { version = "^2.4.0", optional = true }
65
67
  pytest-xdist = "^3.6.1"
66
68
  pytest-cov = "^6.0.0"
67
69
  pytest-env = "^1.1.5"
70
+ pytest-testmon = { version = "^2.1.3", optional = true }
68
71
  tox = { version = "^4.33.0", optional = true }
72
+ towncrier = { version = "^25.8.0", optional = true }
69
73
  diff-cover = { version = "^10.1.0", optional = true }
70
74
  zizmor = { version = "^1.20.0", optional = true }
71
75
  mypy = { version = "1.13.0", optional = true }
76
+ libcst = { version = "^1.5.0", optional = true }
72
77
 
73
78
  # gdstk
74
79
  gdstk = { version = ">=0.9.49,<0.10.0", optional = true }
@@ -119,7 +124,7 @@ vtk = { version = ">=9.2.6,<10.0.0", optional = true }
119
124
  sphinxemoji = { version = "^0.3.2", optional = true }
120
125
  cma = { version = "^4.4.1", optional = true }
121
126
  openpyxl = { version = "^3.1.5", optional = true }
122
- tidy3d-extras = { version = "2.10.2", optional = true }
127
+ tidy3d-extras = { version = "2.11.0.dev0", optional = true }
123
128
 
124
129
  [tool.poetry.extras]
125
130
  dev = [
@@ -153,6 +158,7 @@ dev = [
153
158
  'pytest-xdist',
154
159
  'pytest-env',
155
160
  'pytest-cov',
161
+ 'pytest-testmon',
156
162
  'rtree',
157
163
  'ruff',
158
164
  'sax',
@@ -168,6 +174,7 @@ dev = [
168
174
  'sphinxemoji',
169
175
  'tmm',
170
176
  'tox',
177
+ 'towncrier',
171
178
  'trimesh',
172
179
  'scikit-rf',
173
180
  'vtk',
@@ -175,6 +182,7 @@ dev = [
175
182
  'diff-cover',
176
183
  'openpyxl',
177
184
  'zizmor',
185
+ 'libcst',
178
186
  ]
179
187
  tests = [
180
188
  'psutil',
@@ -185,6 +193,7 @@ tests = [
185
193
  'pytest-xdist',
186
194
  'pytest-env',
187
195
  'pytest-cov',
196
+ 'pytest-testmon',
188
197
  'trimesh'
189
198
  ]
190
199
  docs = [
@@ -246,6 +255,43 @@ name = "codeartifact"
246
255
  url = "https://flexcompute-625554095313.d.codeartifact.us-east-1.amazonaws.com/pypi/pypi-releases/simple/"
247
256
  priority = "supplemental"
248
257
 
258
+ [tool.towncrier]
259
+ directory = "changelog.d"
260
+ filename = "CHANGELOG.md"
261
+ start_string = "<!-- towncrier release notes start -->\n"
262
+ template = "changelog.d/template.md"
263
+ title_format = "## [{version}] - {project_date}"
264
+
265
+ [[tool.towncrier.type]]
266
+ directory = "added"
267
+ name = "Added"
268
+ showcontent = true
269
+
270
+ [[tool.towncrier.type]]
271
+ directory = "changed"
272
+ name = "Changed"
273
+ showcontent = true
274
+
275
+ [[tool.towncrier.type]]
276
+ directory = "fixed"
277
+ name = "Fixed"
278
+ showcontent = true
279
+
280
+ [[tool.towncrier.type]]
281
+ directory = "removed"
282
+ name = "Removed"
283
+ showcontent = true
284
+
285
+ [[tool.towncrier.type]]
286
+ directory = "breaking"
287
+ name = "Breaking Changes"
288
+ showcontent = true
289
+
290
+ [[tool.towncrier.type]]
291
+ directory = "planned_deprecation"
292
+ name = "Planned Deprecation"
293
+ showcontent = true
294
+
249
295
  [build-system]
250
296
  requires = ["poetry-core>=1.0.0"]
251
297
  build-backend = "poetry.core.masonry.api"
@@ -309,9 +355,13 @@ banned-module-level-imports = ["scipy", "matplotlib"]
309
355
 
310
356
  [tool.pytest.ini_options]
311
357
  # TODO: remove --assert=plain when https://github.com/scipy/scipy/issues/22236 is resolved
312
- addopts = "--cov=tidy3d --doctest-modules -n auto --dist worksteal --assert=plain -m 'not numerical and not perf'"
358
+ addopts = """
359
+ --cov=tidy3d --doctest-modules -n auto --dist worksteal --assert=plain -m 'not numerical and not perf and not generate_profile and not performance_profile'
360
+ """
313
361
  markers = [
314
362
  "numerical: marks numerical tests for adjoint gradients that require running simulations (deselect with '-m \"not numerical\"')",
363
+ "generate_profile: regenerate fixture data required by the performance tests (select with '-m \"generate_profile\"')",
364
+ "performance_profile: enable CPU and memory profiling based on data generated with generate_profile (select with '-m \"performance_profile\"')",
315
365
  "perf: marks tests which test the runtime of operations (deselect with '-m \"not perf\"')",
316
366
  "slow: marks tests as slow (deselect with -m 'not slow')",
317
367
  ]
@@ -334,82 +384,24 @@ python_files = "*.py"
334
384
  [tool.mypy]
335
385
  python_version = "3.10"
336
386
  files = [
337
- "tidy3d/web",
338
- "tidy3d/config",
339
- "tidy3d/material_library",
340
- "tidy3d/components/geometry"
387
+ "tidy3d",
341
388
  ]
342
389
  ignore_missing_imports = true
343
390
  follow_imports = "skip"
344
391
  disallow_untyped_defs = true
345
392
  disable_error_code = [
346
- "abstract",
347
- "annotation-unchecked",
348
393
  "arg-type",
349
- "assert-type",
350
394
  "assignment",
351
395
  "attr-defined",
352
- "await-not-async",
353
396
  "call-arg",
354
397
  "call-overload",
355
- "comparison-overlap",
356
- "dict-item",
357
- "empty-body",
358
- "exit-return",
359
- "explicit-override",
360
- "func-returns-value",
361
- "has-type",
362
- "ignore-without-code",
363
- "import",
364
- "import-not-found",
365
398
  "import-untyped",
366
399
  "index",
367
- "list-item",
368
- "literal-required",
369
- "method-assign",
370
400
  "misc",
371
- "mutable-override",
372
- "name-defined",
373
- "name-match",
374
- "narrowed-type-not-subtype",
375
- "no-any-return",
376
- "no-any-unimported",
377
- "no-overload-impl",
378
- "no-redef",
379
- "no-untyped-call",
380
401
  "operator",
381
- "overload-cannot-match",
382
- "overload-overlap",
383
402
  "override",
384
- "possibly-undefined",
385
- "prop-decorator",
386
- "redundant-cast",
387
- "redundant-expr",
388
- "redundant-self",
389
- "return",
390
403
  "return-value",
391
- "safe-super",
392
- "str-bytes-safe",
393
- "str-format",
394
- "syntax",
395
- "top-level-await",
396
- "truthy-bool",
397
- "truthy-function",
398
- "truthy-iterable",
399
- "type-abstract",
400
- "type-arg",
401
- "type-var",
402
- "typeddict-item",
403
- "typeddict-readonly-mutated",
404
- "typeddict-unknown-key",
405
- "unimported-reveal",
406
404
  "union-attr",
407
- "unreachable",
408
- "unused-awaitable",
409
- "unused-coroutine",
410
- "unused-ignore",
411
- "used-before-def",
412
- "valid-newtype",
413
405
  "valid-type",
414
406
  "var-annotated",
415
407
  ]
@@ -26,11 +26,11 @@ This makes things easy to reason about and keeps the client code simple.
26
26
 
27
27
  #### Pydantic
28
28
 
29
- We leverage the [`pydantic`](https://pydantic-docs.helpmanual.io) package to define these components, which has the following benefits:
29
+ We leverage the [`pydantic`](https://docs.pydantic.dev/latest/) package to define these components, which has the following benefits:
30
30
  - Less boilerplate code, including pre-processing, writing `__init__` and other methods, the code is easier to read and edit.
31
31
  - `pydantic` provides methods for checking types validating arguments so we can catch incorrect .json files before trying to run them.
32
32
  - It is very simple to export json files and schema definitions, which makes life easy when we change anything in the code.
33
- - Many more advantages as described [here](https://pydantic-docs.helpmanual.io/#rationale).
33
+ - Many more advantages as described [here](https://docs.pydantic.dev/latest/why/).
34
34
 
35
35
 
36
36
  ### Plugins
@@ -196,6 +196,8 @@ from .components.data.data_array import (
196
196
  FieldProjectionKSpaceDataArray,
197
197
  FluxDataArray,
198
198
  FluxTimeDataArray,
199
+ FreqDataArray,
200
+ FreqModeDataArray,
199
201
  GroupIndexDataArray,
200
202
  HeatDataArray,
201
203
  IndexedDataArray,
@@ -226,6 +228,7 @@ from .components.data.monitor_data import (
226
228
  DiffractionData,
227
229
  DirectivityData,
228
230
  FieldData,
231
+ FieldOverlapData,
229
232
  FieldProjectionAngleData,
230
233
  FieldProjectionCartesianData,
231
234
  FieldProjectionKSpaceData,
@@ -277,7 +280,14 @@ from .components.field_projection import FieldProjector
277
280
  from .components.frequencies import FreqRange, FrequencyUtils, frequencies, wavelengths
278
281
 
279
282
  # geometry
280
- from .components.geometry.base import Box, ClipOperation, Geometry, GeometryGroup, Transformed
283
+ from .components.geometry.base import (
284
+ Box,
285
+ ClipOperation,
286
+ Geometry,
287
+ GeometryArray,
288
+ GeometryGroup,
289
+ Transformed,
290
+ )
281
291
  from .components.geometry.mesh import TriangleMesh
282
292
  from .components.geometry.polyslab import PolySlab
283
293
  from .components.geometry.primitives import Cylinder, Sphere
@@ -338,6 +348,14 @@ from .components.medium import (
338
348
  SurfaceImpedanceFitterParam,
339
349
  medium_from_nk,
340
350
  )
351
+
352
+ # sources
353
+ from .components.microwave.time import (
354
+ BasebandCustomSourceTime,
355
+ BasebandGaussianPulse,
356
+ BasebandRectangularPulse,
357
+ BasebandStep,
358
+ )
341
359
  from .components.mode.data.sim_data import ModeSimulationData
342
360
 
343
361
  # Mode
@@ -355,6 +373,7 @@ from .components.mode_spec import (
355
373
 
356
374
  # monitors
357
375
  from .components.monitor import (
376
+ AstigmaticGaussianOverlapMonitor,
358
377
  AuxFieldTimeMonitor,
359
378
  DiffractionMonitor,
360
379
  DirectivityMonitor,
@@ -366,6 +385,7 @@ from .components.monitor import (
366
385
  FieldTimeMonitor,
367
386
  FluxMonitor,
368
387
  FluxTimeMonitor,
388
+ GaussianOverlapMonitor,
369
389
  MediumMonitor,
370
390
  ModeMonitor,
371
391
  ModeSolverMonitor,
@@ -395,7 +415,6 @@ from .components.parameter_perturbation import (
395
415
  # run time spec
396
416
  from .components.run_time_spec import RunTimeSpec
397
417
 
398
- # scene
399
418
  # scene
400
419
  from .components.scene import Scene
401
420
 
@@ -420,8 +439,6 @@ from .components.source.field import (
420
439
  from .components.source.frame import (
421
440
  PECFrame,
422
441
  )
423
-
424
- # sources
425
442
  from .components.source.time import (
426
443
  BroadbandPulse,
427
444
  ContinuousWave,
@@ -484,9 +501,10 @@ def set_logging_level(level: str) -> None:
484
501
 
485
502
  log.info(f"Using client version: {__version__}")
486
503
 
487
- Transformed.update_forward_refs()
488
- ClipOperation.update_forward_refs()
489
- GeometryGroup.update_forward_refs()
504
+ Transformed.model_rebuild()
505
+ ClipOperation.model_rebuild()
506
+ GeometryGroup.model_rebuild()
507
+ GeometryArray.model_rebuild()
490
508
 
491
509
  # Backwards compatibility: Remove 2.11 renamed integral classes
492
510
  VoltageIntegralAxisAligned = AxisAlignedVoltageIntegral
@@ -518,6 +536,7 @@ __all__ = [
518
536
  "ApodizationSpec",
519
537
  "AstigmaticGaussianBeam",
520
538
  "AstigmaticGaussianBeamProfile",
539
+ "AstigmaticGaussianOverlapMonitor",
521
540
  "AugerRecombination",
522
541
  "AutoGrid",
523
542
  "AutoImpedanceSpec",
@@ -527,6 +546,10 @@ __all__ = [
527
546
  "AxisAlignedCurrentIntegralSpec",
528
547
  "AxisAlignedVoltageIntegral",
529
548
  "AxisAlignedVoltageIntegralSpec",
549
+ "BasebandCustomSourceTime",
550
+ "BasebandGaussianPulse",
551
+ "BasebandRectangularPulse",
552
+ "BasebandStep",
530
553
  "BlochBoundary",
531
554
  "Boundary",
532
555
  "BoundaryEdge",
@@ -630,12 +653,12 @@ __all__ = [
630
653
  "EMEScalarModeFieldDataArray",
631
654
  "EMESimulation",
632
655
  "EMESimulationData",
633
- "EMESweepSpec",
634
656
  "EMEUniformGrid",
635
657
  "FieldData",
636
658
  "FieldDataset",
637
659
  "FieldGrid",
638
660
  "FieldMonitor",
661
+ "FieldOverlapData",
639
662
  "FieldProjectionAngleData",
640
663
  "FieldProjectionAngleDataArray",
641
664
  "FieldProjectionAngleMonitor",
@@ -661,14 +684,18 @@ __all__ = [
661
684
  "FluxTimeDataArray",
662
685
  "FluxTimeMonitor",
663
686
  "FossumCarrierLifetime",
687
+ "FreqDataArray",
688
+ "FreqModeDataArray",
664
689
  "FreqRange",
665
690
  "FrequencyUtils",
666
691
  "FullyAnisotropicMedium",
667
692
  "GaussianBeam",
668
693
  "GaussianBeamProfile",
669
694
  "GaussianDoping",
695
+ "GaussianOverlapMonitor",
670
696
  "GaussianPulse",
671
697
  "Geometry",
698
+ "GeometryArray",
672
699
  "GeometryGroup",
673
700
  "Graphene",
674
701
  "Grid",
@@ -9,7 +9,7 @@ from tidy3d import Simulation
9
9
  from tidy3d.web import Job
10
10
 
11
11
 
12
- def main(args) -> None:
12
+ def main(args: list[str]) -> None:
13
13
  """Parse args and run the corresponding tidy3d simulaton."""
14
14
 
15
15
  parser = argparse.ArgumentParser(description="Tidy3D")
@@ -0,0 +1,31 @@
1
+ """Compatibility layer for handling differences between package versions."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import importlib
6
+ from functools import cache
7
+
8
+ from packaging.version import parse
9
+
10
+ try:
11
+ from xarray.structure import alignment
12
+ except ImportError:
13
+ from xarray.core import alignment
14
+
15
+ try:
16
+ from numpy import trapezoid as np_trapezoid
17
+ except ImportError: # NumPy < 2.0
18
+ from numpy import trapz as np_trapezoid
19
+
20
+ try:
21
+ from typing import Self, TypeAlias # Python >= 3.11
22
+ except ImportError: # Python <3.11
23
+ from typing_extensions import Self, TypeAlias
24
+
25
+
26
+ @cache
27
+ def _package_is_older_than(package: str, version: str) -> bool:
28
+ return parse(importlib.metadata.version(package)) < parse(version)
29
+
30
+
31
+ __all__ = ["Self", "TypeAlias", "_package_is_older_than", "alignment", "np_trapezoid"]
@@ -7,7 +7,7 @@ This file explains the various `tidy3d` components that make up the core of the
7
7
  ### Base
8
8
 
9
9
  All `tidy3d` components are subclasses of the `Tidy3dBaseModel` defined in `base.py`.
10
- This `Tidy3dBaseModel` itself is a subclass of [`pydantic.BaseModel`](https://pydantic-docs.helpmanual.io/usage/models/) which makes them `pydantic` models.
10
+ This `Tidy3dBaseModel` itself is a subclass of [`pydantic.BaseModel`](https://docs.pydantic.dev/latest/concepts/models/) which makes them `pydantic` models.
11
11
  In `Tidy3dBaseModel`, we also specify some configuration options, such as whether we validate fields that change after initialization, among others.
12
12
 
13
13
  ### Types
@@ -21,7 +21,7 @@ Coordinate = Tuple[float, float, float]
21
21
  ```
22
22
  defines a coordinate in 3D and
23
23
  ```python
24
- Indices = Tuple[pydantic.nonNegativeInt, ...]
24
+ Indices = Tuple[pydantic.NonNegativeInt, ...]
25
25
  ```
26
26
  defines a tuple of non-negative integers, for example, a tuple of indices.
27
27
 
@@ -134,8 +134,8 @@ Other checks may be added in future development.
134
134
 
135
135
  #### JSON Operations
136
136
 
137
- The `Simulation` can be exported as .json-like dictionary with `Simulation.json()`
138
- The schema corresponding to `Simulation` can be generated with `Simulation.schema()`
137
+ The `Simulation` can be exported as .json-like dictionary with `Simulation.model_dump_json()`
138
+ The schema corresponding to `Simulation` can be generated with `Simulation.model_json_schema()`
139
139
 
140
140
  ## Medium
141
141
 
@@ -2,16 +2,22 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ from typing import TYPE_CHECKING, Optional
6
+
5
7
  import numpy as np
6
- import pydantic.v1 as pd
8
+ from pydantic import Field, NonNegativeFloat, PositiveFloat, model_validator
7
9
 
8
10
  from tidy3d.constants import SECOND
9
11
  from tidy3d.exceptions import SetupError
10
12
 
11
- from .base import Tidy3dBaseModel, skip_if_fields_missing
12
- from .types import ArrayFloat1D, Ax
13
+ from .base import Tidy3dBaseModel
13
14
  from .viz import add_ax_if_none
14
15
 
16
+ if TYPE_CHECKING:
17
+ from tidy3d.compat import Self
18
+
19
+ from .types import ArrayFloat1D, Ax
20
+
15
21
 
16
22
  class ApodizationSpec(Tidy3dBaseModel):
17
23
  """Stores specifications for the apodizaton of frequency-domain monitors.
@@ -27,45 +33,40 @@ class ApodizationSpec(Tidy3dBaseModel):
27
33
 
28
34
  """
29
35
 
30
- start: pd.NonNegativeFloat = pd.Field(
36
+ start: Optional[NonNegativeFloat] = Field(
31
37
  None,
32
38
  title="Start Interval",
33
39
  description="Defines the time at which the start apodization ends.",
34
- units=SECOND,
40
+ json_schema_extra={"units": SECOND},
35
41
  )
36
42
 
37
- end: pd.NonNegativeFloat = pd.Field(
43
+ end: Optional[NonNegativeFloat] = Field(
38
44
  None,
39
45
  title="End Interval",
40
46
  description="Defines the time at which the end apodization begins.",
41
- units=SECOND,
47
+ json_schema_extra={"units": SECOND},
42
48
  )
43
49
 
44
- width: pd.PositiveFloat = pd.Field(
50
+ width: Optional[PositiveFloat] = Field(
45
51
  None,
46
52
  title="Apodization Width",
47
53
  description="Characteristic decay length of the apodization function, i.e., the width of the ramping up of the scaling function from 0 to 1.",
48
- units=SECOND,
54
+ json_schema_extra={"units": SECOND},
49
55
  )
50
56
 
51
- @pd.validator("end", always=True, allow_reuse=True)
52
- @skip_if_fields_missing(["start"])
53
- def end_greater_than_start(cls, val, values):
57
+ @model_validator(mode="after")
58
+ def end_greater_than_start(self) -> Self:
54
59
  """Ensure end is greater than or equal to start."""
55
- start = values.get("start")
56
- if val is not None and start is not None and val < start:
60
+ if self.end is not None and self.start is not None and self.end < self.start:
57
61
  raise SetupError("End apodization begins before start apodization ends.")
58
- return val
62
+ return self
59
63
 
60
- @pd.validator("width", always=True, allow_reuse=True)
61
- @skip_if_fields_missing(["start", "end"])
62
- def width_provided(cls, val, values):
64
+ @model_validator(mode="after")
65
+ def width_provided(self) -> Self:
63
66
  """Check that width is provided if either start or end apodization is requested."""
64
- start = values.get("start")
65
- end = values.get("end")
66
- if (start is not None or end is not None) and val is None:
67
+ if (self.start is not None or self.end is not None) and self.width is None:
67
68
  raise SetupError("Apodization width must be set.")
68
- return val
69
+ return self
69
70
 
70
71
  @add_ax_if_none
71
72
  def plot(self, times: ArrayFloat1D, ax: Ax = None) -> Ax:
@@ -0,0 +1,42 @@
1
+ from __future__ import annotations
2
+
3
+ from .boxes import TidyArrayBox
4
+ from .functions import interpn
5
+ from .types import (
6
+ AutogradFieldMap,
7
+ InterpolationType,
8
+ PathType,
9
+ TracedArrayFloat2D,
10
+ TracedArrayLike,
11
+ TracedComplex,
12
+ TracedCoordinate,
13
+ TracedFloat,
14
+ TracedPoleAndResidue,
15
+ TracedPolesAndResidues,
16
+ TracedPositiveFloat,
17
+ TracedSize,
18
+ TracedSize1D,
19
+ )
20
+ from .utils import get_static, hasbox, is_tidy_box, split_list
21
+
22
+ __all__ = [
23
+ "AutogradFieldMap",
24
+ "InterpolationType",
25
+ "PathType",
26
+ "TidyArrayBox",
27
+ "TracedArrayFloat2D",
28
+ "TracedArrayLike",
29
+ "TracedComplex",
30
+ "TracedCoordinate",
31
+ "TracedFloat",
32
+ "TracedPoleAndResidue",
33
+ "TracedPolesAndResidues",
34
+ "TracedPositiveFloat",
35
+ "TracedSize",
36
+ "TracedSize1D",
37
+ "get_static",
38
+ "hasbox",
39
+ "interpn",
40
+ "is_tidy_box",
41
+ "split_list",
42
+ ]