Photonics – Chinese

Photonics – Chinese

Topics related to Lumerical and more, in Chinese language.

倾斜物象面成像仿真

    • liguangrui33
      Subscriber

      您好,

      我仿真了一个粗糙表面的近场,远处像面的和物面有一个角度(60度),请问成像应该怎么仿真呢?有没有可以参考的案例呢?

      从远场的设定(1m远的半径球面的场),取近场的远场在60度方向为中心的一个NA内的场,可以直接傅里叶变换成像吗?这边k是否有一个投影需要考虑?谢谢

       

    • Guilin Sun
      Ansys Employee

      你是用周期仿真还是非周期仿真?

      如果是周期仿真,你可以用光栅分析得到每一级的衍射角和振幅、强度,这些已经是平面波,你只要指定这个倾斜表面,就可以将这些平面波振幅叠加起来。

      如果是非周期仿真,直接用farfieldexact3d 计算。

      前提是,你需要将这个倾斜平面在仿真坐标系下的xyz给出,以方便计算远场,再换算为2D平面,用2D矩阵表示。我估计你最终要的是2D矩阵分布。

    • liguangrui33
      Subscriber

      多谢指教。

      我想用平面波光源,用的是周期边界。我看到光栅分析的数据也都是(ux,uy)网格上的,所以这个数据还是还是在xy平面内的均匀采样的,不是在球面坐标系(dθ,dφ),是吗?

    • Guilin Sun
      Ansys Employee

      (ux,uy)是方向余弦,不是平面,光栅分析的数据在球面上。你想换算为球面坐标,有几种方法:

      1: 指定衍射级,提取衍射角,比如

      https://optics.ansys.com/hc/en-us/articles/360034407114-gratingu2-Script-command

      # single wavelength

      mname="T"; # monitor name

      u1=gratingu1(mname); # grating unit vectors (can be converted to theta,phi)

      u2=gratingu2(mname);

      nx=find(N,1); # find 0th grating order

      ny=find(M,0); # find 0th grating order

      uxn=u1(nx);uyn=u2(ny);

      uzn=sqrt(1-uxn^2-uyn^2);

      ?theta=acos(uzn)*abs(uxn)/uxn*180/pi;

      2: 提取同一波长所有衍射级角度:

      #find all angle

      Ux = meshgridx(u1,u2);

      Uy = meshgridy(u1,u2);

      Uxy = sqrt(Ux^2+Uy^2)+1e-5; # add 1e-5 to avoid divide by zero problems

      Uxy=Uxy*(Uxy<=1);

       

      Uz = sqrt(1-Uxy^2);

      sin_phi = Uy/Uxy;

      cos_phi = Ux/Uxy;

      cos_theta = Uz;

      sin_theta = Uxy;

       

      theta2D=asin(sin_theta)*180/pi;

      #phi=acos(cos_phi);

      phi2D=atan(Uy/Ux)*180/pi;

       

      如果是2D仿真,可以直接提取衍射角,参见 https://optics.ansys.com/hc/en-us/articles/360041613174-Blazed-grating

       

      知道角度知道振幅,其它操作应该简单了。

       

    • liguangrui33
      Subscriber

      您好,

      这边比较清楚了,多谢!

      还有个相关的问题,我参考的一个例子(https://optics.ansys.com/hc/en-us/articles/360042238733)里有这样的代码来变换成像(# scriptfile: calculate_standard_image.lsf):

      Uz = Uz + 1e-5;
      for(pz=1:length(z_image)) {
          z0 = z_image(pz);
          Ex_image(px,py,pz) = czt(Exf*exp(1i*Kz*z0)*sqrt(1/Uz/k0^2),kx,ky,x_image,y_image)*dkx*dky/(2*pi);
          Ey_image(px,py,pz) = czt(Eyf*exp(1i*Kz*z0)*sqrt(1/Uz/k0^2),kx,ky,x_image,y_image)*dkx*dky/(2*pi);
          Ez_image(px,py,pz) = czt(Ezf*exp(1i*Kz*z0)*sqrt(1/Uz/k0^2),kx,ky,x_image,y_image)*dkx*dky/(2*pi);
      }
       
      E2_image = abs(Ex_image)^2 + abs(Ey_image)^2 + abs(Ez_image)^2;
       
      #Plot image:
      image(x_image/1e-6, y_image/1e-6 ,E2_image,"x (um)","y (um)","|E|^2 image");
       
      我不是很理解czt变换时这边对场分量做的修正*sqrt(1/Uz/k0^2)和需要*dkx*dky/(2*pi)的原因,这里需要您的帮助,多谢!
    • Guilin Sun
      Ansys Employee

      sqrt(1/Uz)是余弦修正,其它是变换需要的常数。https://optics.ansys.com/hc/en-us/articles/360034926173-czt-Script-command  czt本身没有这些常数,正如fft 中需要乘dt才能得到真正的傅里叶变换一样。

    • liguangrui33
      Subscriber

      感谢您的快速回复。需要余弦修正是因为monitor采集到的场是余弦分量吗?坡印廷矢量?

    • Guilin Sun
      Ansys Employee

      非也。

      这是因为电场强度是余弦下降的,所以振幅需要除以其开方。

Viewing 7 reply threads
  • The topic ‘倾斜物象面成像仿真’ is closed to new replies.