# 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 scenter 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()