GC1
- class ipkiss3.cml.GC1
Model for a grating coupler.
The inclination and angle of the port should match the direction of peak transmission at the center wavelength, when light is incident from the vertical (through vertical_in) and couples to the out port
* "vertical_in" * * inclination / * _/ _* _ _ "in" _| |_| |_| |_| |_ ---> "out"
- Parameters:
- peak_transmission: float
Peak transmission of the coupler (in amplitude).
- bandwidth_3dB: float
3 dB bandwidth of the transmission.
- center_wavelength: float (m)
Wavelength around which the transmission is centered.
- reflection_vertical_in: complex
Complex-valued reflection at the vertical_in port.
- reflection: complex
Complex-valued reflection at the out port.
Notes
The insertion loss follows a gaussian profile (a parabolic profile in dB) and is minimal at the center wavelength of the grating:
\[\alpha_{gc1}(\lambda) = \exp\left(-\frac{\left(\lambda-\lambda_c\right)^2}{2\sigma^2}\right)\]where \(\lambda_c\) or \(\texttt{center_wavelength}\) is the central wavelength, at which the insertion loss is minimal (quantified by \(\texttt{peak_transmission}\)), and where \(\sigma\) is the 3 dB bandwidth (\(\texttt{bandwidth_3dB}\)) of the grating coupler divided by 2.35482. \(\lambda\) in the equation above is governed by \(\texttt{env.wavelength}\). The model also takes into account the wavelength independent reflections (for optical amplitude) at the grating ports, which are quantified by \(\texttt{reflection}\) and \(\texttt{reflection_vertical_in}\).
Terms
Term Name
Type
#modes
vertical_in
Optical
1
out
Optical
1
Examples
import numpy as np import ipkiss3.all as i3 import matplotlib.pyplot as plt model = i3.cml.GC1( peak_transmission=np.sqrt(0.6), bandwidth_3dB=0.040, center_wavelength=1.55e-6, reflection=np.sqrt(0.01) * 1j, reflection_vertical_in=np.sqrt(0.02) * 1j, ) wavelengths = np.linspace(1.52, 1.58, 201) S = i3.circuit_sim.test_circuitmodel(model, wavelengths) through = 10 * np.log10(np.abs(S["out", "vertical_in"]) ** 2) fiber_reflection = 10 * np.log10(np.abs(S["vertical_in", "vertical_in"]) ** 2) plt.figure() plt.plot(wavelengths, through, label="coupled power") plt.plot(wavelengths, fiber_reflection, label="reflected to fiber") plt.xlabel("wavelength [um]") plt.ylabel("transmission [dB]") plt.legend() plt.title("Transmission as function of wavelength") plt.show()