EME: Taper

The simplest EMode example of an EME simulation.

This code example is licensed under the BSD 3-Clause License.

  • Python
  • MATLAB
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 = 3200
window_height = h_core + h_clad*2

num_modes = 4 # [-] 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_refractive_index = 'SiO2')

## Draw shapes
em.shape(name = 'BOX', refractive_index = 'SiO2',
    height = h_clad)
em.shape(name = 'core', refractive_index = 'Si',
    height = h_core, etch_depth=h_core*0.90,
    sidewall_angle=10)

## Launch FDM solver and label profiles
em.shape(name = 'core', mask = 600)
em.FDM(label = 'a')
em.report()
em.plot()

em.shape(name = 'core', mask = 1200)
em.FDM(label = 'b')
em.report()
em.plot()

## Draw EME sections
em.section(profile = 'a', section_type = 'straight',
    length = 2e3, num_modes = num_modes)

em.section(section_type = 'taper',
    profile = 'a', profile_end = 'b',
    length = 5000, num_modes = num_modes,
    minimum_z_step = 200, overlap_variation = 0.01)

em.section(profile = 'b', section_type = 'straight',
    length = 2e3, num_modes = num_modes)

## 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 = 3000;
window_height = h_core + h_clad*2;

num_modes = 4; % [-] number of modes
BC = 'TE';

%% Connect and initialize EMode
em = emodeconnection_debug('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_refractive_index', 'SiO2');

%% Draw shapes
em.shape('name', 'BOX', 'refractive_index', 'SiO2', ...
    'height', h_clad);
em.shape('name', 'core', 'refractive_index', 'Si', ...
    'height', h_core, 'etch_depth', h_core*0.90, ...
    'sidewall_angle', 10);

%% Launch FDM solver and label profiles
em.shape('name', 'core', 'mask', 600);
em.FDM('label', 'a');
em.report();
em.plot();

em.shape('name', 'core', 'mask', 1200);
em.FDM('label', 'b');
em.report();
em.plot();

%% Draw EME sections
em.section('profile', 'a', 'section_type', 'straight', ...
    'length', 2e3, 'num_modes', num_modes);

em.section('section_type', 'taper', ...
    'profile', 'a', 'profile_end', 'b', ...
    'length', 5000, 'num_modes', num_modes, ...
    'minimum_z_step', 200, 'overlap_variation', 0.01);

em.section('profile', 'b', 'section_type', 'straight', ...
    'length', 2e3, 'num_modes', num_modes);

%% Run EME and plot results
em.EME();
em.plot();
em.plot_S_matrix();

%% Close EMode
em.close();

Console output:

EMode 0.1.0 - email
Connected on port 58907 to LM-2.
Session type: 3d
Successfully logged in to the license manager.
Meshing... completed in 0.1 sec
Solving... completed in 0.8 sec

Wavelength: 1550.0 nm

  Mode #     n_eff    TE %    Loss (dB/m)
--------  --------  ------  -------------
    TE-0  2.612962  98.9 %          0.000
    TE-1  1.589610  99.1 %          0.000
    TE-2  1.459252  75.2 %          0.000
    TM-3  1.444024   0.0 %          0.000

Meshing... completed in 0.1 sec
Solving... completed in 0.6 sec

Wavelength: 1550.0 nm

  Mode #     n_eff    TE %    Loss (dB/m)
--------  --------  ------  -------------
    TE-0  2.826396  99.9 %          0.000
    TE-1  2.212098  96.4 %          0.000
    TM-2  1.849002  10.6 %          0.000
    TE-3  1.577405  99.0 %          0.000

Solving S-matrices...
Solving section: 1... completed in 0.8 sec

Solving section: 2...
Solving slice at 0.0 nm... completed in 0.8 sec
Solving slice at 5000.0 nm... completed in 0.8 sec
Solving slice at 2500.0 nm... completed in 0.8 sec
Solving slice at 1250.0 nm... completed in 0.8 sec
Solving slice at 625.0 nm... completed in 0.9 sec
Solving slice at 312.5 nm... completed in 0.8 sec
Reached minimum_z_step!
Solving slice at 937.5 nm... completed in 0.8 sec
Reached minimum_z_step!
Solving slice at 1875.0 nm... completed in 0.9 sec
Solving slice at 1562.5 nm... completed in 0.8 sec
Reached minimum_z_step!
Solving slice at 2187.5 nm... completed in 0.8 sec
Reached minimum_z_step!
Solving slice at 3750.0 nm... completed in 0.9 sec
Solving slice at 3125.0 nm... completed in 0.9 sec
Solving slice at 2812.5 nm... completed in 0.8 sec
Reached minimum_z_step!
Solving slice at 3437.5 nm... completed in 0.8 sec
Reached minimum_z_step!
Solving slice at 4375.0 nm... completed in 0.8 sec
Solving slice at 4062.5 nm... completed in 0.8 sec
Solving slice at 4687.5 nm... completed in 0.9 sec
Slice solving complete.
completed in 22.9 sec

Solving section: 3... completed in 0.8 sec
completed in 24.8 sec
Exited EMode

Figures:

../_images/Ex_a.png
../_images/Ex_b.png
../_images/Ex_taper.png
../_images/EM_S10_abs%5E2.png