DC1
- class ipkiss3.cml.DC1
Directional coupler model based on the difference between the n_eff of the two beating modes.
- Parameters:
- delta_n_eff: float
Difference between n_eff of the two beating modes in the directional coupler.
- coupler_length: float (m)
Length of the directional coupler (in meter).
Notes
\[\begin{split}\delta \beta_x length = \frac{2 \pi}{\lambda} * \delta_{neff} * \texttt{coupler_length} \\ straight = \frac{1}{2} * (1.0 + e^{j \delta \beta_x length}) \\ cross = \frac{1}{2} * (1.0 - e^{j \delta \beta_x length}) \\\end{split}\]Where \(\lambda\) corresponds with
env.wavelength
and \(\delta_{neff}\) withparameters.delta_n_eff
Terms
Term Name
Type
#modes
in1
Optical
1
in2
Optical
1
out1
Optical
1
out2
Optical
1
Examples
import numpy as np import ipkiss3.all as i3 import matplotlib.pyplot as plt model = i3.cml.DC1( delta_n_eff=0.04, coupler_length=9.68e-6, ) wavelengths = np.linspace(1.52, 1.58, 201) S = i3.circuit_sim.test_circuitmodel(model, wavelengths) bar = 10 * np.log10(np.abs(S["out1", "in1"]) ** 2) cross = 10 * np.log10(np.abs(S["out2", "in1"]) ** 2) plt.figure() plt.plot(wavelengths, bar, label="bar") plt.plot(wavelengths, cross, label="cross") plt.xlabel("wavelength [um]") plt.ylabel("transmission [dB]") plt.legend() plt.title("Transmission as function of wavelength") plt.show()
import numpy as np import ipkiss3.all as i3 import matplotlib.pyplot as plt lengths = np.arange(0, 50.0, 0.5) cross = np.zeros_like(lengths) bar = np.zeros_like(lengths) for ndx, length in enumerate(lengths): model = i3.cml.DC1( delta_n_eff=0.04, coupler_length=length * 1e-6, ) S = i3.circuit_sim.test_circuitmodel(model, [1.55]) cross[ndx] = np.abs(S["out2", "in1"][0]) ** 2 bar[ndx] = np.abs(S["out1", "in1"][0]) ** 2 plt.figure() plt.plot(lengths, cross, "o-", label="cross") plt.plot(lengths, bar, "o-", label="bar") plt.xlabel("coupling length [um]") plt.ylabel("transmission [dB]") plt.title("Transmission as function of coupling length") plt.legend() plt.show()