LCML - Directional coupler based on analytical functions | lcml_dc_strip_1550_analytical



This directional coupler model is built by using analytical functions. This method is very efficient if the element can be characterized by analytical equations. This element also takes advantages of the basic strip waveguide element by using it as parts of the model.

Example Test File

directional_coupler_analytical.icp (823.9 KB)

User Guide

lcml_dc_strip_1550_analytical (dc)

LCML: directional coupler based on analytical functions.


Name Type
opt_1 Optical Signal
opt_2 Optical Signal
opt_3 Optical Signal
opt_4 Optical Signal


Name Default value Default unit Range
coupling_length 17.5 um [0, 47.5]

Model Development

1.In INTERCONNECT, create a compound element.

2.Add four bidirectional optical ports to the compound element (two on the top and two on the bottom), and add four new properties “wg_width”, “gap”, “radius” and “coupling_length” all with “Type” of “Distance” and “Kind” of “Number”. Set the “model” of the compound element to be “lcml_dc_strip_1550_analytical” and the “prefix” of it to be “dc”.

3.Expand the compound element, right click on the schematic editor window and select “Create scripted element”.

4.Edit the scripted element to add four bidirectional optical ports to it (two on the top and two on the bottom) and copy the following script commands to its setup script window.

# scale to micron, as the fitting results are in micron (e.g., Lx = 38 um)
Lc = coupling_length * 1e6;     

# Generate the S-parameters for the directional coupler

p1 = [-0.167,  298];   # fitting coefficients for Lx
p2 = [0.028,  -42];   # fitting coefficients for Z_bend

#plot(Lambda,p1(1)*Lambda+p1(2),'wavelength (nm)','Lx (um)','Cross-over length');
#plot(Lambda,p2(1)*Lambda+p2(2),'wavelength (nm)','Z_bend (um)','Z_bend');

for (ii=1:length(Lambda)) {

# Note:	port 1 is input, 
#	port 2 is add,
#	port 3 is bar,
#	port 4 is cross.

S11=[f, abs(S11), angle(S11)];
S21=[f, abs(S21), angle(S21)];
S31=[f, abs(S31), angle(S31)];
S41=[f, abs(S41), angle(S41)];

S44 = S33 = S22 = S11;
S43 = S34 = S12 = S21;
S13 = S24 = S42 = S31;
S14 = S23 = S32 = S41;

# Set S-parameters
setsparameter("opt_1", "opt_1", "transmission", S11);
setsparameter("opt_1", "opt_2", "transmission", S12);
setsparameter("opt_1", "opt_3", "transmission", S13);
setsparameter("opt_1", "opt_4", "transmission", S14);

setsparameter("opt_2", "opt_1", "transmission", S21);
setsparameter("opt_2", "opt_2", "transmission", S22);
setsparameter("opt_2", "opt_3", "transmission", S23);
setsparameter("opt_2", "opt_4", "transmission", S24);

setsparameter("opt_3", "opt_1", "transmission", S31);
setsparameter("opt_3", "opt_2", "transmission", S32);
setsparameter("opt_3", "opt_3", "transmission", S33);
setsparameter("opt_3", "opt_4", "transmission", S34);

setsparameter("opt_4", "opt_1", "transmission", S41);
setsparameter("opt_4", "opt_2", "transmission", S42);
setsparameter("opt_4", "opt_3", "transmission", S43);
setsparameter("opt_4", "opt_4", "transmission", S44);

5.After editing the scripted element, drag and drop four lcml_wg_strip_1550_basic elements to the schematic editor window, connect the elements and relays as shown in the figure below. The waveguides’ lengths will be set to half of the length of the directional coupler by the setup script of the compound.

6.Back to the compound element and set icon.


Download the simulation file directional_coupler_analytical.icp from the top of this page. In this simulation file, the directional coupler is connected to and measured by an Optical Network Analyzer (ONA). Click on the “run” button and the ONA will be populated with measurement data. To view the simulation results, user can right click on the results and select “Visualize”.

Lumerical Compact Model Library (LCML)