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_slab=None, 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_slab (
Union
[Callable
,float
,None
]) – optional slab index. Defaults to n_wg.n_clads (
List
[Union
[Callable
,float
]]) – list of cladding refractive index or function [sio2]wavelength (
float
) – 1.55 wavelength (um)angle (
float
) – 90 sidewall angle with respect to normal (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 (degrees)
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)
- 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_slab=None, 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)n_slab (
Union
[Callable
,float
,None
]) – optional slab index. Defaults to n_wg.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)
- Return type
WgArray