gplugins 1.3.1__tar.gz → 1.3.3__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 (251) hide show
  1. {gplugins-1.3.1 → gplugins-1.3.3}/PKG-INFO +9 -9
  2. {gplugins-1.3.1 → gplugins-1.3.3}/README.md +1 -1
  3. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/__init__.py +1 -1
  4. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/base_models/component.py +0 -11
  5. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/get_component_with_net_layers.py +6 -8
  6. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/get_effective_indices.py +14 -11
  7. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/parse_layer_stack.py +7 -6
  8. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/plot.py +18 -15
  9. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/fdtdz/get_ports_fdtdz.py +4 -4
  10. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/fdtdz/get_sparameters_fdtdz.py +4 -4
  11. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/femwell/mode_solver.py +2 -2
  12. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gfviz/netlist.py +5 -5
  13. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/get_port_eigenmode.py +8 -8
  14. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/get_simulation.py +4 -4
  15. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/get_simulation_grating_farfield.py +10 -10
  16. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/get_simulation_grating_fiber.py +4 -4
  17. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/meep_adjoint_optimization.py +6 -6
  18. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmsh/define_polysurfaces.py +12 -7
  19. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmsh/get_mesh.py +1 -3
  20. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmsh/uz_xsection_mesh.py +7 -7
  21. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmsh/xyz_mesh.py +21 -16
  22. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/drc/check_exclusion.py +2 -2
  23. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/drc/check_inclusion.py +4 -4
  24. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/drc/samples/drc_errors.py +6 -6
  25. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/get_density.py +5 -5
  26. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/get_netlist.py +3 -2
  27. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/netlist_graph.py +3 -2
  28. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/netlist_spice_reader.py +5 -3
  29. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/plot_nets.py +3 -1
  30. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/tests/test_density.py +2 -2
  31. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/tests/test_drc_exclusion.py +2 -2
  32. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/tests/test_drc_inclusion.py +4 -4
  33. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/tests/test_plot_nets.py +7 -7
  34. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/lumerical/write_sparameters_lumerical.py +22 -13
  35. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/meow/meow_eme.py +4 -4
  36. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/path_length_analysis/path_length_analysis_from_gds.py +3 -3
  37. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/path_length_analysis/test_pathlength_extraction.py +1 -1
  38. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sentaurus/sde.py +6 -6
  39. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sentaurus/sprocess.py +12 -12
  40. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/component.py +37 -44
  41. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/get_simulation_grating_coupler.py +1 -1
  42. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/tests/test_plot_simulation_grating_coupler.py +0 -15
  43. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/vlsir/export_netlist.py +16 -10
  44. {gplugins-1.3.1 → gplugins-1.3.3}/pyproject.toml +17 -12
  45. {gplugins-1.3.1 → gplugins-1.3.3}/LICENSE +0 -0
  46. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/__init__.py +0 -0
  47. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/base_models/__init__.py +0 -0
  48. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/base_models/simulation.py +0 -0
  49. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/config.py +0 -0
  50. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/types.py +0 -0
  51. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/__init__.py +0 -0
  52. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/add_simulation_markers.py +0 -0
  53. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/async_helpers.py +0 -0
  54. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/cache.py +0 -0
  55. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/convert_sparameters.py +0 -0
  56. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/disable_print.py +0 -0
  57. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/get_capacitance.py +0 -0
  58. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/get_component_with_local_layers.py +0 -0
  59. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/get_scattering.py +0 -0
  60. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/get_sparameters_path.py +0 -0
  61. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/optical_constants.py +0 -0
  62. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/plot_csv.py +0 -0
  63. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/port_symmetries.py +0 -0
  64. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/common/utils/tests/test_get_component_with_new_port_layers.py +0 -0
  65. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/devsim/__init__.py +0 -0
  66. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/devsim/doping.py +0 -0
  67. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/devsim/get_simulation.py +0 -0
  68. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/devsim/get_simulation_xsection.py +0 -0
  69. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/devsim/get_solver.py +0 -0
  70. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/devsim/test_devsim.py +0 -0
  71. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/elmer/__init__.py +0 -0
  72. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/elmer/electrostatic.sif.j2 +0 -0
  73. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/elmer/get_capacitance.py +0 -0
  74. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/elmer/tests/test_elmer.py +0 -0
  75. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/fdtdz/__init__.py +0 -0
  76. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/fdtdz/get_epsilon_fdtdz.py +0 -0
  77. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/femwell/__init__.py +0 -0
  78. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/femwell/solve_thermal.py +0 -0
  79. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/femwell/test_mode_solver.py +0 -0
  80. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gfviz/Makefile +0 -0
  81. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gfviz/__init__.py +0 -0
  82. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gfviz/b64.py +0 -0
  83. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gfviz/gfviz.py +0 -0
  84. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gfviz/serve.py +0 -0
  85. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gfviz/static/b64.js +0 -0
  86. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gfviz/static/schemedit.js +0 -0
  87. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gfviz/static/schemedit.wasm +0 -0
  88. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gfviz/templates/example.json +0 -0
  89. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gfviz/templates/index.html +0 -0
  90. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/__init__.py +0 -0
  91. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/get_material.py +0 -0
  92. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/get_meep_geometry.py +0 -0
  93. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_eigenmode.py +0 -0
  94. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_materials.py +0 -0
  95. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_crossing.csv +0 -0
  96. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_straight.csv +0 -0
  97. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_crossing.csv +0 -0
  98. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_straight.csv +0 -0
  99. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_symmetries_straight.csv +0 -0
  100. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi.csv +0 -0
  101. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi_pool.csv +0 -0
  102. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_crossing_symmetric.csv +0 -0
  103. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight.csv +0 -0
  104. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_batch.csv +0 -0
  105. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi.csv +0 -0
  106. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi_pool.csv +0 -0
  107. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_symmetric.csv +0 -0
  108. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/test_write_sparameters_meep.py +0 -0
  109. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/write_sparameters_grating.py +0 -0
  110. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/write_sparameters_meep.py +0 -0
  111. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/write_sparameters_meep_batch.py +0 -0
  112. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmeep/write_sparameters_meep_mpi.py +0 -0
  113. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmsh/__init__.py +0 -0
  114. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmsh/parse_component.py +0 -0
  115. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmsh/parse_gds.py +0 -0
  116. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmsh/tests/test_custom_names.py +0 -0
  117. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmsh/tests/test_meshing_2D.py +0 -0
  118. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmsh/tests/test_meshing_3D.py +0 -0
  119. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/gmsh/xy_xsection_mesh.py +0 -0
  120. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/__init__.py +0 -0
  121. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/dataprep/__init__.py +0 -0
  122. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/dataprep/regions.py +0 -0
  123. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/drc/__init__.py +0 -0
  124. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/drc/check_duplicated_cells.py +0 -0
  125. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/drc/check_space.py +0 -0
  126. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/drc/check_width.py +0 -0
  127. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/drc/count_drc.py +0 -0
  128. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/drc/write_drc.py +0 -0
  129. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/tests/test_dataprep_regions.py +0 -0
  130. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/tests/test_drc_space.py +0 -0
  131. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/tests/test_drc_width.py +0 -0
  132. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/tests/test_global_density.py +0 -0
  133. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/klayout/tests/test_netlist_spice_reader.py +0 -0
  134. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/lumerical/README.md +0 -0
  135. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/lumerical/__init__.py +0 -0
  136. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/lumerical/interconnect.py +0 -0
  137. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/lumerical/mapping_ubcpdk.yml +0 -0
  138. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/lumerical/read.py +0 -0
  139. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/lumerical/settings.py +0 -0
  140. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/lumerical/tests/test_lumerical_read_sparameters.py +0 -0
  141. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/lumerical/tests/test_netlist.py +0 -0
  142. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/lumerical/tests/test_netlist_get_routes.py +0 -0
  143. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/lumerical/write_sparameters_lumerical_components.py +0 -0
  144. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/materials/__init__.py +0 -0
  145. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/materials/inorganic.py +0 -0
  146. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/materials/optical/__init__.py +0 -0
  147. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/materials/optical/optical_mat.py +0 -0
  148. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/materials/optical/refractive_index_info.py +0 -0
  149. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/materials/semiconductor/__init__.py +0 -0
  150. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/materials/semiconductor/semiconductor_mat.py +0 -0
  151. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/meow/__init__.py +0 -0
  152. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/meow/test_meow_simulation.py +0 -0
  153. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/__init__.py +0 -0
  154. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/coupler.py +0 -0
  155. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/find_coupling_vs_gap.py +0 -0
  156. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/find_mode_dispersion.py +0 -0
  157. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/find_modes.py +0 -0
  158. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/find_modes_cross_section.py +0 -0
  159. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/find_neff_ng_dw_dh.py +0 -0
  160. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/find_neff_vs_width.py +0 -0
  161. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/get_mode_solver_coupler.py +0 -0
  162. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/get_mode_solver_cross_section.py +0 -0
  163. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/get_mode_solver_rib.py +0 -0
  164. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/modes/neff_vs_width_nitride.csv +0 -0
  165. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/modes/neff_vs_width_rib.csv +0 -0
  166. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/modes/neff_vs_width_strip.csv +0 -0
  167. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/neff_convergence_test.py +0 -0
  168. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/neff_vs_width.csv +0 -0
  169. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/overlap.py +0 -0
  170. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/tests/test_dw_dh/test_dw_dh.csv +0 -0
  171. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/tests/test_dw_dh/test_dw_dh.obtained.csv +0 -0
  172. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/tests/test_dw_dh/test_dw_dh_dispersion.csv +0 -0
  173. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/tests/test_dw_dh.py +0 -0
  174. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/tests/test_find_modes.py +0 -0
  175. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/tests/test_find_modes_dispersion.py +0 -0
  176. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.csv +0 -0
  177. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.obtained.csv +0 -0
  178. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/tests/test_neff_vs_width.py +0 -0
  179. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/types.py +0 -0
  180. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/modes/waveguide.py +0 -0
  181. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/palace/__init__.py +0 -0
  182. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/palace/driven.json +0 -0
  183. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/palace/electrostatic.json +0 -0
  184. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/palace/get_capacitance.py +0 -0
  185. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/palace/get_scattering.py +0 -0
  186. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/palace/tests/test_palace.py +0 -0
  187. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/path_length_analysis/__init__.py +0 -0
  188. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/path_length_analysis/path_length_analysis.py +0 -0
  189. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/photonic_circuit_models/__init__.py +0 -0
  190. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/photonic_circuit_models/coupler.py +0 -0
  191. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/photonic_circuit_models/fsr.py +0 -0
  192. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/photonic_circuit_models/heater.py +0 -0
  193. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/photonic_circuit_models/mzi.py +0 -0
  194. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/photonic_circuit_models/ring.py +0 -0
  195. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/process/__init__.py +0 -0
  196. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/process/diffusion.py +0 -0
  197. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/process/implant_tables.py +0 -0
  198. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/process/pysrim.py +0 -0
  199. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/process/silicon.py +0 -0
  200. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/process/skew/antimony_si_skew.csv +0 -0
  201. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/process/skew/arsenic_si_skew.csv +0 -0
  202. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/process/skew/boron_si_skew.csv +0 -0
  203. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/process/skew/phosphorus_si_skew.csv +0 -0
  204. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/__init__.py +0 -0
  205. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/build_model.py +0 -0
  206. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/integrations/__init__.py +0 -0
  207. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/integrations/femwell_waveguide_model.py +0 -0
  208. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/integrations/meep_FDTD_model.py +0 -0
  209. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/integrations/meow_eme_model.py +0 -0
  210. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/interpolators.py +0 -0
  211. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/mlp.py +0 -0
  212. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/models.py +0 -0
  213. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/parameter.py +0 -0
  214. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/plot_model.py +0 -0
  215. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/read.py +0 -0
  216. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/tests/test_mzi.py +0 -0
  217. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.obtained.yml +0 -0
  218. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.yml +0 -0
  219. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/tests/test_mzi_lattice.py +0 -0
  220. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sax/tests/test_parameters.py +0 -0
  221. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sentaurus/mask_sde.py +0 -0
  222. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sentaurus/mask_sprocess.py +0 -0
  223. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sentaurus/sdevice.py +0 -0
  224. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/sentaurus/svisual.py +0 -0
  225. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/spice/__init__.py +0 -0
  226. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/spice/spice_to_yaml.py +0 -0
  227. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/spice/tests/__init__.py +0 -0
  228. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/spice/tests/test_interconnect.py +0 -0
  229. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/__init__.py +0 -0
  230. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/get_results.py +0 -0
  231. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/materials.py +0 -0
  232. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/modes.py +0 -0
  233. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/tests/test_component_modeler.py +0 -0
  234. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/tests/test_materials.py +0 -0
  235. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/tests/test_modes/test_sweep_width.csv +0 -0
  236. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/tests/test_modes/test_sweep_width.obtained.csv +0 -0
  237. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/tests/test_modes_coupler.py +0 -0
  238. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/tests/test_modes_waveguide.py +0 -0
  239. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/tests/test_write_sparameters.py +0 -0
  240. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/tests/tests_sparameters/sim_ref.yaml +0 -0
  241. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters.py +0 -0
  242. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters_grating_coupler.py +0 -0
  243. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/types.py +0 -0
  244. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/util.py +0 -0
  245. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/tidy3d/write_sparameters_grating_coupler.py +0 -0
  246. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/typings.py +0 -0
  247. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/vlsir/__init__.py +0 -0
  248. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/vlsir/tests/resources/pads_correct.cir +0 -0
  249. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/vlsir/tests/resources/pads_correct.scs +0 -0
  250. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/vlsir/tests/resources/pads_correct.sp +0 -0
  251. {gplugins-1.3.1 → gplugins-1.3.3}/gplugins/vlsir/tests/test_vlsir.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gplugins
