Coupling efficiencyΒΆ

We can compute the mode overlaps between a waveguide and a fiber mode.

Fiber modes are usually described with their [MFD Mode field Diameter](https://www.thorlabs.com/newgrouppage9.cfm?objectgroup_id=14203#:~:text=The%20mode%20field%20diameter%20(MFD,achieve%20particularly%20high%20coupling%20efficiency.)

or Numerical Aperture (NA)

For standard single mode fiber SMF28, the MFD is 10.4 for 1.55um wavelength.

[1]:
import modes
import numpy as np
import matplotlib.pyplot as plt
[2]:
widths = np.linspace(0.15, 0.5, 5)
ces = np.zeros_like(widths)

for i, width in enumerate(widths):
    ms = modes.mode_solver_semi(width=width, plot=False)
    ce = modes.coupling_efficiency(mode_solver=ms, fibre_mfd=10.4)[0]
    ces[i] = ce
[3]:
ms = modes.mode_solver_semi()
[4]:
plt.plot(widths, ces*100)
plt.title('SMF fiber and 0.22um thick waveguide TE0 mode overlap')
plt.xlabel('waveguide width (um)')
plt.ylabel('Single mode fiber overlap (%)')
[4]:
Text(0, 0.5, 'Single mode fiber overlap (%)')
../_images/notebooks_32_coupling_efficiency_4_1.png

Many silicon photonics technologies use standard 0.22um thick SOI Silicon, and 0.5um wide waveguides for single mode condition. However, you can only get 15% fiber coupling from a 0.5x0.2 waveguide into a fiber.

A common solution is to increase the mode size by tapering down to a narrower waveguide (inverse taper). As you can see, for a single mode fiber, you can reach around 3dB (50%) coupling efficiency with an inverse taper where the tip tapers down to 0.15um.

To increse coupling efficiency there are other options:

  • High NA fibers with reduced MFD

  • Lens focusing fibers

For example, lensed fibers have a spot size diameter from 2 to 7.5um

[5]:
widths = np.linspace(0.15, 0.5, 5)
ces = np.zeros_like(widths)

for i, width in enumerate(widths):
    ms = modes.mode_solver_semi(width=width, plot=False)
    ce = modes.coupling_efficiency(mode_solver=ms, fibre_mfd=4.)[0]
    ces[i] = ce
[6]:
plt.plot(widths, ces*100)
plt.title('High NA fiber and 0.22um thick waveguide TE0 mode overlap')
plt.xlabel('waveguide width (um)')
plt.ylabel('Single mode fiber overlap (%)')
[6]:
Text(0, 0.5, 'Single mode fiber overlap (%)')
../_images/notebooks_32_coupling_efficiency_7_1.png
[7]:
wavelength = 1.55
MFD = np.linspace(2, 7.5, 10)
NA = wavelength/np.pi/(MFD/2)
NA
[7]:
array([0.49338032, 0.37790833, 0.30623606, 0.25741582, 0.22202115,
       0.19518342, 0.17413423, 0.15718311, 0.14323945, 0.13156809])
[8]:
ces = np.zeros_like(MFD)
width = 0.18

for i, mfd in enumerate(MFD):
    ms = modes.mode_solver_semi(width=width, plot=False)
    ce = modes.coupling_efficiency(mode_solver=ms, fibre_mfd=mfd)[0]
    ces[i] = ce
[9]:
plt.plot(MFD, ces*100)
plt.title('lens fiber 0.18 x 0.22um thick waveguide TE0 mode overlap')
plt.xlabel('lensed fiber MFD (um)')
plt.ylabel('coupling efficiency (%)')
[9]:
Text(0, 0.5, 'coupling efficiency (%)')
../_images/notebooks_32_coupling_efficiency_10_1.png
[10]:
plt.plot(NA, ces*100)
plt.title('lens fiber 0.18 x 0.22um thick waveguide TE0 mode overlap')
plt.xlabel('lensed fiber NA')
plt.ylabel('coupling efficiency (%)')
[10]:
Text(0, 0.5, 'coupling efficiency (%)')
../_images/notebooks_32_coupling_efficiency_11_1.png