LCML - Strip waveguide bend | lcml_bend_strip_1550

lcml
strip_waveguide_bend

#1

This waveguide bend model is built based on the primitive “Waveguide Arc Bend” element. This element is a parameterized cell, similar to the [LCML - Strip waveguide PCell] (LCML - Strip waveguide PCell | lcml_wg_strip_1550_pcell) model, but takes the bend radius (rather than the waveguide width) as the input parameter.

Example Test File

bend_waveguide_pcell.icp (435.1 KB)

User Guide

lcml_bend_strip_1550 (bend)

LCML: 90 degree strip waveguide bend.

Ports

Name Type
opt_1 Optical Signal
opt_2 Optical Signal

CML/Bend

Name Default value Default unit Range
radius 5 um*
*std. unit is m
[3, 20]
note - Bend radius limit: [3 um, 20 um].
- The current model does not support losses due to mode
mismatch and roughness.
-- --

Model Development

MODE Solutions
This bend waveguide has a similar structure as the straight waveguide model except that the supported modes were calculated with a bend radius. The Silicon waveguide and the Silicon-Dioxide cladding have the following dimensions.

Si Oxide
x (μm) 0 0
x span (μm) 0.5 8
y (μm) 0 0
y span (μm) 0.22 3
z (μm) 0 0
z span (μm) 0.6 0.6
Material Si (Silicon) - Palik SiO2 (Glass) - Palik

The waveguide structure is shown below.

The following script will sweep the bend radius (from 3 μm to 20 μm) and save the results, including the effective index, group index, loss and dispersion, to a Lumerical data file bend_waveguide.ldf.

clear;

r_min = 3e-6;
r_mid = 10e-6;
r_max = 30e-6;
step1 = 1e-6;
step2 = 2e-6;
RADIUS1=[r_min:step1:r_mid];
RADIUS2=[r_mid+step2:step2:r_max];
RADIUS=[RADIUS1; RADIUS2];
NN = length(RADIUS);

NEFF = matrix(NN,2);
LOSS = matrix(NN,2);
NG = matrix(NN,2);
DISP = matrix(NN,2);


for (ii=1:NN)    {
    switchtolayout;
    radius=RADIUS(ii);
    ?num2str(ii/NN*100) + "% completed:" + "radius = " + num2str(radius*1e6) + " um";
    setanalysis("search", "near n");
    setanalysis("n",2.5);
    setanalysis("bent waveguide",1);
    setanalysis('bend radius',radius);
    setanalysis('number of trial modes',30);
    flag_TM=matrix(10,1);
    findmodes;
    for (m=1:2)  { 
        # find the TM mode number
        if(getdata("FDE::data::mode"+num2str(m),"TE polarization fraction")<0.1)
            { flag_TM(m)=1; }
    }
    TM_mode_number=find(flag_TM,1);

    # fundamental TE mode
    selectmode(1);
    setanalysis("track selected mode",1);
    setanalysis("detailed dispersion calculation",1);
    frequencysweep;
    f=getresult("FDE::data::frequencysweep","f");
    neff1=getresult("FDE::data::frequencysweep","neff");
    loss1=getresult("FDE::data::frequencysweep","loss");
    ng1=c/getresult("FDE::data::frequencysweep","vg");
    D1=getdata("frequencysweep","D");
    # fundamental TM mode
    selectmode(TM_mode_number);
    setanalysis("track selected mode",1);
    setanalysis("detailed dispersion calculation",1);
    frequencysweep;
    neff2=getresult("FDE::data::frequencysweep","neff");
    loss2=getresult("FDE::data::frequencysweep","loss");
    ng2=c/getresult("FDE::data::frequencysweep","vg");
    D2=getdata("frequencysweep","D");

    NEFF(ii,1)=real(neff1(3));
    NEFF(ii,2)=real(neff2(3));
    LOSS(ii,1)=loss1(3);
    LOSS(ii,2)=loss2(3);
    NG(ii,1)=ng1(3);
    NG(ii,2)=ng2(3);
    DISP(ii,1)=D1(3);
    DISP(ii,2)=D2(3);
}

central_f=f(3);
plot(RADIUS*1e6,NEFF,'radius (um)','neff'); legend('TE','TM');
plot(RADIUS*1e6,LOSS/100,'radius (um)','loss (dB/cm)'); legend('TE','TM');
plot(RADIUS*1e6,NG,'radius (um)','ng'); legend('TE','TM');
plot(RADIUS*1e6,DISP,'radius (um)','dispersion'); legend('TE','TM');

savedata("bend_waveguide.ldf", central_f, RADIUS, NEFF, LOSS, NG, DISP);

INTERCONNECT
This element is based on the primitive “Waveguide Arc Bend” element, as shown below. A property “radius” is added to the compound element to define the bend radius. The setup script of the compound element will read the data file, which is generated from MODE simulations, and extract the associated properties to define the bend waveguide.

# set up the basic properties
setnamed("WGD_1","angle", pi/2);
setnamed("WGD_1","radius", radius);

# load sweep data
?filename=%local path%+"/lib_data/bend_waveguide/bend_waveguide.ldf";
loaddata(filename);
NN = length(RADIUS);
plot_raw_data = 0;
if (plot_raw_data)  {
    plot(RADIUS*1e6,NEFF,'radius (um)','neff','Effective index');
    legend('TE','TM');
    plot(RADIUS*1e6,NG,'radius (um)','ng','Group index');
    legend('TE','TM');
    plot(RADIUS*1e6,LOSS/100,'radius (um)','loss','Loss (dB/cm)');
    legend('TE','TM');
}

neff_TE = interp(NEFF(1:NN,1), RADIUS, radius);
neff_TM = interp(NEFF(1:NN,2), RADIUS, radius);
loss_TE = interp(LOSS(1:NN,1), RADIUS, radius);
loss_TM = interp(LOSS(1:NN,2), RADIUS, radius);
ng_TE = interp(NG(1:NN,1), RADIUS, radius);
ng_TM = interp(NG(1:NN,2), RADIUS, radius);
disp_TE = interp(DISP(1:NN,1), RADIUS, radius);
disp_TM = interp(DISP(1:NN,2), RADIUS, radius);

setnamed('WGD_1','frequency', central_f);
setnamed('WGD_1','orthogonal identifier 1', 1);
setnamed('WGD_1','label 1', 'TE');
setnamed('WGD_1','effective index 1',neff_TE);
setnamed('WGD_1','loss 1',pi*radius/2*loss_TE);
setnamed('WGD_1','group index 1',ng_TE);
setnamed('WGD_1','dispersion 1',disp_TE);
setnamed('WGD_1','orthogonal identifier 2', 2);
setnamed('WGD_1','label 1', 'TM');
setnamed('WGD_1','effective index 2',neff_TM);
setnamed('WGD_1','loss 2',pi*radius/2*loss_TM);
setnamed('WGD_1','group index 2',ng_TM);
setnamed('WGD_1','dispersion 2',disp_TM);

Test

Download the simulation file bend_waveguide_pcell.icp from the top of this page. In this simulation file, the bend waveguide is connected to and measured by an Optical Network Analyzer (ONA). Run the sweep object “sweep_radius” defined in the project file. The following figure is the line plot of the bend loss versus bend radius, fixed at 193.1 THz. The plot shows the trend that the loss in the waveguide will first decrease and then increase with the increasing of the bend radius, and the optimized bend radius for minimal loss is 5 microns.


Lumerical Compact Model Library (LCML)
#2

Note that the current model does not consider the mode mismatch loss when connecting this bend waveguide with a straight waveguide or.another bend waveguide with different radius or orientation.