<jupyter_start><jupyter_text>Coupling efficiencyWe 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)](https://en.wikipedia.org/wiki/Numerical_aperture)For [standard single mode fiber SMF28](https://www.corning.com/media/worldwide/coc/documents/Fiber/SMF-28%20Ultra.pdf), the MFD is 10.4 for 1.55um wavelength.<jupyter_code>import modes
import numpy as np
import matplotlib.pyplot as plt
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
ms = modes.mode_solver_semi()
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 (%)')<jupyter_output><empty_output><jupyter_text>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 fibersFor example, [lensed fibers](https://www.ozoptics.com/ALLNEW_PDF/DTS0080.pdf) have a spot size diameter from 2 to 7.5um<jupyter_code>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
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 (%)')
wavelength = 1.55
MFD = np.linspace(2, 7.5, 10)
NA = wavelength/np.pi/(MFD/2)
NA
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
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 (%)')
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 (%)')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11748633879781421, 'fraction_numerical': 0.042008196721311473, 'mean_word_length': 5.523385300668151, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 4, 'lorem ipsum': 0, 'www.': 3, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '457255', 'license': 'MIT', 'n_tokens_mistral': 1152, 'n_tokens_neox': 1009, 'n_words': 292, 'path': 'docs/notebooks/32_coupling_efficiency.ipynb', 'repo_name': 'joamatab/modesolverpy', 'size': '2928'}