gplugins 1.3.3__tar.gz → 1.3.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.
- {gplugins-1.3.3 → gplugins-1.3.5}/PKG-INFO +4 -4
- {gplugins-1.3.3 → gplugins-1.3.5}/README.md +1 -1
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/__init__.py +1 -1
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/base_models/component.py +18 -7
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gfviz/netlist.py +13 -3
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/get_meep_geometry.py +38 -13
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/get_simulation.py +2 -6
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/meep_adjoint_optimization.py +5 -3
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/write_sparameters_meep.py +3 -1
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/write_sparameters_meep_mpi.py +1 -1
- {gplugins-1.3.3 → gplugins-1.3.5}/pyproject.toml +4 -5
- gplugins-1.3.3/gplugins/common/utils/get_component_with_local_layers.py +0 -128
- {gplugins-1.3.3 → gplugins-1.3.5}/LICENSE +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/base_models/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/base_models/simulation.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/config.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/types.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/add_simulation_markers.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/async_helpers.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/cache.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/convert_sparameters.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/disable_print.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/get_capacitance.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/get_component_with_net_layers.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/get_effective_indices.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/get_scattering.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/get_sparameters_path.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/optical_constants.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/parse_layer_stack.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/plot.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/plot_csv.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/port_symmetries.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/common/utils/tests/test_get_component_with_new_port_layers.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/devsim/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/devsim/doping.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/devsim/get_simulation.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/devsim/get_simulation_xsection.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/devsim/get_solver.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/devsim/test_devsim.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/elmer/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/elmer/electrostatic.sif.j2 +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/elmer/get_capacitance.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/elmer/tests/test_elmer.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/fdtdz/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/fdtdz/get_epsilon_fdtdz.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/fdtdz/get_ports_fdtdz.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/fdtdz/get_sparameters_fdtdz.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/femwell/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/femwell/mode_solver.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/femwell/solve_thermal.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/femwell/test_mode_solver.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gfviz/Makefile +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gfviz/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gfviz/b64.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gfviz/gfviz.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gfviz/serve.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gfviz/static/b64.js +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gfviz/static/schemedit.js +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gfviz/static/schemedit.wasm +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gfviz/templates/example.json +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gfviz/templates/index.html +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/get_material.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/get_port_eigenmode.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/get_simulation_grating_farfield.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/get_simulation_grating_fiber.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_eigenmode.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_materials.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_crossing.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_straight.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_crossing.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_straight.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameterNxN_symmetries_straight.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameter_straight_mpi_pool.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_crossing_symmetric.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_batch.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_mpi_pool.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep/test_sparameters_straight_symmetric.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_write_sparameters_meep.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/write_sparameters_grating.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/write_sparameters_meep_batch.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmsh/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmsh/define_polysurfaces.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmsh/get_mesh.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmsh/parse_component.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmsh/parse_gds.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmsh/tests/test_custom_names.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmsh/tests/test_meshing_2D.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmsh/tests/test_meshing_3D.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmsh/uz_xsection_mesh.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmsh/xy_xsection_mesh.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmsh/xyz_mesh.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/dataprep/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/dataprep/regions.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/drc/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/drc/check_duplicated_cells.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/drc/check_exclusion.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/drc/check_inclusion.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/drc/check_space.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/drc/check_width.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/drc/count_drc.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/drc/samples/drc_errors.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/drc/write_drc.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/get_density.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/get_netlist.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/netlist_graph.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/netlist_spice_reader.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/plot_nets.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/tests/test_dataprep_regions.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/tests/test_density.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/tests/test_drc_exclusion.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/tests/test_drc_inclusion.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/tests/test_drc_space.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/tests/test_drc_width.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/tests/test_global_density.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/tests/test_netlist_spice_reader.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/klayout/tests/test_plot_nets.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/lumerical/README.md +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/lumerical/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/lumerical/interconnect.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/lumerical/mapping_ubcpdk.yml +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/lumerical/read.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/lumerical/settings.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/lumerical/tests/test_lumerical_read_sparameters.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/lumerical/tests/test_netlist.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/lumerical/tests/test_netlist_get_routes.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/lumerical/write_sparameters_lumerical.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/lumerical/write_sparameters_lumerical_components.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/materials/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/materials/inorganic.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/materials/optical/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/materials/optical/optical_mat.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/materials/optical/refractive_index_info.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/materials/semiconductor/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/materials/semiconductor/semiconductor_mat.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/meow/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/meow/meow_eme.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/meow/test_meow_simulation.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/coupler.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/find_coupling_vs_gap.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/find_mode_dispersion.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/find_modes.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/find_modes_cross_section.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/find_neff_ng_dw_dh.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/find_neff_vs_width.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/get_mode_solver_coupler.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/get_mode_solver_cross_section.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/get_mode_solver_rib.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/modes/neff_vs_width_nitride.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/modes/neff_vs_width_rib.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/modes/neff_vs_width_strip.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/neff_convergence_test.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/neff_vs_width.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/overlap.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/tests/test_dw_dh/test_dw_dh.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/tests/test_dw_dh/test_dw_dh.obtained.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/tests/test_dw_dh/test_dw_dh_dispersion.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/tests/test_dw_dh.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/tests/test_find_modes.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/tests/test_find_modes_dispersion.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/tests/test_neff_vs_width/test_neff_vs_width.obtained.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/tests/test_neff_vs_width.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/types.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/modes/waveguide.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/palace/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/palace/driven.json +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/palace/electrostatic.json +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/palace/get_capacitance.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/palace/get_scattering.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/palace/tests/test_palace.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/path_length_analysis/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/path_length_analysis/path_length_analysis.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/path_length_analysis/path_length_analysis_from_gds.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/path_length_analysis/test_pathlength_extraction.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/photonic_circuit_models/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/photonic_circuit_models/coupler.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/photonic_circuit_models/fsr.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/photonic_circuit_models/heater.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/photonic_circuit_models/mzi.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/photonic_circuit_models/ring.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/process/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/process/diffusion.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/process/implant_tables.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/process/pysrim.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/process/silicon.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/process/skew/antimony_si_skew.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/process/skew/arsenic_si_skew.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/process/skew/boron_si_skew.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/process/skew/phosphorus_si_skew.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/build_model.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/integrations/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/integrations/femwell_waveguide_model.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/integrations/meep_FDTD_model.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/integrations/meow_eme_model.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/interpolators.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/mlp.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/models.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/parameter.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/plot_model.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/read.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/tests/test_mzi.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.obtained.yml +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/tests/test_mzi_lattice/test_mzi_lattice.yml +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/tests/test_mzi_lattice.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sax/tests/test_parameters.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sentaurus/mask_sde.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sentaurus/mask_sprocess.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sentaurus/sde.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sentaurus/sdevice.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sentaurus/sprocess.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/sentaurus/svisual.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/spice/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/spice/spice_to_yaml.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/spice/tests/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/spice/tests/test_interconnect.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/component.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/get_results.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/get_simulation_grating_coupler.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/materials.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/modes.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/tests/test_component_modeler.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/tests/test_materials.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/tests/test_modes/test_sweep_width.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/tests/test_modes/test_sweep_width.obtained.csv +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/tests/test_modes_coupler.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/tests/test_modes_waveguide.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/tests/test_plot_simulation_grating_coupler.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/tests/test_write_sparameters.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/tests/tests_sparameters/sim_ref.yaml +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/tests/tests_sparameters/test_write_sparameters_grating_coupler.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/types.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/util.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/tidy3d/write_sparameters_grating_coupler.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/typings.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/vlsir/__init__.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/vlsir/export_netlist.py +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/vlsir/tests/resources/pads_correct.cir +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/vlsir/tests/resources/pads_correct.scs +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/vlsir/tests/resources/pads_correct.sp +0 -0
- {gplugins-1.3.3 → gplugins-1.3.5}/gplugins/vlsir/tests/test_vlsir.py +0 -0
|
@@ -1,19 +1,18 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gplugins
|
|
3
|
-
Version: 1.3.
|
|
3
|
+
Version: 1.3.5
|
|
4
4
|
Summary: gdsfactory plugins
|
|
5
5
|
Keywords: python
|
|
6
6
|
Author-email: gdsfactory <contact@gdsfactory.com>
|
|
7
7
|
Requires-Python: >=3.11
|
|
8
8
|
Description-Content-Type: text/markdown
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.11
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.12
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
12
12
|
Classifier: Operating System :: OS Independent
|
|
13
13
|
License-File: LICENSE
|
|
14
14
|
Requires-Dist: gdsfactory>=9.3.5
|
|
15
15
|
Requires-Dist: pint
|
|
16
|
-
Requires-Dist: gdstk
|
|
17
16
|
Requires-Dist: tqdm
|
|
18
17
|
Requires-Dist: numpy
|
|
19
18
|
Requires-Dist: xarray==2025.1.2
|
|
@@ -73,6 +72,7 @@ Requires-Dist: tidy3d>=2.8.2,<2.9 ; extra == "tidy3d"
|
|
|
73
72
|
Requires-Dist: meshio ; extra == "tidy3d"
|
|
74
73
|
Requires-Dist: numpy ; extra == "tidy3d"
|
|
75
74
|
Requires-Dist: meshwell~=1.0.7 ; extra == "tidy3d"
|
|
75
|
+
Requires-Dist: gdstk ; extra == "tidy3d"
|
|
76
76
|
Requires-Dist: vlsir ; extra == "vlsir"
|
|
77
77
|
Requires-Dist: vlsirtools ; extra == "vlsir"
|
|
78
78
|
Provides-Extra: dev
|
|
@@ -90,7 +90,7 @@ Provides-Extra: schematic
|
|
|
90
90
|
Provides-Extra: tidy3d
|
|
91
91
|
Provides-Extra: vlsir
|
|
92
92
|
|
|
93
|
-
# gplugins 1.3.
|
|
93
|
+
# gplugins 1.3.5
|
|
94
94
|
|
|
95
95
|
[](https://gdsfactory.github.io/gplugins/)
|
|
96
96
|
[](https://pypi.org/project/gplugins/)
|
|
@@ -19,6 +19,8 @@ from gplugins.gmsh.parse_gds import cleanup_component
|
|
|
19
19
|
|
|
20
20
|
from ..types import AnyShapelyPolygon, GFComponent
|
|
21
21
|
|
|
22
|
+
from gdsfactory.pdk import get_layer_stack, get_layer, get_layer_name
|
|
23
|
+
|
|
22
24
|
Coordinate: TypeAlias = tuple[float, float]
|
|
23
25
|
|
|
24
26
|
|
|
@@ -223,13 +225,22 @@ class LayeredComponentBase(BaseModel):
|
|
|
223
225
|
)
|
|
224
226
|
|
|
225
227
|
def get_port_layers(self, port: gf.Port) -> tuple[str, ...]:
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
228
|
+
layer_name = get_layer_name(port.layer)
|
|
229
|
+
|
|
230
|
+
derived_layers = []
|
|
231
|
+
for l_name, level in self.layer_stack.layers.items():
|
|
232
|
+
if layer_name in str(level.layer):
|
|
233
|
+
derived_layers.append(l_name)
|
|
234
|
+
|
|
235
|
+
return derived_layers
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
# return ("core",)
|
|
241
|
+
# return tuple(
|
|
242
|
+
# k for k, v in self.layer_stack.layers.items() if port.layer in v.layer
|
|
243
|
+
# )
|
|
233
244
|
|
|
234
245
|
def get_layer_bbox(
|
|
235
246
|
self, layername: str
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from functools import lru_cache
|
|
2
2
|
|
|
3
3
|
import gdsfactory as gf
|
|
4
|
-
import gdstk
|
|
5
4
|
import numpy as np
|
|
6
5
|
import shapely.geometry as sg
|
|
6
|
+
import shapely.ops as so
|
|
7
7
|
from natsort import natsorted
|
|
8
8
|
|
|
9
9
|
|
|
@@ -225,10 +225,12 @@ def get_icon_poly(name):
|
|
|
225
225
|
polys = min(polys_priority.items(), key=lambda x: x[0])[1]
|
|
226
226
|
if not polys:
|
|
227
227
|
return default
|
|
228
|
-
polys =
|
|
228
|
+
polys = [sg.Polygon(p) for p in polys]
|
|
229
|
+
polys = so.unary_union(polys)
|
|
230
|
+
polys = _extract_vertices(polys)
|
|
229
231
|
if not polys:
|
|
230
232
|
return default
|
|
231
|
-
poly = rdp(polys[0]
|
|
233
|
+
poly = rdp(polys[0])
|
|
232
234
|
if (poly.shape[0] < 3) or (poly.shape[0] > 100):
|
|
233
235
|
return default
|
|
234
236
|
poly = (poly - c.bbox_np()[0:1]) / (c.bbox_np()[1:2] - c.bbox_np()[0:1])
|
|
@@ -242,6 +244,14 @@ def get_icon_poly(name):
|
|
|
242
244
|
return poly
|
|
243
245
|
|
|
244
246
|
|
|
247
|
+
def _extract_vertices(geometry):
|
|
248
|
+
if geometry.geom_type == 'Polygon':
|
|
249
|
+
return [list(geometry.exterior.coords)]
|
|
250
|
+
elif geometry.geom_type == 'MultiPolygon':
|
|
251
|
+
return [list(p.exterior.coords) for p in geometry.geoms]
|
|
252
|
+
else:
|
|
253
|
+
raise TypeError(f"Unhandled geometry type: {geometry.geom_type}")
|
|
254
|
+
|
|
245
255
|
def rdp(poly, eps=0.1):
|
|
246
256
|
poly = np.asarray(poly)
|
|
247
257
|
if not poly.shape:
|
|
@@ -3,9 +3,13 @@ from __future__ import annotations
|
|
|
3
3
|
import gdsfactory as gf
|
|
4
4
|
import meep as mp
|
|
5
5
|
import numpy as np
|
|
6
|
-
from
|
|
6
|
+
from kfactory import LayerEnum
|
|
7
|
+
from typing import cast
|
|
8
|
+
import shapely
|
|
9
|
+
from gdsfactory.pdk import get_layer_stack, get_layer, get_layer_name
|
|
7
10
|
from gdsfactory.technology import LayerStack
|
|
8
|
-
from gdsfactory.
|
|
11
|
+
from gdsfactory.technology import DerivedLayer, LayerStack, LayerViews, LogicalLayer
|
|
12
|
+
from gdsfactory.typings import ComponentSpec, CrossSectionSpec, LayerSpecs
|
|
9
13
|
|
|
10
14
|
from gplugins.common.utils.parse_layer_stack import order_layer_stack
|
|
11
15
|
from gplugins.gmeep.get_material import get_material
|
|
@@ -18,6 +22,7 @@ def get_meep_geometry_from_component(
|
|
|
18
22
|
wavelength: float = 1.55,
|
|
19
23
|
is_3d: bool = False,
|
|
20
24
|
dispersive: bool = False,
|
|
25
|
+
exclude_layers: LayerSpecs | None = None,
|
|
21
26
|
**kwargs,
|
|
22
27
|
) -> list[mp.GeometricObject]:
|
|
23
28
|
"""Returns Meep geometry from a gdsfactory component.
|
|
@@ -32,6 +37,9 @@ def get_meep_geometry_from_component(
|
|
|
32
37
|
kwargs: settings.
|
|
33
38
|
"""
|
|
34
39
|
component = gf.get_component(component=component, **kwargs)
|
|
40
|
+
polygons_per_layer = component.get_polygons_points(merge=True)
|
|
41
|
+
|
|
42
|
+
|
|
35
43
|
layer_stack = layer_stack or get_layer_stack()
|
|
36
44
|
|
|
37
45
|
layer_to_thickness = layer_stack.get_layer_to_thickness()
|
|
@@ -41,24 +49,40 @@ def get_meep_geometry_from_component(
|
|
|
41
49
|
component_with_booleans = layer_stack.get_component_with_derived_layers(component)
|
|
42
50
|
|
|
43
51
|
geometry = []
|
|
52
|
+
exclude_layers = exclude_layers or []
|
|
44
53
|
layer_to_polygons = component_with_booleans.get_polygons_points()
|
|
45
54
|
|
|
46
|
-
ordered_layer_stack_keys = order_layer_stack(layer_stack)[::-1]
|
|
55
|
+
# ordered_layer_stack_keys = order_layer_stack(layer_stack)[::-1]
|
|
56
|
+
|
|
57
|
+
for level in layer_stack.layers.values():
|
|
58
|
+
layer = level.layer
|
|
59
|
+
|
|
60
|
+
if isinstance(layer, LogicalLayer):
|
|
61
|
+
assert isinstance(layer.layer, tuple | LayerEnum)
|
|
62
|
+
layer_tuple = cast(tuple[int, int], tuple(layer.layer))
|
|
63
|
+
elif isinstance(layer, DerivedLayer):
|
|
64
|
+
assert level.derived_layer is not None
|
|
65
|
+
assert isinstance(level.derived_layer.layer, tuple | LayerEnum)
|
|
66
|
+
layer_tuple = cast(tuple[int, int], tuple(level.derived_layer.layer))
|
|
67
|
+
else:
|
|
68
|
+
raise ValueError(f"Layer {layer!r} is not a DerivedLayer or LogicalLayer")
|
|
47
69
|
|
|
48
|
-
|
|
49
|
-
layer = layer_stack.layers[layername].layer
|
|
70
|
+
layer_index = int(get_layer(layer_tuple))
|
|
50
71
|
|
|
51
|
-
if
|
|
72
|
+
if layer_index in exclude_layers:
|
|
52
73
|
continue
|
|
53
|
-
polygons = layer_to_polygons[layer]
|
|
54
|
-
print(f"layer: {layer}, polygons: {polygons}")
|
|
55
74
|
|
|
56
|
-
if
|
|
57
|
-
|
|
58
|
-
zmin_um = layer_to_zmin[layer] if is_3d else 0
|
|
59
|
-
# center = mp.Vector3(0, 0, (zmin_um + height) / 2)
|
|
75
|
+
if layer_index not in polygons_per_layer:
|
|
76
|
+
continue
|
|
60
77
|
|
|
78
|
+
zmin = level.zmin
|
|
79
|
+
zmin_um = layer_to_zmin[layer] if is_3d else 0
|
|
80
|
+
if zmin is not None:
|
|
81
|
+
has_polygons = True
|
|
82
|
+
polygons = polygons_per_layer[layer_index]
|
|
83
|
+
height = level.thickness
|
|
61
84
|
for polygon in polygons:
|
|
85
|
+
p = shapely.geometry.Polygon(polygon)
|
|
62
86
|
vertices = [mp.Vector3(p[0], p[1], zmin_um) for p in polygon]
|
|
63
87
|
material_name = layer_to_material[layer]
|
|
64
88
|
|
|
@@ -80,6 +104,7 @@ def get_meep_geometry_from_component(
|
|
|
80
104
|
# center=center
|
|
81
105
|
)
|
|
82
106
|
)
|
|
107
|
+
|
|
83
108
|
return geometry
|
|
84
109
|
|
|
85
110
|
|
|
@@ -163,7 +188,7 @@ if __name__ == "__main__":
|
|
|
163
188
|
|
|
164
189
|
import gplugins.gmeep as gm
|
|
165
190
|
|
|
166
|
-
c = gf.components.
|
|
191
|
+
c = gf.components.straight()
|
|
167
192
|
sp = gm.write_sparameters_meep(
|
|
168
193
|
c, run=False, ymargin_top=3, ymargin_bot=3, is_3d=True
|
|
169
194
|
)
|
|
@@ -170,12 +170,8 @@ def get_simulation(
|
|
|
170
170
|
else component
|
|
171
171
|
)
|
|
172
172
|
|
|
173
|
-
component_extended.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
# geometry_center = [component_extended.x, component_extended.y]
|
|
177
|
-
# geometry_center = [0, 0]
|
|
178
|
-
# print(geometry_center)
|
|
173
|
+
component_extended = component_extended.copy()
|
|
174
|
+
component_extended.flatten()
|
|
179
175
|
|
|
180
176
|
layers_thickness = [
|
|
181
177
|
layer_to_thickness[layer]
|
|
@@ -5,7 +5,6 @@ from types import LambdaType
|
|
|
5
5
|
from typing import Any
|
|
6
6
|
|
|
7
7
|
import gdsfactory as gf
|
|
8
|
-
import nlopt
|
|
9
8
|
import numpy as np
|
|
10
9
|
from gdsfactory import Component
|
|
11
10
|
from gdsfactory.technology import LayerStack
|
|
@@ -190,7 +189,7 @@ def run_meep_adjoint_optimizer(
|
|
|
190
189
|
cost_function: LambdaType,
|
|
191
190
|
update_variable: np.ndarray,
|
|
192
191
|
maximize_cost_function: bool = True,
|
|
193
|
-
|
|
192
|
+
algorithm_name: str = "LD_MMA",
|
|
194
193
|
lower_bound: Any = 0,
|
|
195
194
|
upper_bound: Any = 1,
|
|
196
195
|
maxeval: int = 10,
|
|
@@ -205,7 +204,7 @@ def run_meep_adjoint_optimizer(
|
|
|
205
204
|
cost_function: cost function to optimize.
|
|
206
205
|
update_variable: variable to update the optimization with.
|
|
207
206
|
maximize_cost_function: if True, maximize the cost function, else minimize it.
|
|
208
|
-
|
|
207
|
+
algorithm_name: nlopt algorithm to use (default: nlopt.LD_MMA).
|
|
209
208
|
lower_bound: lower bound for the optimization.
|
|
210
209
|
upper_bound: upper bound for the optimization.
|
|
211
210
|
maxeval: maximum number of evaluations.
|
|
@@ -219,6 +218,9 @@ def run_meep_adjoint_optimizer(
|
|
|
219
218
|
threshold_offset_from_max: threshold offset from max eps value.
|
|
220
219
|
layer: layer to apply to the optimized component.
|
|
221
220
|
"""
|
|
221
|
+
import nlopt
|
|
222
|
+
|
|
223
|
+
algorithm = getattr(nlopt, algorithm_name)
|
|
222
224
|
solver = nlopt.opt(algorithm, number_of_params)
|
|
223
225
|
solver.set_lower_bounds(lower_bound)
|
|
224
226
|
solver.set_upper_bounds(upper_bound)
|
|
@@ -19,7 +19,7 @@ from gdsfactory.component import Component
|
|
|
19
19
|
from gdsfactory.pdk import get_layer_stack
|
|
20
20
|
from gdsfactory.serialization import clean_value_json
|
|
21
21
|
from gdsfactory.technology import LayerStack
|
|
22
|
-
from gdsfactory.typings import ComponentSpec, PathType, Port, PortSymmetries
|
|
22
|
+
from gdsfactory.typings import ComponentSpec, PathType, Port, PortSymmetries, LayerSpec
|
|
23
23
|
from tqdm.auto import tqdm
|
|
24
24
|
|
|
25
25
|
from gplugins.common.utils import port_symmetries
|
|
@@ -151,6 +151,7 @@ def write_sparameters_meep(
|
|
|
151
151
|
plot_args: dict | None = None,
|
|
152
152
|
only_return_filepath_sim_settings=False,
|
|
153
153
|
verbosity: int = 0,
|
|
154
|
+
padding_layers: tuple[LayerSpec, ...] = ("PADDING",),
|
|
154
155
|
**settings,
|
|
155
156
|
) -> dict[str, np.ndarray]:
|
|
156
157
|
r"""Returns Sparameters and writes them to npz filepath.
|
|
@@ -340,6 +341,7 @@ def write_sparameters_meep(
|
|
|
340
341
|
|
|
341
342
|
component = gf.add_padding_container(
|
|
342
343
|
component,
|
|
344
|
+
layers=padding_layers,
|
|
343
345
|
default=0,
|
|
344
346
|
top=ymargin_top,
|
|
345
347
|
bottom=ymargin_bot,
|
|
@@ -164,7 +164,7 @@ def write_sparameters_meep_mpi(
|
|
|
164
164
|
with open(parameters_file, "wb") as outp:
|
|
165
165
|
pickle.dump(settings, outp, pickle.HIGHEST_PROTOCOL)
|
|
166
166
|
|
|
167
|
-
# Save component to disk through gds
|
|
167
|
+
# Save component to disk through gds
|
|
168
168
|
component_file = tempfile.with_suffix(".gds")
|
|
169
169
|
component.write_gds(component_file, with_metadata=True)
|
|
170
170
|
|
|
@@ -7,15 +7,14 @@ requires = ["flit_core >=3.2,<4"]
|
|
|
7
7
|
[project]
|
|
8
8
|
authors = [{name = "gdsfactory", email = "contact@gdsfactory.com"}]
|
|
9
9
|
classifiers = [
|
|
10
|
-
"Programming Language :: Python :: 3.10",
|
|
11
10
|
"Programming Language :: Python :: 3.11",
|
|
12
11
|
"Programming Language :: Python :: 3.12",
|
|
12
|
+
"Programming Language :: Python :: 3.13",
|
|
13
13
|
"Operating System :: OS Independent"
|
|
14
14
|
]
|
|
15
15
|
dependencies = [
|
|
16
16
|
"gdsfactory>=9.3.5",
|
|
17
17
|
"pint",
|
|
18
|
-
"gdstk",
|
|
19
18
|
"tqdm",
|
|
20
19
|
"numpy",
|
|
21
20
|
"xarray==2025.1.2"
|
|
@@ -26,7 +25,7 @@ license = {file = "LICENSE"}
|
|
|
26
25
|
name = "gplugins"
|
|
27
26
|
readme = "README.md"
|
|
28
27
|
requires-python = ">=3.11"
|
|
29
|
-
version = "1.3.
|
|
28
|
+
version = "1.3.5"
|
|
30
29
|
|
|
31
30
|
[project.optional-dependencies]
|
|
32
31
|
dev = [
|
|
@@ -71,7 +70,7 @@ sax = [
|
|
|
71
70
|
"ray"
|
|
72
71
|
]
|
|
73
72
|
schematic = ["bokeh", "ipywidgets", "natsort"]
|
|
74
|
-
tidy3d = ["tidy3d>=2.8.2,<2.9", "meshio", "numpy", "meshwell~=1.0.7"]
|
|
73
|
+
tidy3d = ["tidy3d>=2.8.2,<2.9", "meshio", "numpy", "meshwell~=1.0.7", "gdstk"]
|
|
75
74
|
vlsir = ["vlsir", "vlsirtools"]
|
|
76
75
|
|
|
77
76
|
[tool.codespell]
|
|
@@ -193,7 +192,7 @@ message_template = "Bump to {new_version}"
|
|
|
193
192
|
tag_template = "v{new_version}"
|
|
194
193
|
|
|
195
194
|
[tool.tbump.version]
|
|
196
|
-
current = "1.3.
|
|
195
|
+
current = "1.3.5"
|
|
197
196
|
regex = '''
|
|
198
197
|
(?P<major>\d+)
|
|
199
198
|
\.
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import copy
|
|
2
|
-
from dataclasses import dataclass
|
|
3
|
-
|
|
4
|
-
import gdsfactory as gf
|
|
5
|
-
import gdstk
|
|
6
|
-
from gdsfactory.component import Component
|
|
7
|
-
from gdsfactory.pdk import get_layer
|
|
8
|
-
from gdsfactory.typings import Layer
|
|
9
|
-
from gdstk import Polygon
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@dataclass
|
|
13
|
-
class LocalMapping:
|
|
14
|
-
"""Dataclass to map polygons to new layers.
|
|
15
|
-
|
|
16
|
-
Arguments:
|
|
17
|
-
new_layer_name: new layer name for the updated LayerStack
|
|
18
|
-
new_layer_number: new layer number for the updated LayerStack and GDS
|
|
19
|
-
old_layer_name: original LayerStack key entry
|
|
20
|
-
domains: list of gdstk polygons; Component polygons inside these domains are mapped to new_layer
|
|
21
|
-
"""
|
|
22
|
-
|
|
23
|
-
new_layer_name: str
|
|
24
|
-
new_layer_number: Layer
|
|
25
|
-
old_layer_name: str
|
|
26
|
-
domains: list[Polygon]
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def get_component_with_local_layers(
|
|
30
|
-
component,
|
|
31
|
-
layer_stack,
|
|
32
|
-
mappings: list[LocalMapping],
|
|
33
|
-
precision: float = 1e-4,
|
|
34
|
-
) -> Component:
|
|
35
|
-
"""Returns a component where polygons within "domains" belonging to "old_layer_name" are remapped to "new_layer_name" (with layer details copied from old_layer), and polygons outside the domain are kept on "old_layer_name".
|
|
36
|
-
|
|
37
|
-
Args:
|
|
38
|
-
component: to process.
|
|
39
|
-
layer_stack: to process.
|
|
40
|
-
mappings: list of LocalMapping objects.
|
|
41
|
-
precision: of the boolean operations.
|
|
42
|
-
"""
|
|
43
|
-
# Initialize returned component and layerstack
|
|
44
|
-
local_component = component.copy()
|
|
45
|
-
local_component.flatten()
|
|
46
|
-
local_layer_stack = layer_stack.model_copy()
|
|
47
|
-
|
|
48
|
-
for mapping in mappings:
|
|
49
|
-
# Create the new layer
|
|
50
|
-
old_layer_number = layer_stack.layers[mapping.old_layer_name].layer
|
|
51
|
-
new_layer = copy.deepcopy(layer_stack.layers[mapping.old_layer_name])
|
|
52
|
-
new_layer.layer = mapping.new_layer_number
|
|
53
|
-
local_layer_stack.layers[mapping.new_layer_name] = new_layer
|
|
54
|
-
|
|
55
|
-
# Assign the polygons
|
|
56
|
-
for domain in mapping.domains:
|
|
57
|
-
layer_polygons = local_component.get_polygons(by_spec=True)[
|
|
58
|
-
old_layer_number
|
|
59
|
-
]
|
|
60
|
-
local_component.remove_layers([old_layer_number])
|
|
61
|
-
gds_layer, gds_datatype = tuple(get_layer(old_layer_number))
|
|
62
|
-
for layer_polygon in layer_polygons:
|
|
63
|
-
# Polygons inside the domain
|
|
64
|
-
p_inside = gdstk.boolean(
|
|
65
|
-
operand1=gdstk.Polygon(layer_polygon),
|
|
66
|
-
operand2=domain,
|
|
67
|
-
operation="and",
|
|
68
|
-
precision=precision,
|
|
69
|
-
layer=gds_layer,
|
|
70
|
-
datatype=gds_datatype,
|
|
71
|
-
)
|
|
72
|
-
# Outside the domain
|
|
73
|
-
p_outside = gdstk.boolean(
|
|
74
|
-
operand1=gdstk.Polygon(layer_polygon),
|
|
75
|
-
operand2=domain,
|
|
76
|
-
operation="not",
|
|
77
|
-
precision=precision,
|
|
78
|
-
layer=gds_layer,
|
|
79
|
-
datatype=gds_datatype,
|
|
80
|
-
)
|
|
81
|
-
if p_inside:
|
|
82
|
-
local_component.add_polygon(
|
|
83
|
-
p_inside, layer=mapping.new_layer_number
|
|
84
|
-
)
|
|
85
|
-
if p_outside:
|
|
86
|
-
local_component.add_polygon(p_outside, layer=old_layer_number)
|
|
87
|
-
|
|
88
|
-
return local_component, local_layer_stack
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
if __name__ == "__main__":
|
|
92
|
-
c = gf.components.spiral_racetrack_heater_metal()
|
|
93
|
-
|
|
94
|
-
layer_stack = gf.generic_tech.LAYER_STACK
|
|
95
|
-
|
|
96
|
-
mapping1 = LocalMapping(
|
|
97
|
-
new_layer_name="test1",
|
|
98
|
-
old_layer_name="heater",
|
|
99
|
-
domains=[
|
|
100
|
-
gdstk.rectangle(
|
|
101
|
-
corner1=(0, -15),
|
|
102
|
-
corner2=(10, -60),
|
|
103
|
-
),
|
|
104
|
-
gdstk.rectangle(
|
|
105
|
-
corner1=(20, -15),
|
|
106
|
-
corner2=(30, -60),
|
|
107
|
-
),
|
|
108
|
-
],
|
|
109
|
-
new_layer_number=(10002, 0),
|
|
110
|
-
)
|
|
111
|
-
|
|
112
|
-
mapping2 = LocalMapping(
|
|
113
|
-
new_layer_name="test2",
|
|
114
|
-
old_layer_name="heater",
|
|
115
|
-
domains=[gdstk.ellipse(center=(30, 10), radius=10)],
|
|
116
|
-
new_layer_number=(10003, 0),
|
|
117
|
-
)
|
|
118
|
-
|
|
119
|
-
c_local, layer_stack_local = get_component_with_local_layers(
|
|
120
|
-
c,
|
|
121
|
-
layer_stack,
|
|
122
|
-
mappings=[mapping1, mapping2],
|
|
123
|
-
)
|
|
124
|
-
|
|
125
|
-
print(layer_stack_local.layers.keys())
|
|
126
|
-
print(layer_stack_local.layers["test1"])
|
|
127
|
-
|
|
128
|
-
c_local.show()
|
|
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.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_crossing.csv
RENAMED
|
File without changes
|
{gplugins-1.3.3 → gplugins-1.3.5}/gplugins/gmeep/test_sparameterNxN/test_sparameterNxN_straight.csv
RENAMED
|
File without changes
|
|
File without changes
|