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()
../../_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