Effective Index¶
First Order Effective Index¶
Effective index of the fundamental mode of a waveguide can be accessed by using neff function of effective_index module. The function takes the following arguments:
wavelength: Wavelength of the light in the waveguide, in microns. A list of wavelengths can also be passed. Wavelength range is from 1.2 to 1.7 microns, it will return 0 for wavelengths out of range.width: Width of the waveguide, in microns. A list of widths can also be passed. Width range is from 0.24 to 0.7 microns, it will return 0 for widths out of range.
In [ ]:
Copied!
from siphotonics.effective_index import neff
neff(width=0.5, wavelength=1.55)
from siphotonics.effective_index import neff
neff(width=0.5, wavelength=1.55)
Effective Index of a Waveguide at multiple wavelengths and widths can be calculated by passing a list of wavelengths or widths. Type of the list should be a DeviceArray from Jax. There are three ways to make neff function work with multiple wavelengths or widths:
- Pass a DeviceArray of wavelengths and a width value as arguments to the function to get effective index with respect to wavelengths for a fixed width value.
In [ ]:
Copied!
import jax.numpy as jnp
neff_list = neff(width=jnp.linspace(0.4, 0.5, 5), wavelength=1.55)
print(neff_list)
import jax.numpy as jnp
neff_list = neff(width=jnp.linspace(0.4, 0.5, 5), wavelength=1.55)
print(neff_list)
- Pass a DeviceArray of widths and a wavelength value as arguments to the function to get effective index with respect to widths for a fixed wavelength value.
In [ ]:
Copied!
neff_list = neff(width=0.5, wavelength=jnp.linspace(1.4, 1.5, 5))
print(neff_list)
neff_list = neff(width=0.5, wavelength=jnp.linspace(1.4, 1.5, 5))
print(neff_list)
- Pass a DeviceArray of widths and wavelengths as arguments to the function to get effective index for pairs of widths and wavelengths. The function will return a 1D array of effective indices for each pair of width and wavelength. Note that the length of wavelengths and widths should be same since the function will return a 1D array of effective indices by pairing the elements of the two lists.
In [ ]:
Copied!
neff_list = neff(width=jnp.linspace(0.4, 0.5, 5), wavelength=jnp.linspace(1.4, 1.5, 5))
print(neff_list)
neff_list = neff(width=jnp.linspace(0.4, 0.5, 5), wavelength=jnp.linspace(1.4, 1.5, 5))
print(neff_list)
Effective Index of Higher Order Modes¶
Effective Index of first 5 modes in a waveguide can be accessed by using the following functions of effective_index module:
neff_te0: Effective index of TE0 mode.neff_tm0: Effective index of TM0 mode.neff_te1: Effective index of TE1 mode.neff_tm1: Effective index of TM0 mode.neff_te2: Effective index of TE3 mode.
In [ ]:
Copied!
from siphotonics.effective_index import neff_te0, neff_tm0
neff_te0_list = neff_te0(width=jnp.linspace(0.4, 0.5, 5), wavelength=1.55)
print(neff_te0_list)
neff_tm0_list = neff_tm0(width=jnp.linspace(0.4, 0.5, 5), wavelength=1.55)
print(neff_tm0_list)
from siphotonics.effective_index import neff_te0, neff_tm0
neff_te0_list = neff_te0(width=jnp.linspace(0.4, 0.5, 5), wavelength=1.55)
print(neff_te0_list)
neff_tm0_list = neff_tm0(width=jnp.linspace(0.4, 0.5, 5), wavelength=1.55)
print(neff_tm0_list)
For the cases where the effective index of a mode does not exist, the function will return index of oxide layer as the effective index at that wavelength.
In [ ]:
Copied!
from siphotonics.effective_index import neff_te2
neff_te2_list = neff_te2(width=jnp.linspace(0.4, 0.5, 5), wavelength=1.55)
print(neff_te2_list)
from siphotonics.effective_index import neff_te2
neff_te2_list = neff_te2(width=jnp.linspace(0.4, 0.5, 5), wavelength=1.55)
print(neff_te2_list)
Last update:
2022-12-16
Created: 2022-10-19
Created: 2022-10-19