3
- Version: 1.3.1
3
+ Version: 1.3.3
4
4
  Summary: gdsfactory plugins
5
5
  Keywords: python
6
6
  Author-email: gdsfactory <contact@gdsfactory.com>
@@ -11,24 +11,25 @@ Classifier: Programming Language :: Python :: 3.11
11
11
  Classifier: Programming Language :: Python :: 3.12
12
12
  Classifier: Operating System :: OS Independent
13
13
  License-File: LICENSE
14
- Requires-Dist: gdsfactory>=9.0.0
14
+ Requires-Dist: gdsfactory>=9.3.5
15
15
  Requires-Dist: pint
16
16
  Requires-Dist: gdstk
17
17
  Requires-Dist: tqdm
18
18
  Requires-Dist: numpy
19
+ Requires-Dist: xarray==2025.1.2
19
20
  Requires-Dist: pre-commit ; extra == "dev"
20
21
  Requires-Dist: pytest ; extra == "dev"
21
22
  Requires-Dist: pytest-cov ; extra == "dev"
22
23
  Requires-Dist: pytest_regressions ; extra == "dev"
23
24
  Requires-Dist: pyswarms ; extra == "dev"
24
- Requires-Dist: autograd ; extra == "dev"
25
25
  Requires-Dist: devsim ; extra == "devsim"
