Issue on page /examples/02_all_pass_filter.html
Closed this issue · 1 comments
I defined an add-drop like:
ring, _ = sax.circuit(
netlist={
"instances": {
"lft": coupler,
"top": waveguide,
"bot": waveguide,
"rgt": coupler,
},
"connections": {
"lft,in1": "top,in0",
"lft,out1":"bot,in0",
"rgt,in1": "top,out0",
"rgt,out1":"bot,out0",
},
"ports": {
"in0": "lft,in0",
"in1": "rgt,in1",
"out0": "lft,out0",
"out1": "rgt,out1",
},
}
)
I simulate the behaviour like below:
wl = jnp.linspace(1.54, 1.56, 10001)
result = ring(wl=wl, lft={'coupling': 0.02}, top={'length': 100.0,'loss':0.00155}, bot={'length': 100.0,'loss':0.00155}, rgt={'coupling': 0.02})
print(result.values().sizeof())
plt.plot(1e3wl, jnp.abs(result['in0', 'out0'])**2, label="in0->out0")
plt.plot(1e3wl, jnp.abs(result['in0', 'in1'])**2, label="in0->in1", ls="--")
plt.plot(1e3*wl, jnp.abs(result['out0', 'out1'])**2, label="out0->out1", ls="--")
plt.xlabel("λ [nm]")
plt.ylabel("T")
plt.grid(True)
plt.figlegend(ncol=2, loc="upper center")
plt.show()
Whatever the backend I obtain a transmission greater than 1 or 2
I visualized the netlist with saxviz.visualize_netlist
and got this:
clearly the ports on coupler rgt
are doubly connected.
you can fix it like this:
netlist={
"instances": {
"lft": "coupler",
"top": "straight",
"bot": "straight",
"rgt": "coupler",
},
"connections": {
"lft,in1": "top,in0",
"lft,out1": "bot,in0",
"rgt,in1": "top,out0",
"rgt,out1": "bot,out0",
},
"ports": {
"in0": "lft,in0",
"in1": "rgt,in0",
"out0": "lft,out0",
"out1": "rgt,out0",
},
}
models = {
"straight": sax.models.straight,
"coupler": sax.models.coupler,
}
ring, _ = sax.circuit(
netlist=netlist,
models =models
)
which gives the following netlist visualization:
And the following result: