def _demo(): """plot curvature of bends""" from matplotlib import pyplot as plt c = crossing45(port_spacing=20.0, dx=15) c2 = compensation_path(crossing45=c) print(c.info["min_bend_radius"]) print(c2.info["min_bend_radius"]) component = Component(name="top_lvl") component.add(c.ref(port_id="o1")) component.add(c2.ref(port_id="o1", position=(0, 10))) bend_info1 = c.info["components"]["bezier_bend"].info bend_info2 = c2.info["components"]["sbend"].info DL = bend_info1["length"] L2 = bend_info1["length"] plt.plot(bend_info1["t"][1:-1] * DL, abs(bend_info1["curvature"])) plt.plot(bend_info2["t"][1:-1] * L2, abs(bend_info2["curvature"])) plt.xlabel("bend length (um)") plt.ylabel("curvature (um^-1)") component.show() plt.show()
def _sample_route_sides() -> Component: c = Component() _dummy_t = _sample_route_side() sides = ["north", "south", "east", "west"] positions = [(0, 0), (400, 0), (400, 400), (0, 400)] for pos, side in zip(positions, sides): dummy_ref = _dummy_t.ref(position=pos) c.add(dummy_ref) routes, ports = route_ports_to_side(dummy_ref, side, layer=(2, 0)) for route in routes: c.add(route.references) for i, p in enumerate(ports): c.add_port(name=f"{side[0]}{i}", port=p) return c if __name__ == "__main__": c = Component() _dummy_t = _sample_route_side() sides = ["north", "south", "east", "west"] positions = [(0, 0), (400, 0), (400, 400), (0, 400)] for pos, side in zip(positions, sides): dummy_ref = _dummy_t.ref(position=pos) c.add(dummy_ref) routes, ports = route_ports_to_side(dummy_ref, side, layer=(2, 0)) for route in routes: c.add(route.references) for i, p in enumerate(ports): c.add_port(name=f"{side[0]}{i}", port=p) c.show()