Waveguide Bend - How to create different Shapes (Sin,Cos, ...) ?


hey everybody,

i’d like to calculate the losses (via EME & FDTD) in s-bend waveguides of different types for different bend radii.
the problem is iam having trouble to define the structures.

for example i’d like to define a sine- or cosine-shaped s-bend. the s-bend example in lumerical is based on bezier curves so that’s not useful.
i tried to use the “custom structure” based on a formula but that didnt work.

the formula for cosine-shaped s-bend is: y(x) = H/2 * [1- cos(xpi/L)]
the formula for sine-shaped s-bend is: y(x) = x
H/L - H/(2pi) * sin(x2*pi/L)
x is the propagation axis
H refers to the height of the bend
L refers to the length of the bend

anybody got any idea?

How to simulate Triplex Si3N4/SiO2 waveguide
How can I design a sinusoidal grating?

Hi @re-fuse
In Lumerical’s knowledge base the chapter about complex structures and waveguide bends is very analytic. https://kb.lumerical.com/en/index.html?ref_sim_obj_waveguide_bends.html
But it uses the Bezier curve in order to build the complex structure. I don’t think that it is possible to design your complex structure without use the Bezier curve theory.

create custom object by importing the (x,y) axis data
Tapering in bent waveguide

Hi @re-fuse

Thanks for reaching out. As @konslekk mentioned, Bezier curves will be the easiest options. Unfortunately custom shape supports only extrusion and rotation and will not be much of help in your case.

I have two ideas that might be useful for you:

  1. use a polygon and import the data points. This will require you to construct a closed line defining the top boundaries of waveguide and then the lower edge, composed of data points with (x-n,y-n) coordinates. These points can be defined, for example, in Matlab and number of data points will define resolution (high resolution might slow down the simulations).

  2. You can use another software to create GDS files and import them to the software. Importing the structure as an image file might also work.

Please let me know if these ideas make sense to you.


Hi, @bkhanaliloo

I wonder if the custom form defined by equations can work in this case ?


Hi @msaygin

Thank you for joining the conversation.

It looks like the software automatically picks x-axis as the lower edge of any devices. It would be better if we had some freedom to customize the lower edge or the rotation axis, as some design softwares like Solidwork does.

Can you please share your file if you had any success in creating this geometry using custom design?



thx for you replies!


iam not familiar with gdsII / CAD so i’ve tried your first idea and calculated the data points of the edge of a cosine-shaped s-bend.
how do i actually import and apply those data points to a polygon function?
the only thing i’ve found was to import the data points via “import binary data” … but then i (of course) only get a model of the edge of the s-bend with no interior as i didnt calculate the data points for the interior.


Hi @re-fuse,
Here is a script I wrote for you to illustrate how you can draw a sin shaped waveguide.

addpoly; set(“name”,“SinWG”);
start= 0e-6; end=start + 3e-6;
x1= start:0.5e-6:end;
y1= (1e-6)sin(x1pi/6e-6);
x2= flip(x1,1);
y2= flip(y1,1)-0.3e-6;
v= [x1, y1; end, 0.7e-6; x2,y2];
set(“z min”, -0.11e-6); set(“z max”, 0.11e-6);

That is a snapshot of what you get.


Dear @re-fuse

@aya_zaki’s answer was what I had in mind.

Thanks Aya :+1:


@aya_zaki: thank you so much!
i saw that you replied to similar topics and was hoping to get some input from you. :slight_smile:



i’ve got one more question.

in line 9 you set the vertices for the polygon
v= [x1, y1; end, 0.7e-6; x2,y2]
what is the highlighted middle part for? don’t you only need the following?
v= [x1, y1; x2,y2]
it also seems to work this way.


Yes, it is redundant. You are right.

I was testing something and forgot to erase it.