26
26
  Requires-Dist: pyvista<=0.43.8 ; extra == "devsim"
27
- Requires-Dist: tidy3d>=2.7.8 ; extra == "devsim"
27
+ Requires-Dist: tidy3d>=2.8.2,<2.9 ; extra == "devsim"
28
28
  Requires-Dist: jupytext ; extra == "docs"
29
29
  Requires-Dist: matplotlib ; extra == "docs"
30
30
  Requires-Dist: jupyter-book~=1.0 ; extra == "docs"
31
31
  Requires-Dist: pyvista[all]<=0.43.8 ; extra == "docs"
32
+ Requires-Dist: bokeh ; extra == "docs"
32
33
  Requires-Dist: femwell~=0.1.11 ; extra == "femwell"
33
34
  Requires-Dist: meshwell~=1.0.7 ; extra == "femwell"
34
35
  Requires-Dist: jinja2 ; extra == "gfviz"
@@ -56,9 +57,8 @@ Requires-Dist: towncrier ; extra == "maintainer"
56
57
  Requires-Dist: jax>=0.4.26 ; extra == "meow"
57
58
  Requires-Dist: jaxlib>=0.4.26 ; extra == "meow"
58
59
  Requires-Dist: flax>=0.8.2 ; extra == "meow"
59
- Requires-Dist: meow-sim>=0.11,<0.13 ; extra == "meow"
60
- Requires-Dist: tidy3d>=2.7.8 ; extra == "meow"
61
- Requires-Dist: scipy<=1.14.1 ; extra == "meow"
60
+ Requires-Dist: meow-sim>=0.13,<0.14 ; extra == "meow"
61
+ Requires-Dist: tidy3d>=2.8.2,<2.9 ; extra == "meow"
62
62
  Requires-Dist: jax>=0.4.26 ; extra == "sax"
63
63
  Requires-Dist: jaxlib>=0.4.26 ; extra == "sax"
64
64
  Requires-Dist: flax>=0.8.2 ; extra == "sax"
@@ -69,7 +69,7 @@ Requires-Dist: ray ; extra == "sax"
69
69
  Requires-Dist: bokeh ; extra == "schematic"
70
70
  Requires-Dist: ipywidgets ; extra == "schematic"
71
71
  Requires-Dist: natsort ; extra == "schematic"
72
- Requires-Dist: tidy3d>=2.7.8 ; extra == "tidy3d"
72
+ Requires-Dist: tidy3d>=2.8.2,<2.9 ; extra == "tidy3d"
73
73
  Requires-Dist: meshio ; extra == "tidy3d"
