gplugins 2.1.3__tar.gz → 2.1.5__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 (260) hide show
  1. {gplugins-2.1.3 → gplugins-2.1.5}/PKG-INFO +2 -2
  2. {gplugins-2.1.3 → gplugins-2.1.5}/README.md +1 -1
  3. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/__init__.py +1 -1
  4. gplugins-2.1.5/gplugins/lumerical/tests/test_background_layers.py +36 -0
  5. gplugins-2.1.5/gplugins/lumerical/tests/test_write_sparameters_lumerical.py +78 -0
  6. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/lumerical/write_sparameters_lumerical.py +65 -17
  7. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/modes.py +3 -2
  8. {gplugins-2.1.3 → gplugins-2.1.5}/pyproject.toml +2 -2
  9. {gplugins-2.1.3 → gplugins-2.1.5}/LICENSE +0 -0
  10. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/__init__.py +0 -0
  11. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/base_models/__init__.py +0 -0
  12. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/base_models/component.py +0 -0
  13. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/base_models/simulation.py +0 -0
  14. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/config.py +0 -0
  15. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/types.py +0 -0
  16. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/__init__.py +0 -0
  17. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/add_simulation_markers.py +0 -0
  18. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/async_helpers.py +0 -0
  19. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/cache.py +0 -0
  20. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/convert_sparameters.py +0 -0
  21. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/disable_print.py +0 -0
  22. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/geometry.py +0 -0
  23. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/get_capacitance.py +0 -0
  24. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/get_component_with_net_layers.py +0 -0
  25. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/get_effective_indices.py +0 -0
  26. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/get_scattering.py +0 -0
  27. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/get_sparameters_path.py +0 -0
  28. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/optical_constants.py +0 -0
  29. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/parse_layer_stack.py +0 -0
  30. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/plot.py +0 -0
  31. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/plot_csv.py +0 -0
  32. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/port_symmetries.py +0 -0
  33. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/common/utils/tests/test_get_component_with_new_port_layers.py +0 -0
  34. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/devsim/__init__.py +0 -0
  35. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/devsim/doping.py +0 -0
  36. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/devsim/get_simulation.py +0 -0
  37. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/devsim/get_simulation_xsection.py +0 -0
  38. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/devsim/get_solver.py +0 -0
  39. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/devsim/test_devsim.py +0 -0
  40. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/elmer/__init__.py +0 -0
  41. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/elmer/electrostatic.sif.j2 +0 -0
  42. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/elmer/get_capacitance.py +0 -0
  43. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/elmer/tests/test_elmer.py +0 -0
  44. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/emode/__init__.py +0 -0
  45. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/emode/emode.py +0 -0
  46. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/emode/tests/__init__.py +0 -0
  47. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/emode/tests/conftest.py +0 -0
  48. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/emode/tests/test_emode.py +0 -0
  49. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/fdtdz/__init__.py +0 -0
  50. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/fdtdz/get_epsilon_fdtdz.py +0 -0
  51. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/fdtdz/get_ports_fdtdz.py +0 -0
  52. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/fdtdz/get_sparameters_fdtdz.py +0 -0
  53. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/femwell/__init__.py +0 -0
  54. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/femwell/mode_solver.py +0 -0
  55. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/femwell/solve_thermal.py +0 -0
  56. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/femwell/test_mode_solver.py +0 -0
  57. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gfviz/Makefile +0 -0
  58. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gfviz/__init__.py +0 -0
  59. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gfviz/b64.py +0 -0
  60. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gfviz/gfviz.py +0 -0
  61. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gfviz/netlist.py +0 -0
  62. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gfviz/serve.py +0 -0
  63. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gfviz/static/b64.js +0 -0
  64. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gfviz/static/schemedit.js +0 -0
  65. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gfviz/static/schemedit.wasm +0 -0
  66. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gfviz/templates/example.json +0 -0
  67. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gfviz/templates/index.html +0 -0
  68. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/__init__.py +0 -0
  69. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/get_material.py +0 -0
  70. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/get_meep_geometry.py +0 -0
  71. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/get_port_eigenmode.py +0 -0
  72. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/get_simulation.py +0 -0
  73. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/get_simulation_grating_farfield.py +0 -0
  74. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/get_simulation_grating_fiber.py +0 -0
  75. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/meep_adjoint_optimization.py +0 -0
  76. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_eigenmode.py +0 -0
  77. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_materials.py +0 -0
  78. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_crossing.csv +0 -0
  79. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_straight.csv +0 -0
  80. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_crossing.csv +0 -0
  81. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_straight.csv +0 -0
  82. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_symmetries_straight.csv +0 -0
  83. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi.csv +0 -0
  84. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi_pool.csv +0 -0
  85. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_crossing_symmetric.csv +0 -0
  86. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight.csv +0 -0
  87. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_batch.csv +0 -0
  88. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi.csv +0 -0
  89. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi_pool.csv +0 -0
  90. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_symmetric.csv +0 -0
  91. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/test_write_sparameters_meep.py +0 -0
  92. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/write_sparameters_grating.py +0 -0
  93. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/write_sparameters_meep.py +0 -0
  94. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/write_sparameters_meep_batch.py +0 -0
  95. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/gmeep/write_sparameters_meep_mpi.py +0 -0
  96. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/__init__.py +0 -0
  97. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/dataprep/__init__.py +0 -0
  98. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/dataprep/regions.py +0 -0
  99. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/drc/__init__.py +0 -0
  100. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/drc/check_duplicated_cells.py +0 -0
  101. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/drc/check_exclusion.py +0 -0
  102. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/drc/check_inclusion.py +0 -0
  103. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/drc/check_space.py +0 -0
  104. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/drc/check_width.py +0 -0
  105. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/drc/count_drc.py +0 -0
  106. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/drc/samples/drc_errors.py +0 -0
  107. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/drc/write_drc.py +0 -0
  108. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/get_density.py +0 -0
  109. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/get_netlist.py +0 -0
  110. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/netlist_graph.py +0 -0
  111. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/netlist_spice_reader.py +0 -0
  112. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/plot_nets.py +0 -0
  113. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/tests/__init__.py +0 -0
  114. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/tests/conftest.py +0 -0
  115. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/tests/test_dataprep_regions.py +0 -0
  116. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/tests/test_density.py +0 -0
  117. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/tests/test_drc_exclusion.py +0 -0
  118. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/tests/test_drc_inclusion.py +0 -0
  119. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/tests/test_drc_space.py +0 -0
  120. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/tests/test_drc_width.py +0 -0
  121. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/tests/test_global_density.py +0 -0
  122. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/tests/test_netlist_spice_reader.py +0 -0
  123. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/klayout/tests/test_plot_nets.py +0 -0
  124. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/lumerical/README.md +0 -0
  125. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/lumerical/__init__.py +0 -0
  126. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/lumerical/interconnect.py +0 -0
  127. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/lumerical/mapping_ubcpdk.yml +0 -0
  128. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/lumerical/read.py +0 -0
  129. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/lumerical/settings.py +0 -0
  130. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/lumerical/tests/test_lumerical_read_sparameters.py +0 -0
  131. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/lumerical/tests/test_netlist.py +0 -0
  132. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/lumerical/tests/test_netlist_get_routes.py +0 -0
  133. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/lumerical/write_sparameters_lumerical_components.py +0 -0
  134. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/materials/__init__.py +0 -0
  135. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/materials/inorganic.py +0 -0
  136. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/materials/optical/__init__.py +0 -0
  137. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/materials/optical/optical_mat.py +0 -0
  138. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/materials/optical/refractive_index_info.py +0 -0
  139. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/materials/semiconductor/__init__.py +0 -0
  140. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/materials/semiconductor/semiconductor_mat.py +0 -0
  141. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/meow/__init__.py +0 -0
  142. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/meow/meow_eme.py +0 -0
  143. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/meow/test_meow_simulation.py +0 -0
  144. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/meshwell/__init__.py +0 -0
  145. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/meshwell/get_meshwell_3D.py +0 -0
  146. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/meshwell/get_meshwell_cross_section.py +0 -0
  147. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/meshwell/tests/test_meshwell.py +0 -0
  148. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/__init__.py +0 -0
  149. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/coupler.py +0 -0
  150. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/find_coupling_vs_gap.py +0 -0
  151. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/find_mode_dispersion.py +0 -0
  152. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/find_modes.py +0 -0
  153. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/find_modes_cross_section.py +0 -0
  154. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/find_neff_ng_dw_dh.py +0 -0
  155. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/find_neff_vs_width.py +0 -0
  156. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/get_mode_solver_coupler.py +0 -0
  157. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/get_mode_solver_cross_section.py +0 -0
  158. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/get_mode_solver_rib.py +0 -0
  159. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/modes/neff_vs_width_nitride.csv +0 -0
  160. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/modes/neff_vs_width_rib.csv +0 -0
  161. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/modes/neff_vs_width_strip.csv +0 -0
  162. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/neff_convergence_test.py +0 -0
  163. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/neff_vs_width.csv +0 -0
  164. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/overlap.py +0 -0
  165. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/tests/test_dw_dh/test_dw_dh.csv +0 -0
  166. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/tests/test_dw_dh/test_dw_dh.obtained.csv +0 -0
  167. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/tests/test_dw_dh/test_dw_dh_dispersion.csv +0 -0
  168. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/tests/test_dw_dh.py +0 -0
  169. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/tests/test_find_modes.py +0 -0
  170. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/tests/test_find_modes_dispersion.py +0 -0
  171. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.csv +0 -0
  172. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.obtained.csv +0 -0
  173. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/tests/test_neff_vs_width.py +0 -0
  174. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/types.py +0 -0
  175. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/modes/waveguide.py +0 -0
  176. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/palace/__init__.py +0 -0
  177. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/palace/driven.json +0 -0
  178. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/palace/electrostatic.json +0 -0
  179. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/palace/get_capacitance.py +0 -0
  180. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/palace/get_scattering.py +0 -0
  181. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/palace/tests/__init__.py +0 -0
  182. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/palace/tests/conftest.py +0 -0
  183. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/palace/tests/test_palace.py +0 -0
  184. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/path_length_analysis/__init__.py +0 -0
  185. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/path_length_analysis/path_length_analysis.py +0 -0
  186. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/path_length_analysis/path_length_analysis_from_gds.py +0 -0
  187. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/path_length_analysis/test_pathlength_extraction.py +0 -0
  188. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/path_length_analysis/test_pathlength_extraction_from_gds.py +0 -0
  189. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/path_length_analysis/test_pathlength_extraction_utils.py +0 -0
  190. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/path_length_analysis/utils.py +0 -0
  191. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/photonic_circuit_models/__init__.py +0 -0
  192. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/photonic_circuit_models/coupler.py +0 -0
  193. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/photonic_circuit_models/fsr.py +0 -0
  194. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/photonic_circuit_models/heater.py +0 -0
  195. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/photonic_circuit_models/mzi.py +0 -0
  196. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/photonic_circuit_models/ring.py +0 -0
  197. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/process/__init__.py +0 -0
  198. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/process/diffusion.py +0 -0
  199. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/process/implant_tables.py +0 -0
  200. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/process/pysrim.py +0 -0
  201. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/process/silicon.py +0 -0
  202. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/process/skew/antimony_si_skew.csv +0 -0
  203. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/process/skew/arsenic_si_skew.csv +0 -0
  204. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/process/skew/boron_si_skew.csv +0 -0
  205. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/process/skew/phosphorus_si_skew.csv +0 -0
  206. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/__init__.py +0 -0
  207. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/interpolators.py +0 -0
  208. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/mlp.py +0 -0
  209. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/models.py +0 -0
  210. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/parameter.py +0 -0
  211. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/plot_model.py +0 -0
  212. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/read.py +0 -0
  213. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/strategy.py +0 -0
  214. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/tests/__init__.py +0 -0
  215. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/tests/conftest.py +0 -0
  216. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/tests/test_mzi.py +0 -0
  217. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.obtained.yml +0 -0
  218. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.yml +0 -0
  219. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/tests/test_mzi_lattice.py +0 -0
  220. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sax/tests/test_parameters.py +0 -0
  221. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sentaurus/mask_sde.py +0 -0
  222. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sentaurus/mask_sprocess.py +0 -0
  223. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sentaurus/sde.py +0 -0
  224. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sentaurus/sdevice.py +0 -0
  225. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sentaurus/sprocess.py +0 -0
  226. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/sentaurus/svisual.py +0 -0
  227. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/spice/__init__.py +0 -0
  228. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/spice/spice_to_yaml.py +0 -0
  229. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/spice/tests/__init__.py +0 -0
  230. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/spice/tests/test_interconnect.py +0 -0
  231. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/__init__.py +0 -0
  232. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/component.py +0 -0
  233. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/get_results.py +0 -0
  234. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/get_simulation_grating_coupler.py +0 -0
  235. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/materials.py +0 -0
  236. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/__init__.py +0 -0
  237. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/conftest.py +0 -0
  238. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/test_component_modeler.py +0 -0
  239. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/test_materials.py +0 -0
  240. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/test_modes/test_sweep_width.csv +0 -0
  241. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/test_modes/test_sweep_width.obtained.csv +0 -0
  242. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/test_modes_coupler.py +0 -0
  243. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/test_modes_waveguide.py +0 -0
  244. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/test_plot_simulation_grating_coupler.py +0 -0
  245. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/test_write_sparameters.py +0 -0
  246. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/tests_sparameters/sim_ref.yaml +0 -0
  247. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters.py +0 -0
  248. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters_grating_coupler.py +0 -0
  249. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/types.py +0 -0
  250. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/util.py +0 -0
  251. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/tidy3d/write_sparameters_grating_coupler.py +0 -0
  252. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/typings.py +0 -0
  253. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/vlsir/__init__.py +0 -0
  254. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/vlsir/export_netlist.py +0 -0
  255. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/vlsir/tests/__init__.py +0 -0
  256. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/vlsir/tests/conftest.py +0 -0
  257. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/vlsir/tests/resources/pads_correct.cir +0 -0
  258. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/vlsir/tests/resources/pads_correct.scs +0 -0
  259. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/vlsir/tests/resources/pads_correct.sp +0 -0
  260. {gplugins-2.1.3 → gplugins-2.1.5}/gplugins/vlsir/tests/test_vlsir.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gplugins
