Photonics – Chinese

Photonics – Chinese

请问和求教Lumerical FDTD 中如何设置入射光的光子轨道角动量OAM的问题

    • JING PENG
      Subscriber

      请问老师,如何在FDTD中设置入射光的光子轨道角动量OAM? 目前,我需要模拟计算不同OAM 模式的光入射到我的超材料表面,所产生的的光学效果。光的偏振态可以在光源的设置中进行设置,但是光子的轨道角动量一直找不到可以设置的地方。

      我在论坛里找到一篇类似的文章,是用编程语言对入射光源的一些参数进行设置,如下所示。由于我对编程语言不是很熟悉,不知道孙老师能否修改/编写脚本程序,来设置具有不同OAM模式的入射光呢?谢谢

       

      # scriptfile:usr_custom_source.lsf

      # define position vectors

      x=linspace(-10e-6,10e-6,401);
      y=linspace(-10e-6,10e-6,401);
      z=0; #this is z z-normal source

      X=meshgridx(x,y);
      Y=meshgridx(x,y);

      lambda0=0.5e-6;
      f=c/lambda0;
      w=2*pi*f;
      k=2*pi/lambda0;

      #calculate k-space field profiles
      NA=0.2;

      kx=linspace(-k,k,200);
      ky=linspace(-k,k,200);
      Kx=meshgridx(kx,ky);
      Ky=meshgridy(kx,ky);
      phi=atan2(Ky,Kx);
      theta=real(acos(sqrt(1-Kx^2/k^2-Ky^2/k^2)));
      envelope=exp(-0.5*(Kx^2+Ky^2)/(NA*k)^2);

      Exk=cos(phi)*cos(theta)*envelope;

      Eyk=sin(phi)*cos(theta)*envelope;

      Ezk=sin(theta)*envelope;

      Ex=-1i*czt(Exk,kx,ky,x,y);

      Ey=-1i*czt(Eyk,kx,ky,x,y);

      Ez=-1i*czt(Ezk,kx,ky,x,y);

      Hxk=-sqrt(eps0/mu0)*sin(phi)*envelope;
      Hyk=sqrt(eps0/mu0)*cos(phi)*envelope;
      Hx=-1i*czt(Hxk,kx,ky,x,y);
      Hy=-1i*czt(Hyk,kx,ky,x,y);
      Hz=0*Ex;

      # sacle fild so E^2=1

      E2=abs(Ex)^2+abs(Ey)^2+abs(Ez)^2;
      scaleFactor=sqrt(max(E2));
      Ex=Ex/scaleFactor;
      Ey=Ey/scaleFactor;
      Ez=Ez/scaleFactor;
      Hx=Hx/scaleFactor;
      Hy=Hy/scaleFactor;
      Hz=Hz/scaleFactor;

      # package field data into the EM fields dataset

      EM=rectilineardataset("EM fields",x,y,z);
      EM.addparameter("lambda",c/f,"f",f);
      EM.addattribute("E",Ex,Ey,Ez);
      EM.addattribute("H",Hx,Hy,Hz);

      # save dataset to .mat file
      matlabsave("import_data.mat",EM);

    • Guilin Sun
      Ansys Employee

      这是一个例子,说明如何从已知K空间的场转换为实物空间的矢量算法。轨道角动量OAM有数学公式吗?你说的不同模式一定是表达式不同。只要你有表达式,就可以参照这个例子改写脚本,原文件第一部分是标量算法,第二部分是矢量算法。脚本不熟悉可以慢慢学,例如参见 

      Ansys Insight: 几个简单实用的脚本Script命令:用于设置

      Ansys Insight: 初学者如何写/编辑/运行脚本文件  

      Ansys Insight: Lumerical脚本命令Script列表

       

      • JING PENG
        Subscriber

        m is the OAM mode order

    • Guilin Sun
      Ansys Employee

      你只需要u 和 exp(1i*m*phi) 就可以。如果Phi是空间位置的函数,你需要用2D或者3D的函数表示,参见

      https://optics.ansys.com/hc/en-us/articles/360034929713-meshgrid3dz-Script-command

      你需要先测试,修改脚本,有问题另外发帖。

      • JING PENG
        Subscriber

        phi 是柱坐标下,第三个变量/参数,(ρ, z, φ ).

        '如果Phi是空间位置的函数,你需要用2D或者3D的函数表示', 这句话的意思是指,要把柱坐标变量 (ρ, z, φ )变成直角坐标 (x, y, z )吗??
        谢谢

    • JING PENG
      Subscriber

      直角坐标和柱坐标的转换:

      {\displaystyle {\begin{aligned}x&=\rho \cos \varphi \\y&=\rho \sin \varphi \\z&=z\end{aligned}}}

    • Guilin Sun
      Ansys Employee

      只能输入面光源,因此参数应该是2D。 Phil是xy 的函数,你定义一个2D函数就可以。输入只能是xyz坐标的函数。你先试一下看看是什么结果。

Viewing 4 reply threads
  • You must be logged in to reply to this topic.