gplugins 1.2.1__tar.gz → 1.2.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 (253) hide show
  1. {gplugins-1.2.1 → gplugins-1.2.3}/PKG-INFO +25 -18
  2. {gplugins-1.2.1 → gplugins-1.2.3}/README.md +24 -17
  3. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/__init__.py +1 -1
  4. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/base_models/component.py +19 -0
  5. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/add_simulation_markers.py +3 -7
  6. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/get_simulation.py +5 -2
  7. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/drc/write_drc.py +9 -1
  8. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sentaurus/sde.py +18 -21
  9. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/get_simulation_grating_coupler.py +216 -213
  10. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/tests/test_materials.py +7 -7
  11. {gplugins-1.2.1 → gplugins-1.2.3}/pyproject.toml +2 -2
  12. {gplugins-1.2.1 → gplugins-1.2.3}/LICENSE +0 -0
  13. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/__init__.py +0 -0
  14. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/base_models/__init__.py +0 -0
  15. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/base_models/simulation.py +0 -0
  16. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/config.py +0 -0
  17. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/types.py +0 -0
  18. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/__init__.py +0 -0
  19. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/async_helpers.py +0 -0
  20. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/cache.py +0 -0
  21. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/convert_sparameters.py +0 -0
  22. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/disable_print.py +0 -0
  23. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/get_capacitance.py +0 -0
  24. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/get_component_with_local_layers.py +0 -0
  25. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/get_component_with_net_layers.py +0 -0
  26. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/get_effective_indices.py +0 -0
  27. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/get_scattering.py +0 -0
  28. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/get_sparameters_path.py +0 -0
  29. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/optical_constants.py +0 -0
  30. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/parse_layer_stack.py +0 -0
  31. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/plot.py +0 -0
  32. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/plot_csv.py +0 -0
  33. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/port_symmetries.py +0 -0
  34. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/common/utils/tests/test_get_component_with_new_port_layers.py +0 -0
  35. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/dagster/Makefile +0 -0
  36. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/dagster/__init__.py +0 -0
  37. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/dagster/workflow.py +0 -0
  38. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/devsim/__init__.py +0 -0
  39. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/devsim/doping.py +0 -0
  40. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/devsim/get_simulation.py +0 -0
  41. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/devsim/get_simulation_xsection.py +0 -0
  42. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/devsim/get_solver.py +0 -0
  43. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/devsim/test_devsim.py +0 -0
  44. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/elmer/__init__.py +0 -0
  45. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/elmer/electrostatic.sif.j2 +0 -0
  46. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/elmer/get_capacitance.py +0 -0
  47. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/elmer/tests/test_elmer.py +0 -0
  48. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/fdtdz/__init__.py +0 -0
  49. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/fdtdz/get_epsilon_fdtdz.py +0 -0
  50. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/fdtdz/get_ports_fdtdz.py +0 -0
  51. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/fdtdz/get_sparameters_fdtdz.py +0 -0
  52. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/femwell/__init__.py +0 -0
  53. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/femwell/mode_solver.py +0 -0
  54. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/femwell/solve_thermal.py +0 -0
  55. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/femwell/test_mode_solver.py +0 -0
  56. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gfviz/Makefile +0 -0
  57. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gfviz/__init__.py +0 -0
  58. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gfviz/b64.py +0 -0
  59. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gfviz/gfviz.py +0 -0
  60. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gfviz/netlist.py +0 -0
  61. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gfviz/serve.py +0 -0
  62. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gfviz/static/b64.js +0 -0
  63. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gfviz/static/schemedit.js +0 -0
  64. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gfviz/static/schemedit.wasm +0 -0
  65. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gfviz/templates/example.json +0 -0
  66. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gfviz/templates/index.html +0 -0
  67. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/__init__.py +0 -0
  68. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/get_material.py +0 -0
  69. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/get_meep_geometry.py +0 -0
  70. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/get_port_eigenmode.py +0 -0
  71. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/get_simulation_grating_farfield.py +0 -0
  72. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/get_simulation_grating_fiber.py +0 -0
  73. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/meep_adjoint_optimization.py +0 -0
  74. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_eigenmode.py +0 -0
  75. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_materials.py +0 -0
  76. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_crossing.csv +0 -0
  77. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_straight.csv +0 -0
  78. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_crossing.csv +0 -0
  79. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_straight.csv +0 -0
  80. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_symmetries_straight.csv +0 -0
  81. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi.csv +0 -0
  82. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi_pool.csv +0 -0
  83. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_crossing_symmetric.csv +0 -0
  84. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight.csv +0 -0
  85. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_batch.csv +0 -0
  86. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi.csv +0 -0
  87. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi_pool.csv +0 -0
  88. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_symmetric.csv +0 -0
  89. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/test_write_sparameters_meep.py +0 -0
  90. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/write_sparameters_grating.py +0 -0
  91. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/write_sparameters_meep.py +0 -0
  92. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/write_sparameters_meep_batch.py +0 -0
  93. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmeep/write_sparameters_meep_mpi.py +0 -0
  94. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmsh/__init__.py +0 -0
  95. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmsh/define_polysurfaces.py +0 -0
  96. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmsh/get_mesh.py +0 -0
  97. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmsh/parse_component.py +0 -0
  98. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmsh/parse_gds.py +0 -0
  99. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmsh/tests/test_custom_names.py +0 -0
  100. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmsh/tests/test_meshing_2D.py +0 -0
  101. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmsh/tests/test_meshing_3D.py +0 -0
  102. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmsh/uz_xsection_mesh.py +0 -0
  103. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmsh/xy_xsection_mesh.py +0 -0
  104. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/gmsh/xyz_mesh.py +0 -0
  105. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/__init__.py +0 -0
  106. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/dataprep/__init__.py +0 -0
  107. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/dataprep/regions.py +0 -0
  108. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/drc/__init__.py +0 -0
  109. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/drc/check_duplicated_cells.py +0 -0
  110. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/drc/check_exclusion.py +0 -0
  111. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/drc/check_inclusion.py +0 -0
  112. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/drc/check_space.py +0 -0
  113. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/drc/check_width.py +0 -0
  114. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/drc/count_drc.py +0 -0
  115. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/drc/samples/drc_errors.py +0 -0
  116. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/get_density.py +0 -0
  117. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/get_netlist.py +0 -0
  118. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/netlist_graph.py +0 -0
  119. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/netlist_spice_reader.py +0 -0
  120. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/plot_nets.py +0 -0
  121. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/tests/test_dataprep_regions.py +0 -0
  122. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/tests/test_density.py +0 -0
  123. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/tests/test_drc_exclusion.py +0 -0
  124. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/tests/test_drc_inclusion.py +0 -0
  125. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/tests/test_drc_space.py +0 -0
  126. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/tests/test_drc_width.py +0 -0
  127. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/tests/test_global_density.py +0 -0
  128. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/tests/test_netlist_spice_reader.py +0 -0
  129. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/klayout/tests/test_plot_nets.py +0 -0
  130. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/lumerical/README.md +0 -0
  131. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/lumerical/__init__.py +0 -0
  132. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/lumerical/interconnect.py +0 -0
  133. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/lumerical/mapping_ubcpdk.yml +0 -0
  134. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/lumerical/read.py +0 -0
  135. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/lumerical/settings.py +0 -0
  136. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/lumerical/tests/test_lumerical_read_sparameters.py +0 -0
  137. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/lumerical/tests/test_netlist.py +0 -0
  138. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/lumerical/tests/test_netlist_get_routes.py +0 -0
  139. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/lumerical/write_sparameters_lumerical.py +0 -0
  140. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/lumerical/write_sparameters_lumerical_components.py +0 -0
  141. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/materials/__init__.py +0 -0
  142. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/materials/inorganic.py +0 -0
  143. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/materials/optical/__init__.py +0 -0
  144. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/materials/optical/optical_mat.py +0 -0
  145. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/materials/optical/refractive_index_info.py +0 -0
  146. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/materials/semiconductor/__init__.py +0 -0
  147. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/materials/semiconductor/semiconductor_mat.py +0 -0
  148. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/meow/__init__.py +0 -0
  149. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/meow/meow_eme.py +0 -0
  150. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/meow/test_meow_simulation.py +0 -0
  151. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/__init__.py +0 -0
  152. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/coupler.py +0 -0
  153. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/find_coupling_vs_gap.py +0 -0
  154. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/find_mode_dispersion.py +0 -0
  155. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/find_modes.py +0 -0
  156. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/find_modes_cross_section.py +0 -0
  157. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/find_neff_ng_dw_dh.py +0 -0
  158. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/find_neff_vs_width.py +0 -0
  159. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/get_mode_solver_coupler.py +0 -0
  160. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/get_mode_solver_cross_section.py +0 -0
  161. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/get_mode_solver_rib.py +0 -0
  162. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/modes/neff_vs_width_nitride.csv +0 -0
  163. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/modes/neff_vs_width_rib.csv +0 -0
  164. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/modes/neff_vs_width_strip.csv +0 -0
  165. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/neff_convergence_test.py +0 -0
  166. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/neff_vs_width.csv +0 -0
  167. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/overlap.py +0 -0
  168. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/tests/test_dw_dh/test_dw_dh.csv +0 -0
  169. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/tests/test_dw_dh/test_dw_dh.obtained.csv +0 -0
  170. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/tests/test_dw_dh/test_dw_dh_dispersion.csv +0 -0
  171. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/tests/test_dw_dh.py +0 -0
  172. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/tests/test_find_modes.py +0 -0
  173. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/tests/test_find_modes_dispersion.py +0 -0
  174. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.csv +0 -0
  175. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.obtained.csv +0 -0
  176. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/tests/test_neff_vs_width.py +0 -0
  177. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/types.py +0 -0
  178. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/modes/waveguide.py +0 -0
  179. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/palace/__init__.py +0 -0
  180. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/palace/driven.json +0 -0
  181. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/palace/electrostatic.json +0 -0
  182. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/palace/get_capacitance.py +0 -0
  183. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/palace/get_scattering.py +0 -0
  184. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/palace/tests/test_palace.py +0 -0
  185. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/path_length_analysis/__init__.py +0 -0
  186. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/path_length_analysis/path_length_analysis.py +0 -0
  187. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/path_length_analysis/path_length_analysis_from_gds.py +0 -0
  188. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/path_length_analysis/test_pathlength_extraction.py +0 -0
  189. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/photonic_circuit_models/__init__.py +0 -0
  190. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/photonic_circuit_models/coupler.py +0 -0
  191. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/photonic_circuit_models/fsr.py +0 -0
  192. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/photonic_circuit_models/heater.py +0 -0
  193. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/photonic_circuit_models/mzi.py +0 -0
  194. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/photonic_circuit_models/ring.py +0 -0
  195. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/process/__init__.py +0 -0
  196. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/process/diffusion.py +0 -0
  197. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/process/implant_tables.py +0 -0
  198. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/process/pysrim.py +0 -0
  199. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/process/silicon.py +0 -0
  200. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/process/skew/antimony_si_skew.csv +0 -0
  201. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/process/skew/arsenic_si_skew.csv +0 -0
  202. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/process/skew/boron_si_skew.csv +0 -0
  203. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/process/skew/phosphorus_si_skew.csv +0 -0
  204. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/__init__.py +0 -0
  205. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/build_model.py +0 -0
  206. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/integrations/__init__.py +0 -0
  207. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/integrations/femwell_waveguide_model.py +0 -0
  208. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/integrations/meep_FDTD_model.py +0 -0
  209. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/integrations/meow_eme_model.py +0 -0
  210. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/interpolators.py +0 -0
  211. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/mlp.py +0 -0
  212. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/models.py +0 -0
  213. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/parameter.py +0 -0
  214. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/plot_model.py +0 -0
  215. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/read.py +0 -0
  216. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/tests/test_mzi.py +0 -0
  217. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.obtained.yml +0 -0
  218. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.yml +0 -0
  219. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/tests/test_mzi_lattice.py +0 -0
  220. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sax/tests/test_parameters.py +0 -0
  221. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sentaurus/mask_sde.py +0 -0
  222. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sentaurus/mask_sprocess.py +0 -0
  223. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sentaurus/sdevice.py +0 -0
  224. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sentaurus/sprocess.py +0 -0
  225. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/sentaurus/svisual.py +0 -0
  226. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/spice/__init__.py +0 -0
  227. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/spice/spice_to_yaml.py +0 -0
  228. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/spice/tests/__init__.py +0 -0
  229. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/spice/tests/test_interconnect.py +0 -0
  230. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/__init__.py +0 -0
  231. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/component.py +0 -0
  232. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/get_results.py +0 -0
  233. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/materials.py +0 -0
  234. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/modes.py +0 -0
  235. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/tests/test_component_modeler.py +0 -0
  236. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/tests/test_modes/test_sweep_width.csv +0 -0
  237. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/tests/test_modes/test_sweep_width.obtained.csv +0 -0
  238. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/tests/test_modes_coupler.py +0 -0
  239. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/tests/test_modes_waveguide.py +0 -0
  240. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/tests/test_plot_simulation_grating_coupler.py +0 -0
  241. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/tests/test_write_sparameters.py +0 -0
  242. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/tests/tests_sparameters/sim_ref.yaml +0 -0
  243. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters.py +0 -0
  244. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters_grating_coupler.py +0 -0
  245. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/types.py +0 -0
  246. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/util.py +0 -0
  247. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/tidy3d/write_sparameters_grating_coupler.py +0 -0
  248. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/vlsir/__init__.py +0 -0
  249. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/vlsir/export_netlist.py +0 -0
  250. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/vlsir/tests/resources/pads_correct.cir +0 -0
  251. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/vlsir/tests/resources/pads_correct.scs +0 -0
  252. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/vlsir/tests/resources/pads_correct.sp +0 -0
  253. {gplugins-1.2.1 → gplugins-1.2.3}/gplugins/vlsir/tests/test_vlsir.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: gplugins
