Waveguides¶
Waveguide¶
-
modes.waveguide.waveguide(x_step=0.02, y_step=0.02, thickness=0.22, width=0.5, slab_thickness=0, sub_thickness=0.5, sub_width=2.0, clad_thickness=[0.5], n_sub=<function sio2>, n_wg=<function si>, n_clads=[<function sio2>], wavelength=1.55, angle=90.0)[source]¶ Return waveguide structure
- Parameters
x_step (
float) – x grid step (um)y_step (
float) – y grid step (um)thickness (
float) – waveguide thickness (um)width (
float) – 0.5 (um)slab_thickness (
float) – 0 (um)sub_width (
float) – 2.0 related to the total simulation width (um)sub_thickness (
float) – 0.5 bottom simulation margin (um)clad_thickness (
List[float]) – [0.5] List of claddings (top simulation margin)n_sub (
Union[Callable,float]) – substrate index materialn_wg (
Union[Callable,float]) – core waveguide index materialn_clads (
List[Union[Callable,float]]) – list of cladding refractive index or function [sio2]wavelength (
float) – 1.55 wavelength (um)angle (
float) – 90 sidewall angle (degrees)
_________________________________ clad_thickness width <----------> ___________ _ _ _ _ _ _ | | _____| |____ | thickness slab_thickness | _______________________ _ _ _ _ __ sub_thickness _________________________________ <-------------------------------> sub_width
To define a waveguide we need to define:
the material functions or refractive indices of box, waveguide and clad
thickness of each material
x and y_steps for structure grid
sidewall angle
wavelength that can be used in case the refractive index are a function of the wavelength
Where all units are in um
import modes as ms wg = ms.waveguide(width=0.5, thickness=0.22, slab_thickness=0.09, angle=80) ms.write_material_index(wg)
(Source code, png, hires.png, pdf)
- Return type
RidgeWaveguide
Waveguide Array (coupled waveguides)¶
-
modes.waveguide.waveguide_array(wg_gaps, widths, x_step=0.02, y_step=0.02, thickness=0.22, slab_thickness=0, sub_thickness=0.5, sub_width=2.0, clad_thickness=[0.5], n_sub=<function sio2>, n_wg=<function si>, n_clads=[<function sio2>], wavelength=1.55, angle=90.0)[source]¶ Returns a evanescent coupled waveguides
__________________________________________________________ clad_thickness widths[0] wg_gaps[0] widths[1] <-----------><----------><-----------> _ _ _ _ _ _ ___________ ___________ | | | | _____| |____________| |____ | thickness slab_thickness | ________________________________________________ _ _ _ _ _ sub_thickness __________________________________________________________ <--------------------------------------------------------> sub_width
To define a waveguide we need to define
- Parameters
wg_gaps (
List[float]) – between waveguideswidths (
List[float]) – of each waveguide (list)x_step (
float) – grid x step (um)y_step (
float) – grid y step(um)n_sub (
Callable) – substrate refractive index value or function(wavelength)n_wg (
Callable) – waveguide refractive index value or function(wavelength)n_clads (
List[Callable]) – waveguide refractive index value or function(wavelength)slab_thickness (
int) – slab thickness (um)sub_thickness (
float) – substrate thickness (um)clad_thickness (
List[float]) – cladding thickness (um)wavelength (
float) – in umangle (
float) – sidewall angle in degrees
Where all units are in um
import modes as ms wg_array = ms.waveguide_array(wg_gaps=[0.2], widths=[0.5, 0.5], slab_thickness=0.09) ms.write_material_index(wg_array)
(Source code, png, hires.png, pdf)
- Return type
WgArray