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}\) 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()
../../../_images/ipkiss3-cml-DC1-1.png
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()
../../../_images/ipkiss3-cml-DC1-2.png