DC1¶

class ipkiss3.cml.DC1(**kwargs)

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}$$ with parameters.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()