gplugins 1.1.2__tar.gz → 1.1.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.
- {gplugins-1.1.2 → gplugins-1.1.3}/PKG-INFO +6 -5
- {gplugins-1.1.2 → gplugins-1.1.3}/README.md +1 -1
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/__init__.py +1 -1
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/get_component_with_net_layers.py +24 -15
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/get_meep_geometry.py +3 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/get_simulation.py +1 -1
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/meep_adjoint_optimization.py +1 -1
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmsh/parse_gds.py +1 -2
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/lumerical/write_sparameters_lumerical.py +11 -13
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/path_length_analysis/path_length_analysis_from_gds.py +34 -18
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sentaurus/sprocess.py +11 -1
- {gplugins-1.1.2 → gplugins-1.1.3}/pyproject.toml +6 -5
- {gplugins-1.1.2 → gplugins-1.1.3}/LICENSE +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/base_models/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/base_models/component.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/base_models/simulation.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/config.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/types.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/add_simulation_markers.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/async_helpers.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/cache.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/convert_sparameters.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/disable_print.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/get_capacitance.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/get_component_with_local_layers.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/get_effective_indices.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/get_scattering.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/get_sparameters_path.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/optical_constants.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/parse_layer_stack.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/plot.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/plot_csv.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/port_symmetries.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/common/utils/tests/test_get_component_with_new_port_layers.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/dagster/Makefile +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/dagster/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/dagster/workflow.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/devsim/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/devsim/doping.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/devsim/get_simulation.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/devsim/get_simulation_xsection.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/devsim/get_solver.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/devsim/test_devsim.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/elmer/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/elmer/electrostatic.sif.j2 +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/elmer/get_capacitance.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/elmer/tests/test_elmer.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/fdtdz/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/fdtdz/get_epsilon_fdtdz.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/fdtdz/get_ports_fdtdz.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/fdtdz/get_sparameters_fdtdz.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/femwell/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/femwell/mode_solver.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/femwell/solve_thermal.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/femwell/test_mode_solver.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gfviz/Makefile +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gfviz/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gfviz/b64.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gfviz/gfviz.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gfviz/netlist.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gfviz/serve.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gfviz/static/b64.js +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gfviz/static/schemedit.js +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gfviz/static/schemedit.wasm +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gfviz/templates/example.json +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gfviz/templates/index.html +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/get_material.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/get_port_eigenmode.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/get_simulation_grating_farfield.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/get_simulation_grating_fiber.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_eigenmode.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_materials.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_crossing.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_straight.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_crossing.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_straight.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_symmetries_straight.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi_pool.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_crossing_symmetric.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_batch.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi_pool.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_symmetric.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_write_sparameters_meep.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/write_sparameters_grating.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/write_sparameters_meep.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/write_sparameters_meep_batch.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/write_sparameters_meep_mpi.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmsh/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmsh/define_polysurfaces.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmsh/get_mesh.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmsh/parse_component.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmsh/tests/test_custom_names.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmsh/tests/test_meshing_2D.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmsh/tests/test_meshing_3D.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmsh/uz_xsection_mesh.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmsh/xy_xsection_mesh.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmsh/xyz_mesh.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/dataprep/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/dataprep/regions.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/drc/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/drc/check_duplicated_cells.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/drc/check_exclusion.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/drc/check_inclusion.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/drc/check_space.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/drc/check_width.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/drc/count_drc.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/drc/samples/drc_errors.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/drc/write_drc.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/get_density.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/get_netlist.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/netlist_graph.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/netlist_spice_reader.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/plot_nets.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/tests/test_dataprep_regions.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/tests/test_density.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/tests/test_drc_exclusion.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/tests/test_drc_inclusion.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/tests/test_drc_space.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/tests/test_drc_width.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/tests/test_global_density.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/tests/test_netlist_spice_reader.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/klayout/tests/test_plot_nets.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/lumerical/README.md +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/lumerical/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/lumerical/interconnect.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/lumerical/mapping_ubcpdk.yml +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/lumerical/read.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/lumerical/settings.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/lumerical/tests/test_lumerical_read_sparameters.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/lumerical/tests/test_netlist.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/lumerical/tests/test_netlist_get_routes.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/lumerical/write_sparameters_lumerical_components.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/materials/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/materials/inorganic.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/materials/optical/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/materials/optical/optical_mat.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/materials/optical/refractive_index_info.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/materials/semiconductor/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/materials/semiconductor/semiconductor_mat.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/meow/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/meow/meow_eme.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/meow/test_meow_simulation.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/coupler.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/find_coupling_vs_gap.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/find_mode_dispersion.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/find_modes.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/find_modes_cross_section.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/find_neff_ng_dw_dh.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/find_neff_vs_width.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/get_mode_solver_coupler.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/get_mode_solver_cross_section.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/get_mode_solver_rib.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/modes/neff_vs_width_nitride.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/modes/neff_vs_width_rib.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/modes/neff_vs_width_strip.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/neff_convergence_test.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/neff_vs_width.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/overlap.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/tests/test_dw_dh/test_dw_dh.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/tests/test_dw_dh/test_dw_dh.obtained.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/tests/test_dw_dh/test_dw_dh_dispersion.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/tests/test_dw_dh.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/tests/test_find_modes.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/tests/test_find_modes_dispersion.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.obtained.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/tests/test_neff_vs_width.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/types.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/modes/waveguide.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/palace/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/palace/driven.json +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/palace/electrostatic.json +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/palace/get_capacitance.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/palace/get_scattering.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/palace/tests/test_palace.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/path_length_analysis/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/path_length_analysis/path_length_analysis.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/path_length_analysis/test_pathlength_extraction.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/photonic_circuit_models/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/photonic_circuit_models/coupler.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/photonic_circuit_models/fsr.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/photonic_circuit_models/heater.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/photonic_circuit_models/mzi.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/photonic_circuit_models/ring.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/process/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/process/diffusion.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/process/implant_tables.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/process/pysrim.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/process/silicon.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/process/skew/antimony_si_skew.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/process/skew/arsenic_si_skew.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/process/skew/boron_si_skew.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/process/skew/phosphorus_si_skew.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/build_model.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/integrations/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/integrations/femwell_waveguide_model.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/integrations/meep_FDTD_model.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/integrations/meow_eme_model.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/interpolators.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/mlp.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/models.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/parameter.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/plot_model.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/read.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/tests/test_mzi.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.obtained.yml +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.yml +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/tests/test_mzi_lattice.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sax/tests/test_parameters.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sentaurus/mask_sde.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sentaurus/mask_sprocess.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sentaurus/sde.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sentaurus/sdevice.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/sentaurus/svisual.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/spice/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/spice/spice_to_yaml.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/spice/tests/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/spice/tests/test_interconnect.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/component.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/get_results.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/get_simulation_grating_coupler.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/materials.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/modes.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/tests/test_component_modeler.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/tests/test_materials.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/tests/test_modes/test_sweep_width.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/tests/test_modes/test_sweep_width.obtained.csv +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/tests/test_modes_coupler.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/tests/test_modes_waveguide.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/tests/test_plot_simulation_grating_coupler.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/tests/test_write_sparameters.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/tests/tests_sparameters/sim_ref.yaml +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters_grating_coupler.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/types.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/util.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/tidy3d/write_sparameters_grating_coupler.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/vlsir/__init__.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/vlsir/export_netlist.py +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/vlsir/tests/resources/pads_correct.cir +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/vlsir/tests/resources/pads_correct.scs +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/vlsir/tests/resources/pads_correct.sp +0 -0
- {gplugins-1.1.2 → gplugins-1.1.3}/gplugins/vlsir/tests/test_vlsir.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.3
|
|
2
2
|
Name: gplugins
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.3
|
|
4
4
|
Summary: gdsfactory plugins
|
|
5
5
|
Keywords: python
|
|
6
6
|
Author-email: gdsfactory <contact@gdsfactory.com>
|
|
@@ -14,6 +14,7 @@ Requires-Dist: gdsfactory>=8.5.3
|
|
|
14
14
|
Requires-Dist: pint
|
|
15
15
|
Requires-Dist: gdstk
|
|
16
16
|
Requires-Dist: tqdm
|
|
17
|
+
Requires-Dist: numpy<3
|
|
17
18
|
Requires-Dist: dagster ; extra == "dagster"
|
|
18
19
|
Requires-Dist: dagit ; extra == "dagster"
|
|
19
20
|
Requires-Dist: pre-commit ; extra == "dev"
|
|
@@ -34,7 +35,7 @@ Requires-Dist: tidy3d>=2.5.2,<2.8 ; extra == "devsim"
|
|
|
34
35
|
Requires-Dist: jupytext ; extra == "docs"
|
|
35
36
|
Requires-Dist: matplotlib ; extra == "docs"
|
|
36
37
|
Requires-Dist: jupyter-book~=1.0 ; extra == "docs"
|
|
37
|
-
Requires-Dist: pyvista[all,trame]<=0.43.8 ; extra == "docs"
|
|
38
|
+
Requires-Dist: pyvista[all, trame]<=0.43.8 ; extra == "docs"
|
|
38
39
|
Requires-Dist: femwell~=0.1.11 ; extra == "femwell"
|
|
39
40
|
Requires-Dist: meshwell~=1.0.7 ; extra == "femwell"
|
|
40
41
|
Requires-Dist: jinja2 ; extra == "gfviz"
|
|
@@ -60,7 +61,7 @@ Requires-Dist: tidy3d>=2.5.2,<2.8 ; extra == "meow"
|
|
|
60
61
|
Requires-Dist: jax>=0.4.26 ; extra == "sax"
|
|
61
62
|
Requires-Dist: jaxlib>=0.4.26 ; extra == "sax"
|
|
62
63
|
Requires-Dist: flax>=0.8.2 ; extra == "sax"
|
|
63
|
-
Requires-Dist: sax
|
|
64
|
+
Requires-Dist: sax>=0.13.1,<0.15.0 ; extra == "sax"
|
|
64
65
|
Requires-Dist: scikit-learn ; extra == "sax"
|
|
65
66
|
Requires-Dist: pyvis<=0.3.1 ; extra == "sax"
|
|
66
67
|
Requires-Dist: bokeh ; extra == "schematic"
|
|
@@ -85,7 +86,7 @@ Provides-Extra: schematic
|
|
|
85
86
|
Provides-Extra: tidy3d
|
|
86
87
|
Provides-Extra: vlsir
|
|
87
88
|
|
|
88
|
-
# gplugins 1.1.
|
|
89
|
+
# gplugins 1.1.3
|
|
89
90
|
|
|
90
91
|
[](https://gdsfactory.github.io/gplugins/)
|
|
91
92
|
[](https://pypi.org/project/gplugins/)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import copy
|
|
2
2
|
|
|
3
3
|
import gdsfactory as gf
|
|
4
|
-
import
|
|
4
|
+
from gdsfactory.technology import LogicalLayer
|
|
5
5
|
from gdsfactory.typings import Component, LayerStack
|
|
6
6
|
|
|
7
7
|
|
|
@@ -56,9 +56,9 @@ def get_component_with_net_layers(
|
|
|
56
56
|
add_to_layerstack: True by default, but can be set to False to disable parsing of the layerstack.
|
|
57
57
|
"""
|
|
58
58
|
|
|
59
|
-
return NotImplementedError(
|
|
60
|
-
|
|
61
|
-
)
|
|
59
|
+
# return NotImplementedError(
|
|
60
|
+
# "Meshing component with net layers not implemented in gdsfactory8 yet."
|
|
61
|
+
# )
|
|
62
62
|
|
|
63
63
|
# Initialize returned component
|
|
64
64
|
net_component = component.copy()
|
|
@@ -67,17 +67,23 @@ def get_component_with_net_layers(
|
|
|
67
67
|
for i, portname in enumerate(port_names):
|
|
68
68
|
port = component.ports[portname]
|
|
69
69
|
# Get original port layer polygons, and modify a new component without that layer
|
|
70
|
-
polygons =
|
|
71
|
-
|
|
70
|
+
polygons = (
|
|
71
|
+
net_component.extract(layers=(port.layer,))
|
|
72
|
+
.get_polygons()
|
|
73
|
+
.get(port.layer, [])
|
|
74
|
+
)
|
|
75
|
+
net_component = net_component.remove_layers(layers=(port.layer,))
|
|
72
76
|
for polygon in polygons:
|
|
73
77
|
# If polygon belongs to port, create a unique new layer, and add the polygon to it
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
[port.center],
|
|
77
|
-
gdstk.offset(gdstk.Polygon(polygon), gf.get_active_pdk().grid_size),
|
|
78
|
-
|
|
78
|
+
if polygon.sized(3 * gf.kcl.dbu).inside(port.center):
|
|
79
|
+
# if gdstk.inside(
|
|
80
|
+
# [port.center],
|
|
81
|
+
# gdstk.offset(gdstk.Polygon(polygon), gf.get_active_pdk().grid_size),
|
|
82
|
+
# )[0]:
|
|
79
83
|
try:
|
|
80
|
-
port_layernames = layer_stack.get_layer_to_layername()[
|
|
84
|
+
port_layernames = layer_stack.get_layer_to_layername()[
|
|
85
|
+
LogicalLayer(layer=port.layer)
|
|
86
|
+
]
|
|
81
87
|
except KeyError as e:
|
|
82
88
|
raise KeyError(
|
|
83
89
|
"Make sure your `layer_stack` contains all layers with ports"
|
|
@@ -89,10 +95,13 @@ def get_component_with_net_layers(
|
|
|
89
95
|
)
|
|
90
96
|
if add_to_layerstack:
|
|
91
97
|
new_layer = copy.deepcopy(layer_stack.layers[old_layername])
|
|
92
|
-
new_layer.layer = (
|
|
93
|
-
|
|
94
|
-
|
|
98
|
+
new_layer.layer = LogicalLayer(
|
|
99
|
+
layer=(
|
|
100
|
+
new_layers_init[0] + i,
|
|
101
|
+
new_layers_init[1] + j,
|
|
102
|
+
)
|
|
95
103
|
)
|
|
104
|
+
new_layer.name = f"{old_layername}{delimiter}{portname}"
|
|
96
105
|
layer_stack.layers[f"{old_layername}{delimiter}{portname}"] = (
|
|
97
106
|
new_layer
|
|
98
107
|
)
|
|
@@ -44,12 +44,15 @@ def get_meep_geometry_from_component(
|
|
|
44
44
|
layer_to_polygons = component_with_booleans.get_polygons_points()
|
|
45
45
|
|
|
46
46
|
ordered_layer_stack_keys = order_layer_stack(layer_stack)[::-1]
|
|
47
|
+
|
|
47
48
|
for layername in ordered_layer_stack_keys:
|
|
48
49
|
layer = layer_stack.layers[layername].layer
|
|
49
50
|
|
|
50
51
|
if layer not in layer_to_polygons:
|
|
51
52
|
continue
|
|
52
53
|
polygons = layer_to_polygons[layer]
|
|
54
|
+
print(f"layer: {layer}, polygons: {polygons}")
|
|
55
|
+
|
|
53
56
|
if layer in layer_to_thickness and layer in layer_to_material:
|
|
54
57
|
height = layer_to_thickness[layer] if is_3d else mp.inf
|
|
55
58
|
zmin_um = layer_to_zmin[layer] if is_3d else 0
|
|
@@ -137,7 +137,7 @@ def get_meep_adjoint_optimizer(
|
|
|
137
137
|
for monitor in monitors.values()
|
|
138
138
|
]
|
|
139
139
|
|
|
140
|
-
c = component.
|
|
140
|
+
c = component.dup()
|
|
141
141
|
for design_region, design_variable in zip(design_regions, design_variables):
|
|
142
142
|
sim.geometry.append(
|
|
143
143
|
Block(design_region.size, design_region.center, material=design_variable)
|
|
@@ -24,7 +24,6 @@ def round_coordinates(geom, ndigits=4):
|
|
|
24
24
|
|
|
25
25
|
def fuse_polygons(component, layer, round_tol=4, simplify_tol=1e-4, offset_tol=None):
|
|
26
26
|
"""Take all polygons from a layer, and returns a single (Multi)Polygon shapely object."""
|
|
27
|
-
|
|
28
27
|
layer_region = layer.get_shapes(component)
|
|
29
28
|
|
|
30
29
|
# Convert polygons to shapely
|
|
@@ -37,7 +36,7 @@ def fuse_polygons(component, layer, round_tol=4, simplify_tol=1e-4, offset_tol=N
|
|
|
37
36
|
exterior_points.append((point.x / 1000, point.y / 1000))
|
|
38
37
|
for hole_index in range(klayout_polygon.holes()):
|
|
39
38
|
holes_points = []
|
|
40
|
-
for point in
|
|
39
|
+
for point in klayout_polygon.each_point_hole(hole_index):
|
|
41
40
|
holes_points.append((point.x / 1000, point.y / 1000))
|
|
42
41
|
interior_points.append(holes_points)
|
|
43
42
|
|
|
@@ -241,7 +241,6 @@ def write_sparameters_lumerical(
|
|
|
241
241
|
component_extended_beyond_pml = gf.components.extension.extend_ports(
|
|
242
242
|
component=component_extended, length=ss.port_extension
|
|
243
243
|
)
|
|
244
|
-
component_extended_beyond_pml.name = "top"
|
|
245
244
|
gdspath = component_extended_beyond_pml.write_gds()
|
|
246
245
|
|
|
247
246
|
filepath_npz = get_sparameters_path(
|
|
@@ -270,17 +269,17 @@ def write_sparameters_lumerical(
|
|
|
270
269
|
|
|
271
270
|
layers_thickness = [
|
|
272
271
|
layer_to_thickness[layer]
|
|
273
|
-
for layer in component_with_booleans.
|
|
272
|
+
for layer in component_with_booleans.layers
|
|
274
273
|
if layer in layer_to_thickness
|
|
275
274
|
]
|
|
276
275
|
if not layers_thickness:
|
|
277
276
|
raise ValueError(
|
|
278
|
-
f"no layers for component {component.
|
|
277
|
+
f"no layers for component {component.layers}"
|
|
279
278
|
f"in layer stack {layer_stack}"
|
|
280
279
|
)
|
|
281
280
|
layers_zmin = [
|
|
282
281
|
layer_to_zmin[layer]
|
|
283
|
-
for layer in component_with_booleans.
|
|
282
|
+
for layer in component_with_booleans.layers
|
|
284
283
|
if layer in layer_to_zmin
|
|
285
284
|
]
|
|
286
285
|
component_thickness = max(layers_thickness)
|
|
@@ -357,7 +356,7 @@ def write_sparameters_lumerical(
|
|
|
357
356
|
simulation_time=ss.simulation_time,
|
|
358
357
|
simulation_temperature=ss.simulation_temperature,
|
|
359
358
|
)
|
|
360
|
-
component_layers = component_with_booleans.
|
|
359
|
+
component_layers = component_with_booleans.layers
|
|
361
360
|
|
|
362
361
|
for layer, thickness in layer_to_thickness.items():
|
|
363
362
|
if layer not in component_layers:
|
|
@@ -410,21 +409,21 @@ def write_sparameters_lumerical(
|
|
|
410
409
|
direction = "Backward"
|
|
411
410
|
injection_axis = "x-axis"
|
|
412
411
|
dxp = 0
|
|
413
|
-
dyp = 2 * ss.port_margin + port.
|
|
412
|
+
dyp = 2 * ss.port_margin + port.dwidth
|
|
414
413
|
elif 45 < deg < 90 + 45:
|
|
415
414
|
direction = "Backward"
|
|
416
415
|
injection_axis = "y-axis"
|
|
417
|
-
dxp = 2 * ss.port_margin + port.
|
|
416
|
+
dxp = 2 * ss.port_margin + port.dwidth
|
|
418
417
|
dyp = 0
|
|
419
418
|
elif 90 + 45 < deg < 180 + 45:
|
|
420
419
|
direction = "Forward"
|
|
421
420
|
injection_axis = "x-axis"
|
|
422
421
|
dxp = 0
|
|
423
|
-
dyp = 2 * ss.port_margin + port.
|
|
422
|
+
dyp = 2 * ss.port_margin + port.dwidth
|
|
424
423
|
elif 180 + 45 < deg < 180 + 45 + 90:
|
|
425
424
|
direction = "Forward"
|
|
426
425
|
injection_axis = "y-axis"
|
|
427
|
-
dxp = 2 * ss.port_margin + port.
|
|
426
|
+
dxp = 2 * ss.port_margin + port.dwidth
|
|
428
427
|
dyp = 0
|
|
429
428
|
|
|
430
429
|
else:
|
|
@@ -545,9 +544,8 @@ def _sample_convergence_wavelength():
|
|
|
545
544
|
|
|
546
545
|
|
|
547
546
|
if __name__ == "__main__":
|
|
548
|
-
import lumapi
|
|
549
|
-
|
|
550
|
-
s = lumapi.FDTD()
|
|
547
|
+
# import lumapi
|
|
548
|
+
# s = lumapi.FDTD()
|
|
551
549
|
|
|
552
550
|
# component = gf.components.straight(length=2.5)
|
|
553
551
|
component = gf.components.mmi1x2()
|
|
@@ -557,7 +555,7 @@ if __name__ == "__main__":
|
|
|
557
555
|
component=component,
|
|
558
556
|
material_name_to_lumerical=material_name_to_lumerical,
|
|
559
557
|
run=False,
|
|
560
|
-
session=s,
|
|
558
|
+
# session=s,
|
|
561
559
|
)
|
|
562
560
|
# c = gf.components.coupler_ring(length_x=3)
|
|
563
561
|
# c = gf.components.mmi1x2()
|
{gplugins-1.1.2 → gplugins-1.1.3}/gplugins/path_length_analysis/path_length_analysis_from_gds.py
RENAMED
|
@@ -8,6 +8,7 @@ import matplotlib.pyplot as plt
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
import shapely as sh
|
|
10
10
|
import shapely.ops as ops
|
|
11
|
+
from gdsfactory import logger
|
|
11
12
|
from gdsfactory.typings import List, Optional, Tuple
|
|
12
13
|
from klayout.db import DPoint, Polygon
|
|
13
14
|
from scipy.signal import savgol_filter
|
|
@@ -89,8 +90,8 @@ def centerline_single_poly_2_ports(poly, under_sampling, port_list) -> np.ndarra
|
|
|
89
90
|
mid_point_found = _check_midpoint_found(inner_points, outer_points, port_list)
|
|
90
91
|
|
|
91
92
|
# ==== This is for debugging, keep until this is stable ====
|
|
92
|
-
#
|
|
93
|
-
#
|
|
93
|
+
# logger.debug(len(outer_points))
|
|
94
|
+
# logger.debug(len(inner_points))
|
|
94
95
|
# input()
|
|
95
96
|
|
|
96
97
|
# Relatively simple check to make sure that the first half is the outer curve and the
|
|
@@ -133,7 +134,7 @@ def centerline_single_poly_2_ports(poly, under_sampling, port_list) -> np.ndarra
|
|
|
133
134
|
if n_rolls > points.shape[0] and n_fixes_tried < 10 and not mid_point_found:
|
|
134
135
|
# Sometimes it is enough if we make the inner point be +-n elements longer
|
|
135
136
|
n_fixes_tried += 1
|
|
136
|
-
#
|
|
137
|
+
# logger.debug(f"Trying fix {n_fixes_tried}")
|
|
137
138
|
n_rolls = 0
|
|
138
139
|
|
|
139
140
|
outer_points = points[: (mid_index + fix_values[n_fixes_tried]), :]
|
|
@@ -154,7 +155,7 @@ def centerline_single_poly_2_ports(poly, under_sampling, port_list) -> np.ndarra
|
|
|
154
155
|
|
|
155
156
|
elif n_rolls > points.shape[0] and not mid_point_found:
|
|
156
157
|
# We could not find the right inner and outer points
|
|
157
|
-
|
|
158
|
+
logger.error(f"We could not find the center line correctly for {port_list}")
|
|
158
159
|
mid_point_found = True
|
|
159
160
|
outer_points = points[:mid_index]
|
|
160
161
|
inner_points = points[mid_index:]
|
|
@@ -166,18 +167,29 @@ def centerline_single_poly_2_ports(poly, under_sampling, port_list) -> np.ndarra
|
|
|
166
167
|
inds = np.argsort(outer_points[:, 0])
|
|
167
168
|
outer_points = outer_points[inds, :]
|
|
168
169
|
|
|
169
|
-
# Apply undersampling if necessary
|
|
170
|
-
inner_points = np.append(
|
|
171
|
-
|
|
172
|
-
)
|
|
173
|
-
outer_points = np.append(
|
|
174
|
-
|
|
175
|
-
)
|
|
170
|
+
# # (OLD, keep juts in case for now) Apply undersampling if necessary
|
|
171
|
+
# inner_points = np.append(
|
|
172
|
+
# inner_points[::under_sampling], np.array([inner_points[-1]]), axis=0
|
|
173
|
+
# )
|
|
174
|
+
# outer_points = np.append(
|
|
175
|
+
# outer_points[::under_sampling], np.array([outer_points[-1]]), axis=0
|
|
176
|
+
# )
|
|
177
|
+
|
|
178
|
+
# Apply undersampling if necessary, and add the last point if it is not there
|
|
179
|
+
last_inner_pt = inner_points[-1]
|
|
180
|
+
inner_points = inner_points[::under_sampling]
|
|
181
|
+
if last_inner_pt not in inner_points:
|
|
182
|
+
inner_points = np.append(inner_points, np.array([last_inner_pt]), axis=0)
|
|
183
|
+
|
|
184
|
+
last_outer_pt = outer_points[-1]
|
|
185
|
+
outer_points = outer_points[::under_sampling]
|
|
186
|
+
if last_outer_pt not in outer_points:
|
|
187
|
+
outer_points = np.append(outer_points, np.array([last_outer_pt]), axis=0)
|
|
176
188
|
|
|
177
189
|
# There is a chance that the length of inner and outer is different
|
|
178
190
|
# Interpolate if that's the case
|
|
179
191
|
if inner_points.shape[0] != outer_points.shape[0]:
|
|
180
|
-
#
|
|
192
|
+
# logger.debug('interpolating')
|
|
181
193
|
if inner_points.shape[0] > outer_points.shape[0]:
|
|
182
194
|
# More points in inner
|
|
183
195
|
outer_pts_x = outer_points[:, 0]
|
|
@@ -318,9 +330,13 @@ def extract_paths(
|
|
|
318
330
|
|
|
319
331
|
if n_ports == 2:
|
|
320
332
|
# This is the simplest case - a straight or a bend
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
333
|
+
|
|
334
|
+
if poly[0].is_box(): # only 4 points, no undersampling
|
|
335
|
+
centerline = centerline_single_poly_2_ports(poly, 1, consider_ports)
|
|
336
|
+
else:
|
|
337
|
+
centerline = centerline_single_poly_2_ports(
|
|
338
|
+
poly, under_sampling, consider_ports
|
|
339
|
+
)
|
|
324
340
|
if filter_function is not None:
|
|
325
341
|
centerline = filter_function(centerline)
|
|
326
342
|
p = gf.Path(centerline)
|
|
@@ -652,10 +668,10 @@ def _demo_routes():
|
|
|
652
668
|
if __name__ == "__main__":
|
|
653
669
|
# c0 = gf.components.bend_euler(npoints=20)
|
|
654
670
|
# c0 = gf.components.bend_euler(cross_section="xs_sc", with_arc_floorplan=True)
|
|
655
|
-
|
|
671
|
+
c0 = gf.components.bend_circular()
|
|
656
672
|
# c0 = gf.components.bend_s(npoints=50)
|
|
657
673
|
# c0 = gf.components.mmi2x2()
|
|
658
|
-
c0 = gf.components.coupler()
|
|
674
|
+
# c0 = gf.components.coupler()
|
|
659
675
|
ev_coupling = True
|
|
660
676
|
# c0 = _demo_routes()
|
|
661
677
|
# ev_coupling = False
|
|
@@ -672,7 +688,7 @@ if __name__ == "__main__":
|
|
|
672
688
|
under_sampling=1,
|
|
673
689
|
evanescent_coupling=ev_coupling,
|
|
674
690
|
# consider_ports=["o2", "o3"],
|
|
675
|
-
port_positions=[(-10.0, -1.6), (30.0, -1.6)],
|
|
691
|
+
# port_positions=[(-10.0, -1.6), (30.0, -1.6)],
|
|
676
692
|
)
|
|
677
693
|
r_and_l_dict = get_min_radius_and_length_path_dict(path_dict)
|
|
678
694
|
for ports, (min_radius, length) in r_and_l_dict.items():
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import importlib
|
|
1
2
|
import math
|
|
2
3
|
import pathlib
|
|
3
4
|
from pathlib import Path
|
|
@@ -15,7 +16,10 @@ from gdsfactory.technology.processes import (
|
|
|
15
16
|
from gdsfactory.typings import Dict, Tuple
|
|
16
17
|
|
|
17
18
|
from gplugins.gmsh.parse_gds import cleanup_component_layermap
|
|
18
|
-
from gplugins.sentaurus.
|
|
19
|
+
from gplugins.sentaurus.mask_sprocess import (
|
|
20
|
+
get_sentaurus_mask_2D,
|
|
21
|
+
get_sentaurus_mask_3D,
|
|
22
|
+
)
|
|
19
23
|
|
|
20
24
|
DEFAULT_INIT_LINES = """AdvancedCalibration
|
|
21
25
|
mgoals accuracy=2e-5
|
|
@@ -212,6 +216,12 @@ def write_sprocess(
|
|
|
212
216
|
num_threads (int): for parallelization
|
|
213
217
|
"""
|
|
214
218
|
|
|
219
|
+
gf_version = importlib.metadata.version("gdsfactory")
|
|
220
|
+
if int(gf_version.split(".")[0]) >= 8:
|
|
221
|
+
raise ImportError(
|
|
222
|
+
"The Sentaurus Process plugin is not compatible with gdsfactory version 8 or above."
|
|
223
|
+
)
|
|
224
|
+
|
|
215
225
|
save_directory = (
|
|
216
226
|
Path("./sprocess/") if save_directory is None else Path(save_directory)
|
|
217
227
|
)
|
|
@@ -26,7 +26,8 @@ dependencies = [
|
|
|
26
26
|
"gdsfactory>=8.5.3",
|
|
27
27
|
"pint",
|
|
28
28
|
"gdstk",
|
|
29
|
-
"tqdm"
|
|
29
|
+
"tqdm",
|
|
30
|
+
"numpy<3"
|
|
30
31
|
]
|
|
31
32
|
description = "gdsfactory plugins"
|
|
32
33
|
keywords = ["python"]
|
|
@@ -34,7 +35,7 @@ license = {file = "LICENSE"}
|
|
|
34
35
|
name = "gplugins"
|
|
35
36
|
readme = "README.md"
|
|
36
37
|
requires-python = ">=3.10"
|
|
37
|
-
version = "1.1.
|
|
38
|
+
version = "1.1.3"
|
|
38
39
|
|
|
39
40
|
[project.optional-dependencies]
|
|
40
41
|
dagster = ["dagster", "dagit"]
|
|
@@ -99,7 +100,7 @@ sax = [
|
|
|
99
100
|
"jax>=0.4.26",
|
|
100
101
|
"jaxlib>=0.4.26",
|
|
101
102
|
"flax>=0.8.2",
|
|
102
|
-
"sax
|
|
103
|
+
"sax>=0.13.1,<0.15.0",
|
|
103
104
|
"scikit-learn",
|
|
104
105
|
"pyvis<=0.3.1"
|
|
105
106
|
]
|
|
@@ -123,7 +124,7 @@ ignore-words-list = 'te, te/tm, te, ba, fpr, fpr_spacing, ro, nd, donot, schem,
|
|
|
123
124
|
skip = 'notebooks/palace_02_fullwave.ipynb'
|
|
124
125
|
|
|
125
126
|
[tool.mypy]
|
|
126
|
-
python_version = "3.
|
|
127
|
+
python_version = "3.11"
|
|
127
128
|
strict = true
|
|
128
129
|
|
|
129
130
|
[tool.pylsp-mypy]
|
|
@@ -210,7 +211,7 @@ message_template = "Bump to {new_version}"
|
|
|
210
211
|
tag_template = "v{new_version}"
|
|
211
212
|
|
|
212
213
|
[tool.tbump.version]
|
|
213
|
-
current = "1.1.
|
|
214
|
+
current = "1.1.3"
|
|
214
215
|
regex = '''
|
|
215
216
|
(?P<major>\d+)
|
|
216
217
|
\.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_crossing.csv
RENAMED
|
File without changes
|
{gplugins-1.1.2 → gplugins-1.1.3}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_straight.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|