3
- Version: 2.1.3
3
+ Version: 2.1.5
4
4
  Summary: gdsfactory plugins
5
5
  Keywords: python
6
6
  Author-email: gdsfactory <contact@gdsfactory.com>
@@ -88,7 +88,7 @@ Provides-Extra: tidy3d
88
88
  Provides-Extra: vlsir
89
89
  Import-Name: gplugins
90
90
 
91
- # gplugins 2.1.3
91
+ # gplugins 2.1.5
92
92
 
93
93
  [![docs](https://github.com/gdsfactory/gplugins/actions/workflows/pages.yml/badge.svg)](https://gdsfactory.github.io/gplugins/)
94
94
  [![PyPI](https://img.shields.io/pypi/v/gplugins)](https://pypi.org/project/gplugins/)
@@ -1,4 +1,4 @@
1
- # gplugins 2.1.3
1
+ # gplugins 2.1.5
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__ = "2.1.3"
3
+ __version__ = "2.1.5"
4
4
 
5
5
  import pathlib
6
6
 
@@ -0,0 +1,36 @@
1
+ from types import SimpleNamespace
2
+
3
+ import gdsfactory as gf
4
+ from kfactory import kdb
5
+
6
+ from gplugins.lumerical.write_sparameters_lumerical import (
7
+ _get_component_with_background_layers,
8
+ )
9
+
10
+
11
+ class _LayerStack:
12
+ def __init__(self, level: SimpleNamespace) -> None:
13
+ self.layers = {"background": level}
14
+
15
+ def get_component_with_derived_layers(
16
+ self, component: gf.Component
17
+ ) -> gf.Component:
18
+ return component.copy()
19
+
20
+
21
+ def test_materializes_background_layer_with_exclusions() -> None:
22
+ component = gf.Component()
23
+ component.add_polygon([(0, 0), (10, 0), (10, 10), (0, 10)], layer=(3, 0))
24
+ component.add_polygon([(2, 2), (8, 2), (8, 8), (2, 8)], layer=(2, 0))
25
+ layer_stack = _LayerStack(
26
+ SimpleNamespace(
27
+ background=True,
28
+ layer=(1, 0),
29
+ background_exclude_layers=((2, 0),),
30
+ )
31
+ )
32
+
33
+ result = _get_component_with_background_layers(component, layer_stack)
34
+ region = kdb.Region(result.kdb_cell.begin_shapes_rec(result.kcl.layer(1, 0)))
35
+
36
+ assert region.area() == 64_000_000
@@ -0,0 +1,78 @@
1
+ import sys
2
+ from types import ModuleType
3
+
4
+ import gdsfactory as gf
5
+ from gdsfactory.technology import LayerLevel, LayerStack
6
+
7
+ from gplugins.lumerical.write_sparameters_lumerical import write_sparameters_lumerical
8
+
9
+
10
+ class _Session:
11
+ def __init__(self) -> None:
12
+ self.ports = 0
13
+
14
+ def newproject(self) -> None:
15
+ pass
16
+
17
+ def selectall(self) -> None:
18
+ pass
19
+
20
+ def deleteall(self) -> None:
21
+ pass
22
+
23
+ def addrect(self, **kwargs: object) -> None:
24
+ pass
25
+
26
+ def setnamed(self, *args: object) -> None:
27
+ pass
28
+
29
+ def addfdtd(self, **kwargs: object) -> None:
30
+ pass
31
+
32
+ def gdsimport(self, *args: object) -> None:
33
+ pass
34
+
35
+ def addport(self) -> None:
36
+ self.ports += 1
37
+
38
+ def setglobalsource(self, *args: object) -> None:
39
+ pass
40
+
41
+
42
+ def test_keeps_ports_on_layers_not_in_layer_stack(monkeypatch, tmp_path) -> None:
43
+ monkeypatch.setitem(sys.modules, "lumapi", ModuleType("lumapi"))
44
+ component = gf.Component()
45
+ component.add_polygon([(0, 0), (10, 0), (10, 1), (0, 1)], layer=(1, 0))
46
+ component.add_port(
47
+ name="known",
48
+ center=(0, 0.5),
49
+ width=1,
50
+ orientation=180,
51
+ layer=(1, 0),
52
+ port_type="optical",
53
+ )
54
+ component.add_port(
55
+ name="unknown",
56
+ center=(10, 0.5),
57
+ width=1,
58
+ orientation=0,
59
+ layer=(2, 0),
60
+ port_type="optical",
61
+ )
62
+ layer_stack = LayerStack(
63
+ layers={
64
+ "core": LayerLevel(layer=(1, 0), thickness=0.22, zmin=0, material="sio2")
65
+ }
66
+ )
67
+ session = _Session()
68
+
69
+ result = write_sparameters_lumerical(
70
+ component,
71
+ session=session,
72
+ run=False,
73
+ dirpath=tmp_path,
74
+ layer_stack=layer_stack,
75
+ )
76
+
77
+ assert result is session
78
+ assert session.ports == 2
@@ -53,6 +53,56 @@ def _add_material_name_aliases(
53
53
  material_mapping[canonical_name] = material_mapping[legacy_name]
54
54
 
55
55
 
56
+ def _get_component_with_background_layers(
57
+ component: gf.Component, layer_stack: LayerStack
58
+ ) -> gf.Component:
59
+ """Materialize LayerStack background layers for simulation export.
60
+
61
+ Background layers occupy the component bounding box minus their declared
62
+ source-layer exclusions. ``get_component_with_derived_layers`` evaluates
63
+ derived layers but does not apply this background-layer semantics.
64
+ """
65
+ component_with_derived_layers = layer_stack.get_component_with_derived_layers(
66
+ component
67
+ )
68
+ if not any(
69
+ getattr(level, "background", False) for level in layer_stack.layers.values()
70
+ ):
71
+ return component_with_derived_layers
72
+
73
+ from kfactory import kdb
74
+
75
+ for level in layer_stack.layers.values():
76
+ if not getattr(level, "background", False):
77
+ continue
78
+
79
+ layer = level.layer
80
+ if isinstance(layer, LogicalLayer):
81
+ target_layer = gf.get_layer_tuple(layer.layer)
82
+ elif isinstance(layer, DerivedLayer):
83
+ assert level.derived_layer is not None
84
+ target_layer = gf.get_layer_tuple(level.derived_layer.layer)
85
+ elif isinstance(layer, tuple):
86
+ target_layer = layer
87
+ else:
88
+ raise ValueError(
89
+ f"Layer {layer!r} is not a DerivedLayer, LogicalLayer, or tuple"
90
+ )
91
+
92
+ background = kdb.Region(component.kdb_cell.bbox())
93
+ for excluded_layer in getattr(level, "background_exclude_layers", ()):
94
+ excluded_layer_tuple = gf.get_layer_tuple(excluded_layer)
95
+ excluded_layer_index = component.kcl.layer(*excluded_layer_tuple)
96
+ background -= kdb.Region(
97
+ component.kdb_cell.begin_shapes_rec(excluded_layer_index)
98
+ )
99
+
100
+ component_with_derived_layers.remove_layers([target_layer])
101
+ component_with_derived_layers.add_polygon(background, layer=target_layer)
102
+
103
+ return component_with_derived_layers
104
+
105
+
56
106
  def set_material(session, structure: str, material: MaterialSpec) -> None:
57
107
  """Sets the material of a structure.
58
108
 
@@ -228,7 +278,6 @@ def write_sparameters_lumerical(
228
278
  ymargin_top = ymargin_top or ymargin
229
279
  ymargin_bot = ymargin_bot or ymargin
230
280
 
231
- layer_to_thickness = layer_stack.get_layer_to_thickness()
232
281
  layer_to_zmin = layer_stack.get_layer_to_zmin()
233
282
  layer_to_material = layer_stack.get_layer_to_material()
234
283
 
@@ -246,18 +295,11 @@ def write_sparameters_lumerical(
246
295
  sim_settings.update(**settings)
247
296
  ss = SimulationSettingsLumericalFdtd(**sim_settings)
248
297
 
249
- component_with_booleans = layer_stack.get_component_with_derived_layers(component)
250
- component_with_padding = gf.add_padding_container(
251
- component_with_booleans,
252
- default=0,
253
- top=ymargin_top,
254
- bottom=ymargin_bot,
255
- left=xmargin_left,
256
- right=xmargin_right,
298
+ component_with_booleans = _get_component_with_background_layers(
299
+ component, layer_stack
257
300
  )
258
-
259
301
  component_extended = gf.components.extend_ports(
260
- component_with_padding, length=ss.distance_monitors_to_pml
302
+ component_with_booleans, length=ss.distance_monitors_to_pml
261
303
  )
262
304
 
263
305
  ports = component.ports.filter(port_type="optical")
@@ -292,10 +334,10 @@ def write_sparameters_lumerical(
292
334
  print(run_false_warning)
293
335
 
294
336
  logger.info(f"Writing Sparameters to {filepath_npz.absolute()!r}")
295
- x_min = (component_extended.xmin - xmargin) * 1e-6
296
- x_max = (component_extended.xmax + xmargin) * 1e-6
297
- y_min = (component_extended.ymin - ymargin) * 1e-6
298
- y_max = (component_extended.ymax + ymargin) * 1e-6
337
+ x_min = (component_extended.xmin - xmargin_left) * 1e-6
338
+ x_max = (component_extended.xmax + xmargin_right) * 1e-6
339
+ y_min = (component_extended.ymin - ymargin_bot) * 1e-6
340
+ y_max = (component_extended.ymax + ymargin_top) * 1e-6
299
341
 
300
342
  index_to_thickness = {}
301
343
  index_to_zmin = {}
@@ -470,8 +512,14 @@ def write_sparameters_lumerical(
470
512
 
471
513
  for i, port in enumerate(ports):
472
514
  port_layer_index = gf.get_layer(port.layer)
473
- zmin = index_to_zmin[port_layer_index]
474
- thickness = index_to_thickness[port_layer_index]
515
+ zmin = index_to_zmin.get(port_layer_index, component_zmin)
516
+ thickness = index_to_thickness.get(port_layer_index, component_thickness)
517
+ if port_layer_index not in index_to_thickness:
518
+ logger.warning(
519
+ "Port %r is on a layer not defined in the layer stack; using the "
520
+ "component vertical extent for its mode port",
521
+ port.name,
522
+ )
475
523
  z = (zmin + thickness) / 2
476
524
  zspan = 2 * ss.port_margin + thickness
477
525
 
@@ -23,7 +23,6 @@ import tidy3d as td
23
23
  import xarray
24
24
  from gdsfactory import logger
25
25
  from gdsfactory.config import PATH
26
- from gdsfactory.typings import PathType
27
26
  from pydantic.v1 import BaseModel
28
27
  from tidy3d.plugins import waveguide
29
28
  from tqdm.auto import tqdm
@@ -155,7 +154,9 @@ class Waveguide(BaseModel, extra="forbid", arbitrary_types_allowed=True):
155
154
  precision: Precision = "double"
156
155
  grid_resolution: int = 20
157
156
  max_grid_scaling: float = 1.2
158
- cache_path: PathType | None = PATH.modes
157
+ # PathType is a PEP 695 type alias, which pydantic v1 cannot introspect,
158
+ # so the union is spelled out here.
159
+ cache_path: str | pathlib.Path | None = PATH.modes
159
160
  overwrite: bool = False
160
161
 
161
162
  _cached_data = pydantic.PrivateAttr()
@@ -25,7 +25,7 @@ license = {file = "LICENSE"}
25
25
  name = "gplugins"
26
26
  readme = "README.md"
27
27
  requires-python = ">=3.11"
28
- version = "2.1.3"
28
+ version = "2.1.5"
29
29
 
30
30
  [project.optional-dependencies]
31
31
  dev = [
@@ -186,7 +186,7 @@ message_template = "Bump to {new_version}"
186
186
  tag_template = "v{new_version}"
187
187
 
188
188
  [tool.tbump.version]
189
- current = "2.1.3"
189
+ current = "2.1.5"
190
190
  regex = '''
191
191
  (?P<major>\d+)
192
192
  \.
File without changes
File without changes