EME: Taper
The simplest EMode example of an EME simulation.
This code example is licensed under the BSD 3-Clause License.
import emodeconnection as emc
## Set simulation parameters
wavelength = 1550 # [nm] wavelength
dx, dy = 20, 20 # [nm] resolution
h_core = 220 # [nm] waveguide core height
h_clad = 1000 # [nm] waveguide top and bottom clad
window_width = 4000
window_height = h_core + h_clad*2
num_modes = 10 # [-] number of modes
BC = 'TE'
## Connect and initialize EMode
em = emc.EMode(verbose = True)
## Settings
em.settings(
wavelength = wavelength, x_resolution = dx, y_resolution = dy,
window_width = window_width, window_height = window_height,
num_modes = num_modes, boundary_condition = BC,
background_material = 'SiO2')
## Draw shapes
em.shape(name = 'BOX', material = 'SiO2',
height = h_clad)
em.shape(name = 'core', material = 'Si',
height = h_core, etch_depth = h_core)
## Launch FDM solver and label profiles
em.shape(name = 'core', mask = 1000)
em.FDM(profile = 'a')
em.report()
em.plot()
em.shape(name = 'core', mask = 2000)
em.FDM(profile = 'b')
em.report()
em.plot()
## Draw EME sections
em.section(profile = 'a', section_type = 'straight',
length = 2000)
em.section(section_type = 'taper',
profile = 'a', profile_end = 'b',
length = 8000)
em.section(profile = 'b', section_type = 'straight',
length = 2000)
## Run EME and plot results
em.EME()
em.plot()
em.plot_S_matrix()
## Close EMode
em.close()
%% Set simulation parameters
wavelength = 1550; % [nm] wavelength
dx = 20; dy = 20; % [nm] resolution
h_core = 220; % [nm] waveguide core height
h_clad = 1000; % [nm] waveguide top and bottom clad
window_width = 4000;
window_height = h_core + h_clad*2;
num_modes = 10; % [-] number of modes
BC = 'TE';
%% Connect and initialize EMode
em = emodeconnection(verbose = true);
%% Settings
em.settings( ...
wavelength = wavelength, x_resolution = dx, y_resolution = dy, ...
window_width = window_width, window_height = window_height, ...
num_modes = num_modes, boundary_condition = BC, ...
background_material = 'SiO2');
%% Draw shapes
em.shape(name = 'BOX', material = 'SiO2', ...
height = h_clad);
em.shape(name = 'core', material = 'Si', ...
height = h_core, etch_depth = h_core);
%% Launch FDM solver and label profiles
em.shape(name = 'core', mask = 1000);
em.FDM(profile = 'a');
em.report();
em.plot();
em.shape(name = 'core', mask = 2000);
em.FDM(profile = 'b');
em.report();
em.plot();
%% Draw EME sections
em.section(profile = 'a', section_type = 'straight', ...
length = 2000);
em.section(section_type = 'taper', ...
profile = 'a', profile_end = 'b', ...
length = 8000);
em.section(profile = 'b', section_type = 'straight', ...
length = 2000);
%% Run EME and plot results
em.EME();
em.plot();
em.plot_S_matrix();
%% Close EMode
em.close();
Console output:
EMode 0.2.4 - email
Connected on port 62000 to LM-1.
Meshing completed in 0.2 sec
Solving modes... completed in 0.5 sec
Wavelength: 1550.0 nm
Mode # n_eff TE % Loss (dB/m)
-------- -------- ------ -------------
TE-0 2.744942 99.8 % 0.000
TE-1 1.819117 92.4 % 0.000
TM-2 1.665347 11.8 % 0.000
TE-3 1.421518 99.9 % 0.000
TE-4 1.368426 88.0 % 0.000
TM-5 1.359634 12.8 % 0.000
TE-6 1.321504 99.9 % 0.000
TM-7 1.279963 2.4 % 0.000
TE-8 1.250897 98.7 % 0.000
TE-9 1.189492 95.8 % 0.000
Meshing completed in 0.2 sec
Solving modes... completed in 0.3 sec
Wavelength: 1550.0 nm
Mode # n_eff TE % Loss (dB/m)
-------- -------- ------- -------------
TE-0 2.821143 100.0 % 0.000
TE-1 2.606186 99.7 % 0.000
TE-2 2.123806 98.2 % 0.000
TM-3 1.939095 4.9 % 0.000
TM-4 1.565613 16.9 % 0.000
TE-5 1.441070 89.8 % 0.000
TE-6 1.391478 82.7 % 0.000
TE-7 1.362128 66.6 % 0.000
TM-8 1.333348 48.1 % 0.000
TE-9 1.285430 69.6 % 0.000
Solving S-matrices...
Solving section: 0...Meshing completed in 0.1 sec
completed in 0.9 sec
Solving section: 1...
completed in 25.4 sec
Solving section: 2...Meshing completed in 0.2 sec
completed in 0.6 sec
completed in 0.6 sec
Exited EMode
Figures: