How to calculate S-parameter?


#1

I want to know how to calculate S-parameter.
I mean to say, I would like to find out whether S-parameter is calculated in Voltage[V] or Power[W].

I would like to appreciate it if you let me know as soon as possible.

Thanks.


关于s参数的一些问题
Y branch simulation problem
#2

Hi @in5068
First of all you have to read this article. It refers to the S parameters. You have to use “Freqeuncy-domain field and power monitors” and “Mode expansion monitors”. After that you have to write a script in Python in order to calculate the S-parameters. In this page you can learn how to extract the S-parameters of a ring resonator. Follow all the steps and you will understand the procedure. Also i would like to mention where to write the python script.
After you have finished the design click right on model :

A window will open:There is an example python script , how to calculate the S parameters.

S parameters are calculated in Power[W] or you can convert them to [dB].

I hope it helps!


#3

Hi @in5068,

Thanks @konslekk for the answer. The S-parameter measures the ‘transmission’ and ‘reflection’ percentage, so it doesn’t come with a unit itself. The actually output unit depends on the input as well as the definition of the S-parameter. If the S-parameter defines the complex transmission, then the output could be complex transmission as well, the unit would be in ‘amplitude’ unit (like V). If the S-parameter defines the power transmission, then the output unit would be a power unit (like W).

You may also find the following pages very helpful:
https://kb.lumerical.com/en/index.html?metamaterials_s_parameters.html
https://kb.lumerical.com/en/index.html?pic_passive_getting_started_ring_resonator_mode2.html

I hope this could help :slight_smile:


#4

Hi.
In addition, I want to know whether Transmission and Reflection are Voltage[V] or Power[W].

Reflection or Transmission can be expressed 0~1 in Lumerical FDTD .


#5

Hi @in5068

Like the S-parameters, ‘transmission’ is a unit-less quantity. In FDTD Solutions, it is defined as
the amount of power transmitted through power monitors and profile monitors, normalized to the source power. If you are interest in the actual power transmitted, you need to multiply the transmission with the sourcepower. Same goes with the reflection.
For general information about the units employed in Lumerical’s optical solvers, please have a look at the Units and normalization page.


#6

Hi,

I do not understand why S22=in.b/in.a rather than S22=throgh.b/through.a; S12=through.a/in.a rahter than S12=in.a/through.a. I’m confused.

Thank you very much!

Qi


#7

Hi @qi.han.1,

I think @konslekk assumed that the component/structure is reciprocal (@konslekk, please correct me if I am wrong) so that we can have S22 = S11, in which S11 = in.b/in.a. But your definition for S22 is also correct that by direct calculation, S22 = through.b/through.a, and you can also use this equation to calculate it.

For the definition of S12, it refers to the input from the through port and output from the in port (from port “2” to port “1”). Since you are using the Mode Expansion monitor to calculate for the s-parameters, a is along the positive coordinate axis and b is along the negative coordinate axis. Based on the reciprocal assumption, S12 = S21, and S21 = through.a/in.a.

I hope this is clear. The KB page S Parameter extraction could also be very helpful.


#8

@gwang you are right. I assumed that the structure is reciprocal.


#9

Hi,

If I want to extract S11, S21,S31 and S41, what should I write in script?

Sdata=[s.f, abs(S11), unwrap(angle(S11)),abs(S21), unwrap(angle(S21)),abs(S31), unwrap(angle(S31)),abs(S41), unwrap(angle(S41)),];
Is it right?

Qi


#10

Hi @qi.han.1

in = getresult(“expansion”,“expansion for in”);
through = getresult(“expansion”,“expansion for through”);
drop = getresult(“expansion”,“expansion for drop”);
drop2 = getresult(“expansion”,“expansion for drop2”);

S11 = S22 = S33 = S44 = in.b/in.a;
S21 = S12 = S34 = S43 = drop.b/in.a;
S31 = S13 = S24 = S42 = through.a/in.a;
S41 = S14 = S23 = S32 = drop2.a/in.a;

S = matrixdataset;
S.addparameter(“f”,in.f,“lambda”,in.lambda);
S.addattribute(“S11”,S11);
S.addattribute(“S21”,S21);
S.addattribute(“S31”,S31);
S.addattribute(“S41”,S41);

Sdata = [S.f, abs(S11), unwrap(angle(S11)), abs(S21), unwrap(angle(S21)), abs(S31), unwrap(angle(S31)), abs(S41), unwrap(angle(S41))];

if(fileexists(filename)) { rm(filename); }
format long;
write(filename,num2str(Sdata));
format short;


#11

Thank you very much!

Qi