We have an exciting announcement about badges coming in May 2025. Until then, we will temporarily stop issuing new badges for course completions and certifications. However, all completions will be recorded and fulfilled after May 2025.
Photonics

Photonics

Topics related to Lumerical and more.

How to calculate scattering power?

    • 10172100207
      Subscriber

      Why does Lumerical example(defect scattering) use the difference of two cone volume integrals to obtain the scattered power in the PSL.lsf script?

      the model:

       

      Here is the script: 

      ############################################

      # file: psl_analysis

      # Description: This file is used to calculate

      # the scattering from PSL spheres. It runs

      # a reference simulation as well as the defect

      # simulations.

      # After the simulations are complete, the far

      # fields are calculated. The reference far field

      # is subtracted from the defect far field,

      # giving the scattered far field.

      #

      # Copyright 2010 Lumerical Solutions Inc

      ############################################

       

      polarization = "P"; #sets which polarization to run: "P", "S", "C" (circular)

       

      run_simulations = 1; # set to 0 to analyze previously run simulations

       

       

       

      if (run_simulations) {

      switchtolayout;

       

      if (polarization=="P") {

      setnamed("FDTD","x",1e-6);

      setnamed("source1","polarization angle",0);

      setnamed("source1","angle theta",70);

      setnamed("FDTD","y min bc","Symmetric");

      select("source2");

      delete;

      }

      if (polarization=="S") {

      setnamed("FDTD","x",1e-6);

      setnamed("source1","polarization angle",90);

      setnamed("source1","angle theta",70);

      setnamed("FDTD","y min bc","Anti-Symmetric");

      select("source2");

      delete;

      }

      if (polarization=="C") {

      setnamed("FDTD","x",1e-6);

      select("source2");

      delete;

      setnamed("source1","polarization angle",0);

      setnamed("source1","angle theta",0);

      setnamed("FDTD","x",0);

      select("source1");

      copy;

      set("name","source2");

      set("polarization angle",90);

      set("phase",90);

      setnamed("FDTD","y min bc","PML");

      }

       

      runsweep;

      save;

      }

       

      swp="sweep_rad";

      farfieldfilter(0.5);

       

      # get the data from the sweep

      E2_far=getsweepresult(swp,"E2_far");

      T=getsweepresult(swp,"T");

      SP=getsweepresult(swp,"SP");

      rad = E2_far.rad;

      res = length(E2_far.ux);

      E2=E2_far.E2_far;

      #plot(rad*1e9,log10(T.T*SP.SP),"radius (nm)","scattered power (log10, Watts)"

      scat_power=matrix(length(rad)); #创建矩阵存储不同半径的scat_power

       

      for (i=1:length(rad)) {

       

      P_far_scat = sqrt(eps0/mu0) * pinch(E2(1:res,1:res,i));

      scat_power(i) = 0.5*(farfield3dintegrate(P_far_scat,E2_far.ux,E2_far.uy,72,0,0)-farfield3dintegrate(P_far_scat,E2_far.ux,E2_far.uy,25,0,0));

      image(E2_far.ux,E2_far.uy,pinch(P_far_scat)/pinch(max(P_far_scat)),"ux","uy","far field","plot polar");

      }

       

      savedata("psl_"+polarization,scat_power); # save data to an ldf file

       

       

       

      # plot results from P,S,C polarization on same plot (if results exist)

      if (fileexists("psl_p.ldf")) { loaddata("psl_P"); spP = scat_power; } else { spP = 0; }

      if (fileexists("psl_s.ldf")) { loaddata("psl_S"); spS = scat_power; } else { spS = 0; }

      if (fileexists("psl_c.ldf")) { loaddata("psl_C"); spC = scat_power; } else { spC = 0; }

       

      if (spP==0 ) {spP=0*rad; }

      if (spS==0 ) {spS=0*rad; }

      if (spC==0 ) {spC=0*rad; }

       

      plot(2*rad(1:length(rad))*1e9,log10(spP),log10(spS),log10(spC),"Diameter (nm)","log10(scattered power)");

      legend("P","S","Circular");

      My problem: 

      scat_power(i) = 0.5*(farfield3dintegrate(P_far_scat,E2_far.ux,E2_far.uy,72,0,0)-farfield3dintegrate(P_far_scat,E2_far.ux,E2_far.uy,25,0,0));

      Why does it use the power with a half-angle of 72 degrees minus the power with a half-angle of 25 degrees? How are the values of 72 and 25 determined?

    • Amrita Pati
      Ansys Employee

      Hello,

      This was done to validate the results of the simulation against experimental data. If you go into the cited paper, you will find the following:

      Let me know if you have any further questions.

      Regards,
      Amrita

Viewing 1 reply thread
  • The topic ‘How to calculate scattering power?’ is closed to new replies.