LCML - Directional coupler based on lookup table | lcml_dc_strip_1550_lookuptable



This directional coupler is built based on a lookup table and the S parameters extracted from FDTD simulations.

Example Test File

directional_coupler_lookuptable.icp (275.6 KB)

User Guide

lcml_dc_strip_1550_lookuptable (dc)

LCML: directional coupler based on lookup table.


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


Name Default value Default unit Range
note - The current model only supports "coupling_length"
as an input parameter.
- The other parameters (i.e., "wg_width", "gap", "radius") are
now fixed but can be similarly parameterized in the future.
-- --
wg_width 0.5 um [0.5, 0.5]
gap 0.2 um [0.2, 0.2]
radius 5 um [5, 5]
coupling_length 17.5 um [0, 47.5]

Model Development

FDTD Solutions
1.Open the file dc_fdtd.fsp. This file can be found in the LCML_resource folder in the download page. In this FDTD project file, the directional coupler structure is shown below. In the simulation region, there are 4 “Frequency-domain field and power” monitors and 4 “Mode expansion monitors” located at the 4 ports of the directional coupler. A mode source is placed at the top left port of the directional coupler as the input source.

2.Run the sweep object “Lc” defined inside the FDTD file.

3.Open and run the script file dc_post_sweep.lsf in the FDTD project file, or copy and paste the following script commands into the script editor window and run. This script file can be found in the LCML_resource folder in the download page. It will generate the S parameter text files and the .xml lookup table.

# define data export
table = "directional_coupler";

# prepare data structure
design = cell(1);
extracted = cell(1);
design{1}.name = "Lc";
extracted{1} = struct;
extracted{1}.name = "s-param";
#extracted{2} = struct;
#extracted{2}.name = "transmission_coeff"; 
#extracted{3} = struct;
#extracted{3}.name = "coupling_coeff";
#extracted{4} = struct;
#extracted{4}.name = "insertion_loss";

Lc = linspace(0,47.5e-6,20);

for (ll=1:length(Lc)) {
    # XML export
    design{1}.value = Lc(ll);
    ?filename = "dc_gap=" + num2str(gap*1e9) + "nm_Lc=" +num2str(Lc(ll)*1e6) + "um";
    extracted{1}.value = file1;

    # write design/extracted pair
    lookupwrite( xml_filename, design, extracted );

lookupclose( filename );

1.In INTERCONNECT, create a compound element.

2.Add four bidirectional optical ports to the compound element (two on the left and two on the right), 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_lookuptable” and the “prefix” to be “dc”.

3.Expand the compound element, drag and drop an Optical N Port S Parameter element to the schematic editor.

4.Edit the compound element, in the “Scripts” tab, copy and paste the following script commands to the “Setup Script”.

lut_filename = %local path%+"/lib_data/directional_coupler/dc_map.xml";
table = "directional_coupler";

design = cell(1);
design{1} = struct;
design{1}.name = "Lc";
design{1}.value = coupling_length;

s_filename = "dc_gap=200nm_Lc=" + num2str(coupling_length*1e6) + "um.txt";
s_filename = %local path% + "/lib_data/directional_coupler/" + s_filename;
if (fileexists(s_filename)==1) {
    setnamed('SPAR_1','load from file',1);
    setnamed('SPAR_1','s parameters filename',s_filename);
    ?"S parameters file exactly matching input parameters has been found and successfully loaded: " + endl + s_filename;
else {
    setnamed('SPAR_1','load from file',0);
    ?M = lookupreadnportsparameter( lut_filename, table, design, "s-param" );
    setvalue('SPAR_1','s parameters',M);

5.Expand the compound element, connect the relays and the ports accordingly.

6.Back to the compound element and set icon.


Download the simulation file directional_coupler_lookuptable.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)
Extracting s-parameteres for a Directional Coupler and import in Interconnect