Photonics – Chinese

Photonics – Chinese

Ansys Insight:如何将模式的偏振画出来—-矢量作图

    • Guilin Sun
      Ansys Employee
      MODE 中的FDE求解结果除模式后,有时需要将其偏振态画出来。这里提供两种方法,一是用Vectorplot,另一种是将数据保留用Matlab来画。 下图是Vectorplot的结果,提供的脚本为用户提供了修改各种参数的可能性。 image.png
      脚本:

      em=getresult("mode1","E");

      Ex=pinch(em.Ex);

      Ey=pinch(em.Ey);

      Ez=pinch(em.Ez);

      x=em.x;

      y=em.y;

      z=em.z;

      xnew=linspace(min(x),max(x),length(x));

      ynew=linspace(min(y),max(y),length(y));

      Ex=interp(Ex,x,y,xnew,ynew);

      Ey=interp(Ey,x,y,xnew,ynew);

      Ez=interp(Ez,x,y,xnew,ynew);

      x=xnew;

      y=ynew;

      E = rectilineardataset("E",x,y,z);

      E.addattribute("E",Ex,Ey,Ez);

       

      vectorplot(E);

      setplot("down sample",1);

      setplot("Nx",50);

      setplot("Ny",50);

      setplot("Nz",1);

      setplot("enable scale for vector",1);

      setplot("scale factor",2);

      setplot("set color bar limits",1);

      setplot("colorbar min",0.5);

      setplot("colorbar max",1.0);

      break;

      ### using matlab

      matlabsave("E.mat"); #to be used by matlab code

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

      matlabput(Ex,Ey,x,y);#directl call matlab,not tested

      matlab("

      contourf(x*1e6,y*1e6,sqrt(real(Ex).^2+real(Ey).^2),10); % contour plot

      hold on;

      quiver(x*1e6,y*1e6,real(Ex),real(Ey)); % vector plot

      xlabel('x');

      ylabel('y');

      %FigHandle = figure('Position', [-10, -10, 20, 20]);

      ");

       

       

       

      Matlab添加等值线和矢量:

      矢量作图的一些参数参见

      KB里面没有介绍矢量作图Visualizer里面一些项目的具体意义,这里简单介绍一下: [image] set color bar limits:设定彩色标尺代表的数值范围。如果均为零,则显示单色(缺省为蓝色) down sample:缺省是按数据点左图,很多情况下箭头太密,选不同的数值可以突出显示所希望的箭头 [image] enable scale for vector scale factor:将数据放大(〉1)或缩小(〈1) show data points:显示数据点(一般都不必要) invert background color:背景用互补色 light on:有光照,请参见Matlab立体图的设置 use parallel projection:使用平行光照明

       

      用脚本控制矢量作图

      A1:你可以用脚本输出,前提是你需要提取数据,再用脚本作图,假设你知道如何提取数据,矢量作图参见这个帖子 和连接 然后,利用 exportfigure 输出,当然你需要用循环操作。 A2:是材料表面的电场矢量;图横纵坐标分别是XY坐标。矢量的方向由箭头决定;大小由颜色(Colorbar)决定。 A3:没有,需要自己写脚本。一般可能还需要设置一些参数,例如 setplot(“down sample”,1); setplot(“Nx”,50); setplot(“Ny”,50); setplot(“Nz”,1); setplot(“enable scale for vector”,1); setplot(“scale factor”,2); setplot(“set color bar limits”,1); setplot(“colorbar min”,0.5); setplot(“colorbar max”,1.0); 目的是得到合适的显示效果,具体参数需要用户自己调节,即可以每个图的设置不同,也可以相同,只要箭头不是太多或者太少。

       


      您好,MATLAB的例子(这个图是如何得到的?),可以分享一下吗?谢谢!


      quiver3(xmesh 1e6,ymesh 1e6,zmesh*1e6,real(Ex),real(Ey),real(Ez));
      xlabel(‘x’);
      ylabel(‘y’);
      zlabel(‘z’);


      您好,收到,谢谢,程序可以详细一点吗?


      请参考第一帖里面的脚本文件。


      如果,我想画圆偏振态,我知道了一个点x,y,z三点的振幅和相位,如何能快速画出各个点偏振态的图呢?少数点,是可以一个点,一个点手动添加,我可以做到,比如3 3以下都不难做,如果要是9 9,就比较痛苦,希望找一种简单的方法,谢谢孙老师!


      为什么要手动添加呢?前面的脚本就可以,还可以结合Matlab直接画。但是箭头的个数需要反复测试调整。

       

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