74
74
  Requires-Dist: numpy ; extra == "tidy3d"
75
75
  Requires-Dist: meshwell~=1.0.7 ; extra == "tidy3d"
@@ -90,7 +90,7 @@ Provides-Extra: schematic
90
90
  Provides-Extra: tidy3d
91
91
  Provides-Extra: vlsir
92
92
 
93
- # gplugins 1.3.1
93
+ # gplugins 1.3.3
94
94
 
95
95
  [![docs](https://github.com/gdsfactory/gplugins/actions/workflows/pages.yml/badge.svg)](https://gdsfactory.github.io/gplugins/)
96
96
  [![PyPI](https://img.shields.io/pypi/v/gplugins)](https://pypi.org/project/gplugins/)
@@ -1,4 +1,4 @@
1
- # gplugins 1.3.1
1
+ # gplugins 1.3.3
2
2
 
3
3
  [![docs](https://github.com/gdsfactory/gplugins/actions/workflows/pages.yml/badge.svg)](https://gdsfactory.github.io/gplugins/)
4
4
  [![PyPI](https://img.shields.io/pypi/v/gplugins)](https://pypi.org/project/gplugins/)
@@ -1,6 +1,6 @@
1
1
  """gplugins - gdsfactory plugins."""
2
2
 
3
- __version__ = "1.3.1"
3
+ __version__ = "1.3.3"
4
4
 
5
5
  import pathlib
6
6
 
@@ -248,14 +248,3 @@ class LayeredComponentBase(BaseModel):
248
248
  def get_layer_center(self, layername: str) -> tuple[float, float, float]:
249
249
  bbox = self.get_layer_bbox(layername)
250
250
  return tuple(np.mean(bbox, axis=0))
251
-
252
- def get_vertices(self, layer_name: str, buffer: float = 0.0):
253
- poly = self.polygons[layer_name].buffer(buffer, join_style="mitre")
254
- match poly:
255
- case MultiPolygon():
256
- verts = tuple(tuple(p.exterior.coords) for p in poly.geoms)
257
- case Polygon():
258
- verts = (tuple(poly.exterior.coords),)
259
- case _:
260
- raise TypeError(f"Invalid polygon type: {type(poly)}")
261
- return verts
@@ -1,6 +1,7 @@
1
1
  import copy
2
2
 
3
3
  import gdsfactory as gf
4
+ import klayout.db as kdb
4
5
  from gdsfactory import Component
5
6
  from gdsfactory.technology import LayerStack, LogicalLayer
6
7
 
@@ -35,8 +36,8 @@ def get_component_layer_stack(
35
36
 
36
37
 
37
38
  def get_component_with_net_layers(
38
- component,
39
- layer_stack,
39
+ component: Component,
40
+ layer_stack: LayerStack,
40
41
  port_names: list[str],
41
42
  delimiter: str = "#",
42
43
  new_layers_init: tuple[int, int] = (10010, 0),
@@ -74,7 +75,9 @@ def get_component_with_net_layers(
74
75
  net_component = net_component.remove_layers(layers=(port.layer,))
75
76
  for polygon in polygons:
76
77
  # If polygon belongs to port, create a unique new layer, and add the polygon to it
77
- if polygon.sized(3 * gf.kcl.dbu).inside(port.center):
78
+ if polygon.sized(int(3 * gf.kcl.dbu)).inside(
79
+ kdb.Point(*port.to_itype().center)
80
+ ):
78
81
  # if gdstk.inside(
79
82
  # [port.center],
80
83
  # gdstk.offset(gdstk.Polygon(polygon), gf.get_active_pdk().grid_size),
@@ -111,8 +114,3 @@ def get_component_with_net_layers(
111
114
 
112
115
  net_component.name = f"{component.name}_net_layers"
113
116
  return net_component
114
-
115
-
116
- if __name__ == "__main__":
117
- c = get_component_with_net_layers()
118
- c.show()
@@ -2,9 +2,10 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- from typing import Literal
5
+ from typing import Any, Literal, cast
6
6
 
7
7
  import numpy as np
8
+ import numpy.typing as npt
8
9
  from scipy.optimize import fsolve
9
10
 
10
11
 
@@ -19,9 +20,9 @@ def get_effective_indices(
19
20
  """Returns the effective refractive indices for a 1D mode.
20
21
 
21
22
  Args:
22
- epsilon_core: Relative permittivity of the film.
23
- epsilon_substrate: Relative permittivity of the substrate.
24
- epsilon_cladding: Relative permittivity of the cladding.
23
+ core_material: Refractive index of the core material.
24
+ nsubstrate: Refractive index of the substrate.
25
+ clad_materialding: Refractive index of the cladding.
25
26
  thickness: Thickness of the film in um.
26
27
  wavelength: Wavelength in um.
27
28
  polarization: Either "te" or "tm".
@@ -66,18 +67,20 @@ def get_effective_indices(
66
67
 
67
68
  k_0 = 2 * np.pi / wavelength
68
69
 
69
- def k_f(e_eff):
70
+ def k_f(e_eff: npt.NDArray[np.floating[Any]]) -> npt.NDArray[np.floating[Any]]:
70
71
  return k_0 * np.sqrt(epsilon_core - e_eff) / (epsilon_core if tm else 1)
71
72
 
72
- def k_s(e_eff):
73
+ def k_s(e_eff: npt.NDArray[np.floating[Any]]) -> npt.NDArray[np.floating[Any]]:
73
74
  return (
74
75
  k_0 * np.sqrt(e_eff - epsilon_substrate) / (epsilon_substrate if tm else 1)
75
76
  )
76
77
 
77
- def k_c(e_eff):
78
+ def k_c(e_eff: npt.NDArray[np.floating[Any]]) -> npt.NDArray[np.floating[Any]]:
78
79
  return k_0 * np.sqrt(e_eff - epsilon_cladding) / (epsilon_cladding if tm else 1)
79
80
 
80
- def objective(e_eff):
81
+ def objective(
82
+ e_eff: npt.NDArray[np.floating[Any]],
83
+ ) -> npt.NDArray[np.floating[Any]]:
81
84
  return 1 / np.tan(k_f(e_eff) * thickness) - (
82
85
  k_f(e_eff) ** 2 - k_s(e_eff) * k_c(e_eff)
83
86
  ) / (k_f(e_eff) * (k_s(e_eff) + k_c(e_eff)))
@@ -92,14 +95,14 @@ def get_effective_indices(
92
95
  return []
93
96
 
94
97
  # and then use fsolve to get exact indices
95
- indices_temp = fsolve(objective, indices_temp)
98
+ indices_temp = cast(npt.NDArray[np.floating[Any]], fsolve(objective, indices_temp))
96
99
 
97
- indices = []
100
+ indices: list[float] = []
98
101
  for index in indices_temp:
99
102
  if not any(np.isclose(index, i, atol=1e-5) for i in indices):
100
103
  indices.append(index)
101
104
 
102
- return np.sqrt(indices).tolist()
105
+ return cast(list[float], np.sqrt(indices).tolist())
103
106
 
104
107
 
105
108
  def test_effective_index() -> None:
@@ -26,7 +26,7 @@ def list_unique_layer_stack_z(
26
26
  def map_unique_layer_stack_z(
27
27
  layer_stack: LayerStack,
28
28
  include_zmax: bool = True,
29
- ):
29
+ ) -> dict[str, set[float]]:
30
30
  """Map unique LayerStack z coordinates to various layers.
31
31
 
32
32
  Args:
@@ -57,7 +57,7 @@ def map_unique_layer_stack_z(
57
57
  def get_layer_overlaps_z(
58
58
  layer_stack: LayerStack,
59
59
  include_zmax: bool = True,
60
- ):
60
+ ) -> dict[float, set[str]]:
61
61
  """Maps layers to unique LayerStack z coordinates.
62
62
 
63
63
  Args:
@@ -67,7 +67,7 @@ def get_layer_overlaps_z(
67
67
  """
68
68
  z_grid = list_unique_layer_stack_z(layer_stack)
69
69
  unique_z_dict = map_unique_layer_stack_z(layer_stack, include_zmax)
70
- intersection_z_dict = {}
70
+ intersection_z_dict: dict[float, set[str]] = {}
71
71
  for z in z_grid:
72
72
  current_layers = {
73
73
  layername for layername, layer_zs in unique_z_dict.items() if z in layer_zs
@@ -77,11 +77,12 @@ def get_layer_overlaps_z(
77
77
  return intersection_z_dict
78
78
 
79
79
 
80
- def get_layers_at_z(layer_stack: LayerStack, z: float):
80
+ def get_layers_at_z(layer_stack: LayerStack, z: float) -> list[str]:
81
81
  """Returns layers present at a given z-position.
82
82
 
83
83
  Args:
84
84
  layer_stack: LayerStack
85
+ z: float
85
86
  Returns:
86
87
  List of layers
87
88
  """
@@ -93,11 +94,11 @@ def get_layers_at_z(layer_stack: LayerStack, z: float):
93
94
  raise ValueError("Requested z-value is above the minimum layer_stack z")
94
95
  for z_unique in intersection_z_dict.keys():
95
96
  if z <= z_unique:
96
- return intersection_z_dict[z_unique]
97
+ return list(intersection_z_dict[z_unique])
97
98
  raise AssertionError("Could not find z-value in layer_stack z-range.")
98
99
 
99
100
 
100
- def order_layer_stack(layer_stack: LayerStack):
101
+ def order_layer_stack(layer_stack: LayerStack) -> list[str]:
101
102
  """Orders layer_stack according to mesh_order.
102
103
 
103
104
  Args:
@@ -4,13 +4,17 @@ import re
4
4
  from collections.abc import Sequence
5
5
  from functools import partial
6
6
  from itertools import combinations
7
+ from typing import Any
7
8
 
8
- import gdsfactory as gf
9
9
  import matplotlib.pyplot as plt
10
10
  import numpy as np
11
+ import numpy.typing as npt
12
+ from matplotlib.axes import Axes
11
13
 
12
14
 
13
- def _check_ports(sp: dict[str, np.ndarray], ports: Sequence[str]) -> None:
15
+ def _check_ports(
16
+ sp: dict[str, npt.NDArray[np.floating[Any]]], ports: Sequence[str]
17
+ ) -> None:
14
18
  """Ensure ports exist in Sparameters."""
15
19
  for port in ports:
16
20
  if port not in sp:
@@ -18,7 +22,7 @@ def _check_ports(sp: dict[str, np.ndarray], ports: Sequence[str]) -> None:
18
22
 
19
23
 
20
24
  def plot_sparameters(
21
- sp: dict[str, np.ndarray],
25
+ sp: dict[str, npt.NDArray[np.floating[Any]]],
22
26
  logscale: bool = True,
23
27
  plot_phase: bool = False,
24
28
  keys: tuple[str, ...] | None = None,
@@ -39,7 +43,7 @@ def plot_sparameters(
39
43
 
40
44
  """
41
45
  w = sp["wavelengths"] * units
42
- keys = keys or [key for key in sp if not key.lower().startswith("wav")]
46
+ keys = keys or tuple(key for key in sp if not key.lower().startswith("wav"))
43
47
 
44
48
  for key in keys:
45
49
  if with_simpler_input_keys:
@@ -74,9 +78,12 @@ def plot_sparameters(
74
78
 
75
79
 
76
80
  def plot_imbalance(
77
- sp: dict[str, np.ndarray], ports: Sequence[str], ax: plt.Axes | None = None
81
+ sp: dict[str, npt.NDArray[np.floating[Any]]],
82
+ ports: Sequence[str],
83
+ ax: Axes | None = None,
78
84
  ) -> None:
79
85
  """Plots imbalance in dB for coupler.
86
+
80
87
  The imbalance is always defined between two ports, so this function plots the
81
88
  imbalance between all unique port combinations.
82
89
 
@@ -107,7 +114,9 @@ def plot_imbalance(
107
114
 
108
115
 
109
116
  def plot_loss(
110
- sp: dict[str, np.ndarray], ports: Sequence[str], ax: plt.Axes | None = None
117
+ sp: dict[str, npt.NDArray[np.floating[Any]]],
118
+ ports: Sequence[str],
119
+ ax: Axes | None = None,
111
120
  ) -> None:
112
121
  """Plots loss dB for coupler.
113
122
 
@@ -137,7 +146,9 @@ def plot_loss(
137
146
 
138
147
 
139
148
  def plot_reflection(
140
- sp: dict[str, np.ndarray], ports: Sequence[str], ax: plt.Axes | None = None
149
+ sp: dict[str, npt.NDArray[np.floating[Any]]],
150
+ ports: Sequence[str],
151
+ ax: Axes | None = None,
141
152
  ) -> None:
142
153
  """Plots reflection in dB for coupler.
143
154
 
@@ -172,11 +183,3 @@ plot_imbalance1x2 = partial(plot_imbalance, ports=["o1@0,o2@0", "o1@0,o3@0"])
172
183
  plot_imbalance2x2 = partial(plot_imbalance, ports=["o1@0,o3@0", "o1@0,o4@0"])
173
184
  plot_reflection1x2 = partial(plot_reflection, ports=["o1@0,o1@0"])
174
185
  plot_reflection2x2 = partial(plot_reflection, ports=["o1@0,o1@0", "o2@0,o1@0"])
175
-
176
- if __name__ == "__main__":
177
- import gplugins as sim
178
-
179
- sp = sim.get_sparameters_data_tidy3d(component=gf.components.mmi1x2)
180
- # plot_sparameters(sp, logscale=False, keys=["o1@0,o2@0"])
181
- # plot_sparameters(sp, logscale=False, keys=["S21"])
182
- # plt.show()
@@ -224,8 +224,8 @@ if __name__ == "__main__":
224
224
  omega=omega,
225
225
  port=c.ports["o1"],
226
226
  epsilon=epsilon,
227
- xmin=c.dxmin,
228
- ymin=c.dymin,
227
+ xmin=c.xmin,
228
+ ymin=c.ymin,
229
229
  nm_per_pixel=nm_per_pixel,
230
230
  port_extent_xy=1,
231
231
  )
@@ -234,8 +234,8 @@ if __name__ == "__main__":
234
234
  port=c.ports["o1"],
235
235
  epsilon_port=epsilon_port,
236
236
  excitation=excitation,
237
- xmin=c.dxmin,
238
- ymin=c.dymin,
237
+ xmin=c.xmin,
238
+ ymin=c.ymin,
239
239
  zmin=zmin,
240
240
  nm_per_pixel=1000,
241
241
  figsize=(11, 4),
@@ -93,8 +93,8 @@ def get_sparameters_fdtdz(
93
93
  """
94
94
  # Checks from gmeep
95
95
  component_ref = component.ref()
96
- component_ref.dx = 0
97
- component_ref.dy = 0
96
+ component_ref.x = 0
97
+ component_ref.y = 0
98
98
 
99
99
  optical_port_names = list(component_ref.get_ports_dict(port_type="optical").keys())
100
100
 
@@ -129,8 +129,8 @@ def get_sparameters_fdtdz(
129
129
  omega=omega,
130
130
  port=component.ports[portname],
131
131
  epsilon=epsilon,
132
- xmin=component_extended.dxmin,
133
- ymin=component_extended.dymin,
132
+ xmin=component_extended.xmin,
133
+ ymin=component_extended.ymin,
134
134
  nm_per_pixel=nm_per_pixel,
135
135
  port_extent_xy=port_margin,
136
136
  )
@@ -68,8 +68,8 @@ def compute_cross_section_modes(
68
68
  """
69
69
  # Get meshable component from cross-section
70
70
  c = gf.components.straight(length=10, cross_section=cross_section)
71
- dx = c.dxsize
72
- dy = c.dysize
71
+ dx = c.xsize
72
+ dy = c.ysize
73
73
 
74
74
  xsection_bounds = [
75
75
  [dx / 2, dy - wafer_padding],
@@ -167,10 +167,10 @@ def get_ports(child, parent=None):
167
167
  else:
168
168
  ports = ports1
169
169
 
170
- x0 = c.dxmin
171
- x1 = c.dxmax
172
- y0 = c.dymin
173
- y1 = c.dymax
170
+ x0 = c.xmin
171
+ x1 = c.xmax
172
+ y0 = c.ymin
173
+ y1 = c.ymax
174
174
  x0, x1 = min(x0, x1), max(x0, x1)
175
175
  y0, y1 = min(y0, y1), max(y0, y1)
176
176
 
@@ -271,7 +271,7 @@ def _line_dists(points, start, end):
271
271
 
272
272
 
273
273
  def sort_ports(ports) -> list[gf.Port]:
274
- return natsorted(ports, key=lambda port: port.dx)
274
+ return natsorted(ports, key=lambda port: port.x)
275
275
 
276
276
 
277
277
  def wrap_component_in_netlist(name):
@@ -19,10 +19,10 @@ def get_domain_measurements(sim, output_plane, frequency, resolution=0):
19
19
  # Get domain measurements
20
20
  sim_center, sim_size = get_2D_dimensions(sim, output_plane)
21
21
 
22
- xmin = sim_center.dx- sim_size.dx/ 2
23
- xmax = sim_center.dx+ sim_size.dx/ 2
24
- ymin = sim_center.dy- sim_size.dy/ 2
25
- ymax = sim_center.dy+ sim_size.dy/ 2
22
+ xmin = sim_center.x- sim_size.x/ 2
23
+ xmax = sim_center.x+ sim_size.x/ 2
24
+ ymin = sim_center.y- sim_size.y/ 2
25
+ ymax = sim_center.y+ sim_size.y/ 2
26
26
  zmin = sim_center.z - sim_size.z / 2
27
27
  zmax = sim_center.z + sim_size.z / 2
28
28
 
@@ -31,12 +31,12 @@ def get_domain_measurements(sim, output_plane, frequency, resolution=0):
31
31
  Ny = int((ymax - ymin) * grid_resolution + 1)
32
32
  Nz = int((zmax - zmin) * grid_resolution + 1)
33
33
 
34
- if sim_size.dx== 0:
34
+ if sim_size.x== 0:
35
35
  # Plot y on x axis, z on y axis (YZ plane)
36
36
  xtics = np.array([sim_center.x])
37
37
  ytics = np.linspace(ymin, ymax, Ny)
38
38
  ztics = np.linspace(zmin, zmax, Nz)
39
- elif sim_size.dy== 0:
39
+ elif sim_size.y== 0:
40
40
  # Plot x on x axis, z on y axis (XZ plane)
41
41
  xtics = np.linspace(xmin, xmax, Nx)
42
42
  ytics = np.array([sim_center.y])
@@ -117,10 +117,10 @@ def get_port_2Dx_eigenmode(
117
117
  # The output of this function is slightly different then MPB (there is no mode_solver object)
118
118
  # Format like the Mode objects in gdsfactory/simulation/modes to reuse modes' functions
119
119
  if not choose_yz:
120
- ny = int(size.dy * sim.resolution)
120
+ ny = int(size.y * sim.resolution)
121
121
  nz = int(size.z * sim.resolution)
122
122
  y = np.linspace(
123
- center.dy - size.dy / 2, center.dy + size.dy / 2, ny
123
+ center.y - size.y / 2, center.y + size.y / 2, ny
124
124
  ) # eigenmode solver and sim res are technically different
125
125
  z = np.linspace(center.z - size.z / 2, center.z + size.z / 2, nz)
126
126
  yy, zz = np.meshgrid(y, z, indexing="ij")
@@ -144,8 +144,8 @@ def get_simulation(
144
144
 
145
145
  dummy_component = gf.Component()
146
146
  component_ref = dummy_component << component
147
- component_ref.dx = 0
148
- component_ref.dy = 0
147
+ component_ref.x = 0
148
+ component_ref.y = 0
149
149
 
150
150
  wavelength = (wavelength_start + wavelength_stop) / 2
151
151
 
@@ -195,8 +195,8 @@ def get_simulation(
195
195
  cell_thickness = tpml + zmargin_bot + t_core + zmargin_top + tpml if is_3d else 0
196
196
 
197
197
  cell_size = mp.Vector3(
198
- component.dxsize + 2 * tpml,
199
- component.dysize + 2 * tpml,
198
+ component.xsize + 2 * tpml,
199
+ component.ysize + 2 * tpml,
200
200
  cell_thickness,
201
201
  )
202
202
 
@@ -172,7 +172,7 @@ def get_simulation_grating_farfield(
172
172
  0.5 * sz - pml_thickness + y_offset - 1,
173
173
  )
174
174
  fiber_port_size = mp.Vector3(3 * fiber_core_diameter, 0, 0)
175
- # fiber_port_direction = mp.Vector3(y=-1).drotate(mp.Vector3(z=1), -1 * fiber_angle)
175
+ # fiber_port_direction = mp.Vector3(y=-1).rotate(mp.Vector3(z=1), -1 * fiber_angle)
176
176
 
177
177
  waveguide_port_center = mp.Vector3(-sxy / 4)
178
178
  waveguide_port_size = mp.Vector3(0, 2 * clad_thickness - 0.2)
@@ -193,8 +193,8 @@ def get_simulation_grating_farfield(
193
193
  x=grating_start + fiber_xposition - fiber_offset_from_angle
194
194
  ),
195
195
  size=mp.Vector3(fiber_clad, hfiber_geom),
196
- e1=mp.Vector3(x=1).drotate(mp.Vector3(z=1), -1 * fiber_angle),
197
- e2=mp.Vector3(y=1).drotate(mp.Vector3(z=1), -1 * fiber_angle),
196
+ e1=mp.Vector3(x=1).rotate(mp.Vector3(z=1), -1 * fiber_angle),
197
+ e2=mp.Vector3(y=1).rotate(mp.Vector3(z=1), -1 * fiber_angle),
198
198
  )
199
199
  ]
200
200
 
@@ -205,8 +205,8 @@ def get_simulation_grating_farfield(
205
205
  x=grating_start + fiber_xposition - fiber_offset_from_angle
206
206
  ),
207
207
  size=mp.Vector3(fiber_core_diameter, hfiber_geom),
208
- e1=mp.Vector3(x=1).drotate(mp.Vector3(z=1), -1 * fiber_angle),
209
- e2=mp.Vector3(y=1).drotate(mp.Vector3(z=1), -1 * fiber_angle),
208
+ e1=mp.Vector3(x=1).rotate(mp.Vector3(z=1), -1 * fiber_angle),
209
+ e2=mp.Vector3(y=1).rotate(mp.Vector3(z=1), -1 * fiber_angle),
210
210
  )
211
211
  )
212
212
 
@@ -415,8 +415,8 @@ def get_port_1D_eigenmode(
415
415
  frequency=fsrc,
416
416
  )
417
417
  ys_waveguide = np.linspace(
418
- center_waveguide.dy - size_waveguide.dy / 2,
419
- center_waveguide.dy + size_waveguide.dy / 2,
418
+ center_waveguide.y - size_waveguide.y / 2,
419
+ center_waveguide.y + size_waveguide.y / 2,
420
420
  int(sim.resolution * size_waveguide.y),
421
421
  )
422
422
  x_waveguide = center_waveguide.x
@@ -426,14 +426,14 @@ def get_port_1D_eigenmode(
426
426
  direction=mp.NO_DIRECTION,
427
427
  where=mp.Volume(center=center_fiber, size=size_fiber),
428
428
  band_num=band_num,
429
- kpoint=mp.Vector3(0, fsrc * 1.45, 0).drotate(
429
+ kpoint=mp.Vector3(0, fsrc * 1.45, 0).rotate(
430
430
  mp.Vector3(z=1), -1 * np.radians(fiber_angle_deg)
431
431
  ), # Hardcoded index for now, pull from simulation eventually
432
432
  frequency=fsrc,
433
433
  )
434
434
  xs_fiber = np.linspace(
435
- center_fiber.dx - size_fiber.dx / 2,
436
- center_fiber.dx + size_fiber.dx / 2,
435
+ center_fiber.x - size_fiber.x / 2,
436
+ center_fiber.x + size_fiber.x / 2,
437
437
  int(sim.resolution * size_fiber.x),
438
438
  )
439
439
  y_fiber = center_fiber.y
@@ -501,8 +501,8 @@ def get_port_1D_eigenmode(
501
501
  frequency=fsrc,
502
502
  )
503
503
  ys_waveguide = np.linspace(
504
- center_waveguide.dy - size_waveguide.dy / 2,
505
- center_waveguide.dy + size_waveguide.dy / 2,
504
+ center_waveguide.y - size_waveguide.y / 2,
505
+ center_waveguide.y + size_waveguide.y / 2,
506
506
  int(sim.resolution * size_waveguide.y),
507
507
  )
508
508
  x_waveguide = center_waveguide.x
@@ -518,8 +518,8 @@ def get_port_1D_eigenmode(
518
518
  frequency=fsrc,
519
519
  )
520
520
  xs_fiber = np.linspace(
521
- center_fiber.dx - size_fiber.dx / 2,
522
- center_fiber.dx + size_fiber.dx / 2,
521
+ center_fiber.x - size_fiber.x / 2,
522
+ center_fiber.x + size_fiber.x / 2,
523
523
  int(sim.resolution * size_fiber.x),
524
524
  )
525
525
  y_fiber = center_fiber.y
@@ -151,8 +151,8 @@ def get_meep_adjoint_optimizer(
151
151
  Vector3(*cell_size)
152
152
  if cell_size
153
153
  else Vector3(
154
- c.dxsize + 2 * sim.boundary_layers[0].thickness,
155
- c.dysize + 2 * sim.boundary_layers[0].thickness,
154
+ c.xsize + 2 * sim.boundary_layers[0].thickness,
155
+ c.ysize + 2 * sim.boundary_layers[0].thickness,
156
156
  cell_thickness,
157
157
  )
158
158
  )
@@ -262,10 +262,10 @@ def get_component_from_sim(
262
262
  """
263
263
  grid_resolution = upscale_factor * sim.resolution
264
264
  sim_center, sim_size = get_2D_dimensions(sim, output_plane=None)
265
- xmin = sim_center.dx - sim_size.dx / 2
266
- xmax = sim_center.dx + sim_size.dx / 2
267
- ymin = sim_center.dy - sim_size.dy / 2
268
- ymax = sim_center.dy + sim_size.dy / 2
265
+ xmin = sim_center.x - sim_size.x / 2
266
+ xmax = sim_center.x + sim_size.x / 2
267
+ ymin = sim_center.y - sim_size.y / 2
268
+ ymax = sim_center.y + sim_size.y / 2
269
269
  Nx = int((xmax - xmin) * grid_resolution + 1)
270
270
  Ny = int((ymax - ymin) * grid_resolution + 1)
271
271
  xtics = np.linspace(xmin, xmax, Nx)
@@ -6,16 +6,16 @@ from shapely.affinity import scale
6
6
 
7
7
 
8
8
  def define_polysurfaces(
9
- polygons_dict: dict,
9
+ polygons_dict: dict[str, Any],
10
10
  layer_stack: LayerStack,
11
- layer_physical_map: dict,
12
- layer_meshbool_map: dict,
11
+ layer_physical_map: dict[str, Any],
12
+ layer_meshbool_map: dict[str, Any],
13
13
  model: Any,
14
- resolutions: dict,
14
+ resolutions: dict[str, Any] | None = None,
15
15
  scale_factor: float = 1,
16
- ):
16
+ ) -> list[PolySurface]:
17
17
  """Define meshwell polysurfaces dimtags from gdsfactory information."""
18
- polysurfaces_list = []
18
+ polysurfaces_list: list[PolySurface] = []
19
19
 
20
20
  if resolutions is None:
21
21
  resolutions = {}
@@ -24,6 +24,11 @@ def define_polysurfaces(
24
24
  if polygons_dict[layername].is_empty:
25
25
  continue
26
26
 
27
+ layer_stack_ = layer_stack.layers.get(layername)
28
+
29
+ if layer_stack_ is None:
30
+ continue
31
+
27
32
  polysurfaces_list.append(
28
33
  PolySurface(
29
34
  polygons=scale(
@@ -33,7 +38,7 @@ def define_polysurfaces(
33
38
  ),
34
39
  model=model,
35
40
  resolution=resolutions.get(layername, None),
36
- mesh_order=layer_stack.layers.get(layername).mesh_order,
41
+ mesh_order=layer_stack_.mesh_order,
37
42
  physical_name=layer_physical_map[layername]
38
43
  if layername in layer_physical_map
39
44
  else layername,
@@ -98,9 +98,7 @@ def get_mesh(
98
98
 
99
99
  # Default meshing flags (all True)
100
100
  if layer_meshbool_map is None:
101
- layer_meshbool_map = {
102
- layer_name: True for layer_name in layer_stack.layers.keys()
103
- }
101
+ layer_meshbool_map = dict.fromkeys(layer_stack.layers.keys(), True)
104
102
  else:
105
103
  for layer_name in layer_stack.layers.keys():
106
104
  if layer_name not in layer_physical_map.keys():