2 mode S-Parameters (TE, TM)


I am very excited about your new “Ports” object in FDTD. It is working well for single-mode S-Parameters (TE, TM), and the script is much shorter and cleaner. Thank you for make the file export very easy!

I have a problem however, which I suspect is on the INTERCONNECT side. I can’t get a two polarization system to work. Namely, I have a Y-Branch that works for both TE and TM polarization. I would like to make a model that works for either polarization, and also considers the parasitic polarization rotation / mode coupling (TE to TM, or TM to TE). When I run this in the FDTD script below, I get a 6x6 matrix. In contrast, for single polarization I get 3x3. These make sense, and the file looks reasonable.

However, the passivity test completely fails (1.39), and same with reciprocity 0.98 (I don’t know how that is defined for a 3 port device).

Importing the data to INTERCONNECT brings up some issues:

  • sparam.dat files generated using a single polarization simulation (TE or TM) work fine. I just set the orthogonal identifier to 1 or 2 depending on which simulation I ran, and results are as expected, about 3.2 dB IL for TE, and 3.3 dB for TM.

  • If I simulate both modes, via updateportmodes(1:2), I get a 6x6 matrix in FDTD. Then in INTERCONNECT, the matrix loads fine and shows up as a 3-port device. But when I run simulations using the ONA with orthogonal identifier to 1, the mode 1 outputs are correct, but mode 2 outputs are the same as mode 1. And when I set orthogonal identifier to 2, the results are non-sense.

Please find below the files

1 Like

Hi Lukas,

Thank you for the clear description of this problem. After investigating, we found that this problem is related to a bug in the latest version of FDTD Solutions solver. We’ve already identified & implemented a solution and it will be rolling out soon in our next update.
The bug is inside the s-parameter sweep in FDTD Solutions. When the sweep is set up with multiple user defined modes, the data collection is working fine however the modes for injection aren’t being updated. Hence you see a fully populated s-matrix table, however results for mode 1 and mode 2 are the same since in both cases only mode 1 was injected.
A temporary work around would be to place 2 ports in the same location (1 TE and 1 TM) and then use the s-parameter sweep. I believe this should resolve the issue for the time being.
Thank you again for bringing this to our attention. Please let us know if you have any follow up questions.

1 Like

Thanks Raha! I’ll wait for the update.

In the meantime, is the approach I followed correct in terms of using “orthogonal identifier” 1 or 2 for TE/TM polarizations in INTERCONNECT? I am planning on updating our SiEPIC-EBeam PDK to make sure it has full support for both polarizations.


You are most welcome and yes, that is the correct approach!

did this get updated in the R3 version just released?

Yes, this was updated in R3!

1 Like