3
- Version: 1.2.1
3
+ Version: 1.2.3
4
4
  Summary: gdsfactory plugins
5
5
  Keywords: python
6
6
  Author-email: gdsfactory <contact@gdsfactory.com>
@@ -91,7 +91,7 @@ Provides-Extra: schematic
91
91
  Provides-Extra: tidy3d
92
92
  Provides-Extra: vlsir
93
93
 
94
- # gplugins 1.2.1
94
+ # gplugins 1.2.3
95
95
 
96
96
  [![docs](https://github.com/gdsfactory/gplugins/actions/workflows/pages.yml/badge.svg)](https://gdsfactory.github.io/gplugins/)
97
97
  [![PyPI](https://img.shields.io/pypi/v/gplugins)](https://pypi.org/project/gplugins/)
@@ -101,22 +101,29 @@ Provides-Extra: vlsir
101
101
 
102
102
  GDSFactory plugins:
103
103
 
104
- - `devsim` TCAD device simulator.
105
- - `meow` Eigen Mode Expansion (EME).
106
- - `femwell` Finite Element Method Solver (heaters, modes, TCAD, RF waveguides).
107
- - `gmsh` mesh structures.
108
- - `tidy3d` Finite Difference Time Domain (FDTD) simulations on the cloud using GPU.
109
- - `lumerical` For Ansys FDTD and Circuit interconnect.
110
- - `klayout` for fill, dataprep and testing.
111
- - `ray` for distributed computing and optimization.
112
- - `schematic`: for bokeh schematic editor and `path_length_analysis`.
113
- - `meep` for FDTD.
114
- - `mpb` for MPB mode solver.
115
- - `elmer` for electrostatic (capacitive) simulations.
116
- - `palace` for full-wave driven (S parameter) and electrostatic (capacitive) simulations.
117
- - `sax` S-parameter circuit solver.
118
- - `vlsir` for parsing GDS-extracted circuit netlists into Cadence Spectre, NgSpice and Xyce Schematic File formats.
119
- - `luminescent` for FDTD simulations.
104
+ - Device simulators
105
+ - Meshing
106
+ - FDTD
107
+ - `Ansys Lumerical`
108
+ - tidy3d
109
+ - Luminescent
110
+ - FDTDz
111
+ - MEEP
112
+ - FEM
113
+ - `femwell` Finite Element Method Solver (heaters, modes, TCAD, RF waveguides).
114
+ - `elmer` for electrostatic (capacitive) simulations.
115
+ - `palace` for full-wave driven (S parameter) and electrostatic (capacitive) simulations.
116
+ - EME
117
+ - `meow` Eigen Mode Expansion (EME).
118
+ - Mode Solver
119
+ - Tidy3d
120
+ - Femwell
121
+ - MPB
122
+ - TCAD
123
+ - `devsim` TCAD device simulator.
124
+ - Circuit simulations
125
+ - `sax` S-parameter circuit solver.
126
+ - `vlsir` for parsing GDS-extracted circuit netlists into Cadence Spectre, NgSpice and Xyce Schematic File formats.
120
127
 
121
128
 
122
129
  ## Installation
@@ -1,4 +1,4 @@
1
- # gplugins 1.2.1
1
+ # gplugins 1.2.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/)
@@ -8,22 +8,29 @@
8
8
 
9
9
  GDSFactory plugins:
10
10
 
11
- - `devsim` TCAD device simulator.
12
- - `meow` Eigen Mode Expansion (EME).
13
- - `femwell` Finite Element Method Solver (heaters, modes, TCAD, RF waveguides).
14
- - `gmsh` mesh structures.
15
- - `tidy3d` Finite Difference Time Domain (FDTD) simulations on the cloud using GPU.
16
- - `lumerical` For Ansys FDTD and Circuit interconnect.
17
- - `klayout` for fill, dataprep and testing.
18
- - `ray` for distributed computing and optimization.
19
- - `schematic`: for bokeh schematic editor and `path_length_analysis`.
20
- - `meep` for FDTD.
21
- - `mpb` for MPB mode solver.
22
- - `elmer` for electrostatic (capacitive) simulations.
23
- - `palace` for full-wave driven (S parameter) and electrostatic (capacitive) simulations.
24
- - `sax` S-parameter circuit solver.
25
- - `vlsir` for parsing GDS-extracted circuit netlists into Cadence Spectre, NgSpice and Xyce Schematic File formats.
26
- - `luminescent` for FDTD simulations.
11
+ - Device simulators
12
+ - Meshing
13
+ - FDTD
14
+ - `Ansys Lumerical`
15
+ - tidy3d
16
+ - Luminescent
17
+ - FDTDz
18
+ - MEEP
19
+ - FEM
20
+ - `femwell` Finite Element Method Solver (heaters, modes, TCAD, RF waveguides).
21
+ - `elmer` for electrostatic (capacitive) simulations.
22
+ - `palace` for full-wave driven (S parameter) and electrostatic (capacitive) simulations.
23
+ - EME
24
+ - `meow` Eigen Mode Expansion (EME).
25
+ - Mode Solver
26
+ - Tidy3d
27
+ - Femwell
28
+ - MPB
29
+ - TCAD
30
+ - `devsim` TCAD device simulator.
31
+ - Circuit simulations
32
+ - `sax` S-parameter circuit solver.
33
+ - `vlsir` for parsing GDS-extracted circuit netlists into Cadence Spectre, NgSpice and Xyce Schematic File formats.
27
34
 
28
35
 
29
36
  ## Installation
@@ -1,6 +1,6 @@
1
1
  """gplugins - gdsfactory plugins."""
2
2
 
3
- __version__ = "1.2.1"
3
+ __version__ = "1.2.3"
4
4
 
5
5
  import pathlib
6
6
 
@@ -1,10 +1,12 @@
1
1
  from functools import cached_property
2
2
  from hashlib import md5
3
+ from typing import TypeAlias
3
4
 
4
5
  import gdsfactory as gf
5
6
  import numpy as np
6
7
  from gdsfactory.component import Component
7
8
  from gdsfactory.technology import LayerLevel, LayerStack
9
+ from numpy.typing import NDArray
8
10
  from pydantic import (
9
11
  BaseModel,
10
12
  ConfigDict,
@@ -17,6 +19,23 @@ from gplugins.gmsh.parse_gds import cleanup_component
17
19
 
18
20
  from ..types import AnyShapelyPolygon, GFComponent
19
21
 
22
+ Coordinate: TypeAlias = tuple[float, float]
23
+
24
+
25
+ def move_polar_rad_copy(
26
+ pos: Coordinate, angle: float, length: float
27
+ ) -> NDArray[np.float64]:
28
+ """Returns the points of a position (pos) with angle, shifted by length.
29
+
30
+ Args:
31
+ pos: position.
32
+ angle: in radians.
33
+ length: extension length in um.
34
+ """
35
+ c = np.cos(angle)
36
+ s = np.sin(angle)
37
+ return pos + length * np.array([c, s])
38
+
20
39
 
21
40
  class LayeredComponentBase(BaseModel):
22
41
  model_config = ConfigDict(
@@ -5,10 +5,8 @@ from __future__ import annotations
5
5
  import warnings
6
6
 
7
7
  import gdsfactory as gf
8
- import numpy as np
9
8
  from gdsfactory.add_pins import add_pin_rectangle
10
9
  from gdsfactory.component import Component
11
- from gdsfactory.components.bend_circular import bend_circular
12
10
  from gdsfactory.pdk import get_layer_stack
13
11
  from gdsfactory.technology import LayerLevel
14
12
  from gdsfactory.typings import ComponentSpec, Layer
@@ -16,7 +14,7 @@ from gdsfactory.typings import ComponentSpec, Layer
16
14
 
17
15
  @gf.cell
18
16
  def add_simulation_markers(
19
- component: ComponentSpec = bend_circular,
17
+ component: ComponentSpec = gf.c.bend_circular,
20
18
  port_margin: float = 3,
21
19
  port_source_name: str = "o1",
22
20
  layer_source: Layer = (110, 0),
@@ -107,9 +105,7 @@ def add_simulation_markers(
107
105
 
108
106
  # Add source
109
107
  port = ref.ports[port_source_name]
110
- angle_rad = np.radians(port.orientation)
111
-
112
- port = port.move_polar_copy(angle=angle_rad, d=port_source_offset)
108
+ port = port.copy_polar(d=port_source_offset / c.kcl.dbu, angle=port.angle)
113
109
  add_pin_rectangle(c, port=port, port_margin=port_margin, layer=layer_source)
114
110
 
115
111
  layer_stack.layers["source"] = LayerLevel(
@@ -124,7 +120,7 @@ def add_simulation_markers(
124
120
  if __name__ == "__main__":
125
121
  # c = gf.components.coupler_ring()
126
122
  c = gf.components.mmi1x2()
127
- c = add_simulation_markers(c)
123
+ # c = add_simulation_markers(c)
128
124
  c.show()
129
125
  scene = c.to_3d()
130
126
  scene.show()
@@ -10,10 +10,10 @@ import gdsfactory as gf
10
10
  import meep as mp
11
11
  import numpy as np
12
12
  from gdsfactory.component import Component
13
- from gdsfactory.components.extension import extend_ports, move_polar_rad_copy
14
13
  from gdsfactory.pdk import get_layer_stack
15
14
  from gdsfactory.technology import LayerStack
16
15
 
16
+ from gplugins.common.base_models.component import move_polar_rad_copy
17
17
  from gplugins.gmeep.get_material import get_material
18
18
  from gplugins.gmeep.get_meep_geometry import (
19
19
  get_meep_geometry_from_component,
@@ -108,6 +108,7 @@ def get_simulation(
108
108
  wavelength_points: wavelength steps.
109
109
  dfcen: delta frequency.
110
110
  port_source_name: input port name.
111
+ port_source_mode: mode number for source.
111
112
  port_margin: margin on each side of the port.
112
113
  distance_source_to_monitors: in (um) source goes before.
113
114
  port_source_offset: offset between source GDS port and source MEEP port.
@@ -162,7 +163,9 @@ def get_simulation(
162
163
  ), f"component needs to be a gf.Component, got Type {type(component)}"
163
164
 
164
165
  component_extended = (
165
- extend_ports(component=component, length=extend_ports_length, centered=True)
166
+ gf.c.extend_ports(
167
+ component=component, length=extend_ports_length, centered=True
168
+ )
166
169
  if extend_ports_length
167
170
  else component
168
171
  )
@@ -138,6 +138,7 @@ def check_width(value: float | int, layer: str, angle_limit: float = 90.0) -> st
138
138
 
139
139
  Args:
140
140
  value: width in um if float, dbu if int (nm).
141
+ layer: layer name.
141
142
  angle_limit: angle limit in degrees.
142
143
  """
143
144
  category = "width"
@@ -153,6 +154,7 @@ def check_space(value: float | int, layer: str, angle_limit: float = 90.0) -> st
153
154
 
154
155
  Args:
155
156
  value: width in um if float, dbu if int (nm).
157
+ layer: layer name.
156
158
  angle_limit: angle limit in degrees.
157
159
  """
158
160
  category = "space"
@@ -198,7 +200,7 @@ def check_area(layer: str, min_area_um2: float | int = 2.0) -> str:
198
200
  """Return script for min area checking.
199
201
 
200
202
  Args:
201
- layer1: layer name.
203
+ layer: layer name.
202
204
  min_area_um2: min area in um2. int if dbu, float if um.
203
205
 
204
206
  """
@@ -449,6 +451,12 @@ if __name__ == "__main__":
449
451
  derived_layer_boolean("TRENCH", "SLAB90", "-", "WG"),
450
452
  check_width(layer="WG", value=0.2),
451
453
  check_space(layer="WG", value=0.2),
454
+ check_width(layer="M1", value=0.2),
455
+ check_space(layer="M1", value=0.2),
456
+ check_width(layer="M2", value=1.0),
457
+ check_space(layer="M2", value=1.0),
458
+ check_width(layer="M3", value=1.0),
459
+ check_space(layer="M3", value=1.0),
452
460
  check_separation(layer1="HEATER", layer2="M1", value=1.0),
453
461
  check_enclosing(layer1="VIAC", layer2="M1", value=0.2),
454
462
  check_area(layer="WG", min_area_um2=0.05),
@@ -43,14 +43,14 @@ def initialize_sde(
43
43
  """Returns a string defining the geometry definition for a Sentaurus sde file based on a component, initial wafer state, and settings.
44
44
 
45
45
  Arguments:
46
- component,: gdsfactory component containing polygons defining the mask
46
+ component: gdsfactory component containing polygons defining the mask
47
47
  waferstack: gdsfactory layerstack representing the initial wafer
48
48
  layermap: gdsfactory LayerMap object containing all layers
49
- process: list of gdsfactory.technology.processes process steps
50
- xsection_bounds: two in-plane coordinates ((x1,y1), (x2,y2)) defining a line cut for a 2D process cross-section
49
+ xsection_bounds: two in-plane coordinates ((x1,y1), (x2,y2)) defining a line cut for a 2D process cross-section. If None, simulate in 3D.
51
50
  u_offset: for the x-axis of the 2D coordinate system, useful to go back to component units if xsection_bounds parallel to x or y
52
- round_tol (int): for gds cleanup (grid snapping by rounding coordinates)
53
- simplify_tol (float): for gds cleanup (shape simplification)
51
+ round_tol: for gds cleanup (grid snapping by rounding coordinates)
52
+ simplify_tol: for gds cleanup (shape simplification)
53
+ header_str: initial string to write to the TCL file. Useful for settings
54
54
  """
55
55
  output_str = ""
56
56
 
@@ -113,25 +113,22 @@ def write_sde(
113
113
  """Writes a Sentaurus Device Editor Scheme file for the component + layermap + initial waferstack + process.
114
114
 
115
115
  Arguments:
116
- component,: gdsfactory component containing polygons defining the mask
117
- waferstack: gdsfactory layerstack representing the initial wafer
118
- layermap: gdsfactory LayerMap object containing all layers
119
- process: list of gdsfactory.technology.processes process steps
120
- xsection_bounds: two in-plane coordinates ((x1,y1), (x2,y2)) defining a line cut for a 2D process cross-section. If None, simulate in 3D.
121
- u_offset: offset for lateral dimension of xsection mesh
122
- save_directory: directory where to save output and script. Default ./sprocess
116
+ component: gdsfactory component containing polygons defining the mask.
117
+ waferstack: gdsfactory layerstack representing the initial wafer.
118
+ layermap: gdsfactory LayerMap object containing all layers.
119
+ process: list of gdsfactory.technology.processes process steps.
120
+ contact_str: string defining the contacts to be added to the device.
121
+ slice_str: string defining the slices to be added to the device.
122
+ init_tdr: tdr file containing the initial structure, ready for sdevice simulation.
123
+ save_directory: directory where to save output and script. Default ./sprocess.
123
124
  execution_directory: directory where sprocess will be run from. Default local ./
124
125
  filename: name of the final sprocess command file
125
- struct_prefix: prefixes of the final sprocess command file
126
- structout: tdr file containing the final structure, ready for sdevice simulation. Defaults to component name.
127
- contact_portnames Tuple(str): list of portnames to convert into device contacts
128
- round_tol (int): for gds cleanup (grid snapping by rounding coordinates)
126
+ fileout: tdr file containing the final structure, ready for sdevice simulation. Defaults to component name.
127
+ round_tol: for gds cleanup (grid snapping by rounding coordinates).
129
128
  simplify_tol (float): for gds cleanup (shape simplification)
130
- split_steps (bool): if True, creates a new workbench node for each step, and saves a TDR file at each step. Useful for fabrication splits, visualization, and debugging.
131
- init_lines (str): initial string to write to the TCL file. Useful for settings
132
- initial_z_resolutions {key: float}: initial layername: spacing mapping for mesh resolution in the wafer normal direction
133
- initial_xy_resolution (float): initial resolution in the wafer plane
134
- global_device_remeshing_str (str): commands to apply before remeshing
129
+ device_remesh (bool): whether to remesh the device after processing.
130
+ remesh_str (str): string defining the remeshing options.
131
+ header_str (str): initial string to write to the TCL file. Useful for settings.
135
132
  num_threads (int): for parallelization
136
133
  """
137
134
  save_directory = Path("./sde/") if save_directory is None else Path(save_directory)