Loss(dB/90)vs Bending Radius Sweep


#1

Hello

I am doing a bending analysis of a complex waveguide. I already explored the bend waveguide analysis tutorial. I understand that we can get overlap and radiation loss using the the FDE solver.

But, i want to sweep the bending radius and collect the result of radiation loss and overlap parameter. Is it possible to sweep the bending radius and track a specific mode and collect the corresponding loss value?

It would be really great if you give me any solution.

Thank you.


#2

Hi, @naimece !

Lumerical does allow to track the mode parameters while sweeping bend radius.
For this, you should do some scripting.
Here is the relevant piece of example, that I’ve taken from the scripts provided by the book
L.Chrostowski, M.Hochberg, Silicon photonics design: from devices to systems:

for (i=1:n) {

setanalysis (‘number of trial modes’, 4);
nn = findmodes;
if (nn>0) {
Neff(i) = getdata(‘FDE::data::mode1’,‘neff’);
LossdB_m(i) = getdata(‘FDE::data::mode1’,‘loss’); # per m
LossPerBend(i) = LossdB_m(i) * 2piradii(i)/4;
copydcard( ‘mode1’, ‘radius’ + num2str(radii(i)) );

  # Perform mode-overlap calculations between the straight and bent waveguides 
  if (radii(i)>0) {
  	out = overlap('::radius0','::radius'+num2str(radii(i))); 
  	power_coupling(i)=out(2); # power coupling
  }

}
}

I guess this should help.


#3

Dear @naimece

Unfortunately, you can not use sweep tab for this results, but you can write the script that does the work. The methodology for bent waveguide loss calculation is explained in these links:

https://kb.lumerical.com/en/pic_passive_bent_waveguide_analysis.html
https://kb.lumerical.com/en/index.html?solvers_finite_difference_eigenmode_bend.html

and here is the script that you can use as starting point:

closeall;
clear;
cleardcard;

#calculate modes of a straight waveguide

switchtolayout;
setanalysis("bent waveguide",0);
findmodes;
copydcard("mode1","straight waveguide");

R            = linspace(5e-6,20e-6,2);
LossdB_m     = matrix(length(R));
LossPerBend  = matrix(length(R));
Loss         = matrix(length(R));

for (i=1:length(R)){

switchtolayout;
setanalysis("bent waveguide",1);
set("bend radius", R(i));
findmodes;

LossdB_m(i) = getdata('FDE::data::mode1','loss'); 
LossPerBend(i) = LossdB_m(i)* 1e-3 * 2*pi*R(i)/4;
copydcard("mode1","bent R="+num2str(R(i)));
out=overlap("straight waveguide","bent R="+num2str(R(i)));
power_coupling = out(2);


Loss(i) = -10*log10(power_coupling)+LossPerBend(i);

}

#4

Dear @naimece

Just a follow up on this post and some correction on what I said earlier:

You can actually calculate the radiation loss for a bent waveguide using sweep parameter. Please see the simulation file below as an example:

Bend Radius Sweep.lms (233.6 KB)

Please note that this will calculate only the radiation loss. If you want to calculate the total loss which includes overlap analysis, you can use the script that I provided you earlier.

Thanks