T forward and S matrix from mode expansion monitor

Hi guys,

I have a question about the mode expansion monitor. I got “a”, “N” and “T_forward” from the result. According to this page https://support.lumerical.com/hc/en-us/articles/360034902433, T_froward is the transmission of input field to selected mode and can be caluclated by (aout^2/Nout) / (ain^2/Nin). But I did it manually and found they are not equal actually. The file is attached. It’s the official example. All I did is just adding a power monitor “in” at input, same position as source.expansion2.fsp (398.0 KB)

So I want to ask what’s the definition of the “T_foward” from the result of expansion monitor? What’s the difference from (aout^2/Nout) / (ain^2/Nin)? If I want to calculate the s matrix from input fundamental TE to output fundamental TE, which one should I use?

One more question is that when they are used in varFDTD and the mode expansion has to be 1d, does the power monitor have to be 1d as well?

Another question is, does the position of mode expansion matter? I mean can I put it at input rather than the current position?

Thanks a lot!!!

Hi @yaonian.cui,

Thank you for the questions.

T_froward is the transmission of input field to selected mode and can be caluclated by (aout^2/Nout) / (ain^2/Nin). But I did it manually and found they are not equal actually. The file is attached. It’s the official example. All I did is just adding a power monitor “in” at input, same position as source.expansion2.fsp (398.0 KB)

There are a couple of issues with this simulation. First, a monitor should not overlap with the source (see this page: How close can monitors be to other objects?). Second, if you want to measure modes in the first (narrower) section of the waveguide, you need to place a mode expansion monitor there to find the modes for that section of the waveguide. You can’t use the same mode expansion monitor from the second section of the waveguide, because the modes that this monitor will find will be the wrong shape for the first section. If you try this you should get the correct results for calculating T_forward with the formula.

If I want to calculate the s matrix from input fundamental TE to output fundamental TE, which one should I use?

For calculating S matrices you should use Port objects, which are basically mode sources, frequency monitors and mode expansion monitors packaged into one object. They make make it very easy to calculate and export S parameters.

One more question is that when they are used in varFDTD and the mode expansion has to be 1d, does the power monitor have to be 1d as well?

Yes, the mode expansion monitor will only work with monitors with the same dimensions.

Another question is, does the position of mode expansion matter? I mean can I put it at input rather than the current position?

The mode expansion monitor must be placed at a position where the index cross-section matches the index cross-section of where the modes are being measured. Otherwise, the mode profiles will be wrong. Because the index cross-section is different at the input and the output, you cannot move the output mode expansion monitor there.

Let me know if you have any more questions.

1 Like

Thank you so much for your reply. It really helps me a lot!!

Actually I’m using varFDTD now, so I think I can only use mode source and mode expansion monitor. The result from T forward and (aout^2/Nout) / (ain^2/Nin) for s matrix is still a bit different. So I want to ask which one is more accurate?

Besides, I have a new problem that, the mode I want to launch from mode source has to be found with ‘PML’, but I didn’t find the command to set the boundary condition of mode source. Everytime I have to find the mode mannually after running the script. Do you have any ideas about it?

Many many thanks to you!!

The result from T forward and (aout^2/Nout) / (ain^2/Nin) for s matrix is still a bit different. So I want to ask which one is more accurate?

I am not sure why they would be different, but if they are the result from T forward will be more accurate.

Besides, I have a new problem that, the mode I want to launch from mode source has to be found with ‘PML’, but I didn’t find the command to set the boundary condition of mode source. Everytime I have to find the mode mannually after running the script. Do you have any ideas about it?

With the mode source selected, you can use the seteigensolver command to modify the mode solver of the source. You will have to make sure this setting is active first, for example:

set("mode selection", "user select");
seteigensolver("override default boundaries", 1);
seteigensolver("y min bc", "PML");
1 Like


The results of port or mode expansion monitor can refer to this post.
Hope that helps.

Using this formula and the script expansion2.lsf from link.
image
image

The script expansion2.lsf calculates this value, and as expected, this is exactly what the result “T forward” from the expansion monitor returns.

1 Like

Thank you so much

Thanks a lot!

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.