how can I calculate the reflected light which is far from the reflect surface

Recently I was studying the paper

in the attached Supplementary figure 4 and figure 5, how can I calculate the diffracted power in different order? as the author showed in Supplementary table 1.

Thanks in advance!

It looks like the plots are showing the far field projection of the diffracted fields. Far field projections are discussed in this chapter of the Knowledge Base:

This example shows how you can plot the far field projection result directly from a frequency domain power or profile monitor:

After the simulation has been run, right-click on the monitor which measures the transmitted or reflected fields and visualize the “farfield” result.

Please try it out and let me know if there are any further questions!

1 Like


Thanks for you replay.

Maybe I didn’t make myself clear enough to understand, I want to know how to calculate the power of the two spots in figure 4 and figure 5, and then I can use the calculated power of each spot to get the extinction ratio in table 1.

Thanks for the clarification. You can determine the amount of power in the far field within a specified range of angles using the farfield3dintegrate script command, and there are details about the syntax for this script command here:

There is also an example which uses this script command here:

Hopefully this helps!

1 Like

Hi nlui

Thanks for reply, the method works well.


Hi @nlui

As far as I know, when I conduct the far field projection, I have to do it at one single wavelength, is there any ways I can get the far field projection with respect to the wavelength?

Thanks in advance!

Yes, you can use a “for” loop to loop through each frequency point recorded by the monitor. For example, you could use something like the following code:

f = getdata("monitor","f"); # get the vector of frequency points
res = 150; # resolution of far field projection
E2 = matrix(res,res,length(f)); # initialize variable to hold projected fields for all frequency points

for(i=1:length(f)){ # loop through each frequency point
    E2(1:res,1:res,i)=farfield3d("monitor",f(i),res,res); # calculate projection at current frequency point
} # end loop
1 Like

Thanks @nlui

The method works well.