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 – Chinese

Photonics – Chinese

Topics related to Lumerical and more, in Chinese language.

请问和求教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
  • The topic ‘请问和求教Lumerical FDTD 中如何设置入射光的光子轨道角动量OAM的问题’ is closed to new replies.