phase of circular polarization light

MyunghwanMyunghwan Member Posts: 3


I'm calculating the phase and conversion efficiency of circular polarization light in a metasurface structure.

Before designing my own structure, I'm trying to reproduce the reported results of "Broadband achromatic metalens in the midinfrared range".

I can get same result of the conversion efficiency as shown In Fig 2. However, the calculated phase value is quite different compared with the paper's result.

How can I calculate the phase delay of LCP or RCP induced by metasurfaces?

I attached my source code, FDTD file, and the paper.



  • greg_baethgegreg_baethge Posts: 148Ansys Employee

    Hi @Myunghwan,

    Thank you for posting your question. Unfortunately, Ansys employees are not allowed to download any files posted here. We can only provide some guidelines. Could you give some detail on how you performed the calculation? Feel free to post screen capture of the settings and script used for the calculation.

    I noted here that you were interested in obtaining the S parameters of the meta surface for a circular polarization. I assume you are using the S parameters to get the phase information. Is this correct?

    The issue you encountered might be due to problem in the S-parameter extraction setting. Please refer to Metamaterial S parameter extraction for more information about the methodology and limitation.

  • MyunghwanMyunghwan Posts: 11Member


    First, I tried to use the S parameter analysis function. However, it is difficult to modify the source code for applying with circular polarization source cases.

    To calculate the phase delay induced by metasurface, I launched a RCL source, and then calculated the conversion efficiency and phase delay from monitored Ex and Ey.

    The conversion efficiency is quite correct, but the phase delay is not correct.

    I attached workspace and source code.

    I would appreciate it if you could review it


    i = sqrt(-1) ;

    # Get data from monitor

    m = "Tm";


    x = getdata(m,"x");

    y = getdata(m,"y");

    Ex = getdata(m,"Ex");

    Ey = getdata(m,"Ey");

    # phase calculation

    E_r = (Ex - 1i*Ey)/sqrt(2);

    E_l = (Ex + 1i*Ey)/sqrt(2);

    # phase compensation

    E_r = pinch(E_r(length(x)/2+0.5,length(y)/2+0.5,1,:)) * exp(-i*2*pi*f/c*1.45*2.5*10^-6) * exp(-i*2*pi*f/c*(3-0.6)*10^-6) ; 

    E_l= pinch(E_l(length(x)/2+0.5,length(y)/2+0.5,1,:)) * exp(-i*2*pi*f/c*1.45*2.5*10^-6) * exp(-i*2*pi*f/c*(3-0.6)*10^-6) ; 

    phase_L = angle(E_l) ;

    phase_R = angle(E_r) ; 

  • greg_baethgegreg_baethge Posts: 148Ansys Employee

    Hello @Myunghwan,

    Apologies for the delayed response, I didn't have the chance to get back to you before the forum was closed for maintenance.

    I think the issue is you get the phase from the fields: as my colleague mentioned in the other discussion, the phase will depend on the position, while it is not the case when considering the S parameters. An possible option is to get the circular polarization from 2 simulations (each of them with 1 source, and 2 orthogonal polarization), that allows you to reconstruct any polarization by combining the 2.

    Using the S parameter calculation for each simulation, you can them combine the 2 S parameters in a similar way (this was also suggested by my colleague). I don't think this would require any modification of the analysis script but probably to normalize the resulting S parameters.

  • MyunghwanMyunghwan Posts: 11Member

    Thanks for your reply.

    That could be a possible way, but I have a question.

    If I launch LCP light, how can I distinguish or calculate the phase of output LCP or RCP separately.

    I think S-parameter result contains both LCP and RCP information.

  • greg_baethgegreg_baethge Posts: 148Ansys Employee

    You're most welcome, @Myunghwan. The S-parameter calculation relies on grating projection, where we get the S and P polarization for the grating order. So you should be able to determine whether the output is LCP or RCP by comparing the phase of each polarization.

    You could also use the polarization ellipse to check if the output is still circular polarization. That said, I'm not sure if it would be possible to separate the output in RCP and LCP.

Sign In or Register to comment.