I was trying to use the s-parameter retrieval analysis built inside FDTD solution. However, I noticed that the analysis is only for normal incidence. Does anyone have any example for oblique angle cases? If not, does anyone know which part I should change in the script in order to have it generalized for all incident angle? Is it just the phase correction part?
Sorry for my late reply.
Can you please provide more info about the application that you are interested in? It might be a good idea to take a look at BFAST source as well.
I was trying to follow the steps provided by S-parameter retrieval example:
In this example, the script first obtained reflection and transmission
coefficients by two point monitors. Then, the coefficients are used to
calculate the effective permittivity and permeability of the metamaterial.
However, based on the description inside the script, this example works
only for normal incidence. For oblique angle simulations the phase
correction must be generalized. I’m not sure how to do that but I do need
the results for oblique angle. I just checked BFAST source example, it does
not include the information I need here.
Just want to catch up with you. I did some studying on the topic and I think the main problem of generalizing phase correction is the “propagation_phase” part. However, I’m not 100% sure if I’m right. Do you have any reference for the equations used in the script (includes the cases for both normal incidence and oblique angle)?
You are right, the main correction is in the phase but there are also some subtleties related to the polarization. I am working on an example that shows how the corrections can be implemented. I will post it tomorrow.
In this example the s-parameter analysis group has been generalized to deal with oblique incidence. For testing purposes, instead of an actual metamaterial I have use a simple dielectric layer. In this case we can use the script command stackrt to find the complex transmission and reflection coefficients analytically, so this is a good way to test the analysis group.
For oblique incidence it is convenient to work in terms of s and p polarization. As before, you can set the input polarization angle to be 90 or 0, which correspond to s and p polarization, respectively. In the original analysis group only the largest Cartesian component of the fields was used; now the modified version projects the fields at the monitors to the s- and p-polarization basis, using the convention for the electric field vectors described in the diagram below. This definition is consistent with the one used in stackrt, so we can compare the two approaches directly.
In the simulation file I have created a nested sweep over propagation direction and polarization, so that you can generate the full 4x4 S-matrix:
For simplicity, the analysis group has been written for injection along the z-axis (as in the diagram above). The indices 1 and 2 in the matrix correspond to ports 1 and 2, which are assumed to be at media 1 and 2, respectively. In the analysis group parameters you can set the propagation direction to be +1 or -1, which correspond to injection at 1 or 2, respectively. A single simulation will fill one column of the matrix above; for example, if you set polarization angle to 90 (s-polarized input) and propagation direction to -1 (input at medium 2), you will get the third column of the S-matrix. By sweeping over polarization angle and propagation direction you can get the full S-matrix.
For further reference, please check the documentation and comments in the setup and analysis scripts inside the analysis group.
The script file provided above runs the sweep to find the full S-matrix for multiple frequencies and compares the results with those from stackrt. Multiple plots will be generated; for example:
Important note: The analysis group uses the simple method for extracting the S-parameters directly from the fields collected by point DFT monitors (without any grating analysis). This method has some limitations as explained here.
Thanks a lot for the example and the information. Do you have any reference for the equations used in the script? Thanks!