Photonics – Chinese

Photonics – Chinese

Topics related to Lumerical and more, in Chinese language.

有关脚本的一些问题:数据导出

TAGGED: 

    • st w
      Subscriber

      目前,我通过面板的方式建立了一个模型,现在想要用脚本改进,实现连续仿真和输出仿真结果的功能,具体如下:

      1.利用脚本for循环,实现对光源Ex和Ey中的一些参数的自动改变,例如amplitude、phase等

      2.改变光源参数后,进行仿真,想要得到监视器中电场数据

            1)得到的是在某一特定波长下的电场数据(光源波长设置的是3-5um波长,想要获得4um波长下的数据)

            2)想要获得电场数据,导出为txt文件

            3)想要获得电场数据的二维图像

      3.希望得到的电场数据,能够以指定的名称保存到指定文件夹中

      这是我自己编写的脚本,存在以下问题:

      1.不知道怎么实现获得4um波长下的仿真结果,面板可以直接调,脚本该怎么选择呢?

      2.仿真的电场数据,只能保存ldf文件,怎么将仿真的E数据保存为txt文件

            1)我查询了write命令,只能保存字符变量嘛?  我使用 E = Ex^2 + Ey^2,是否可以认为E是字符变量

       

      希望可以得到解答,感谢!

    • Guilin Sun
      Ansys Employee

      你只需要4um波长还是一个波段?如果这些不清楚,可能你需要多看一些例子。

      所有设置和结果提取都可以用脚本,关键是你需要了解它们。

      关于仿真方法:你循环光源位相做什么?你完全可以仅做两个仿真,Ex和Ey,然后通过数学原理用脚本将两个仿真结果相干叠加,E=Ex+Ey*exp(j*phase)

      此外,getresult 的结果是dataset,不可以直接运算或者输出,除非你用

      savedata

      matlabsave

      不不太明白为什么都想用txt 文件格式,以上两个文件都可以再读出来而且保留原变量名字和特性。

      E=getresult("monitor","E");

      就把所有的电场分量和坐标都提取了,比如

      Ex=E.Ex;

      x=E.x;

      f=E.f

      此时Ex是4D,xyz和频率。

      你想要的是什么数据,只是E2 = Ex^2 + Ey^2这个强度吗? 它仍然是4D数据。

      脚本参见这个帖子: 

      Ansys Insight: 几个简单实用的脚本Script命令:用于结果分析

      你需要将E2变为字符变量再write. 不要指望它直接将4D 矩阵给write 出来,最好是一个点一个点写。

      如果想用Python 或者其它语言处理,ldf 和 mat都可以直接调用,完全没有必要走txt这个路子。

      • st w
        Subscriber

         

        感谢老师的耐心解答!之前的提问描述的不够清晰,重新补充一下:

        1.关于波长:我仿真的是一个波段(例如3-5um),但是仿真的结果我只需要某一波长下的仿真结果,例如4um波长下的E数据

        2.关于循环光源振幅或相位:我是想通过设置Ex和Ey两个正交的线偏振光,改变其振幅和相位,合成任意偏振态的椭圆偏振光(请问老师我这样的做法是否正确);为了获取任意偏振态的椭圆偏振光,所以我想要利用脚本来改变光源的振幅或相位,来提高自己的仿真效率

              1)关于老师您说的,仅做两个仿真,Ex和Ey,然后通过数学原理用脚本将两个仿真结果相干叠加,E=Ex+Ey*exp(j*phase)      是建立两个仿真文件,只是光源不同,然后利用脚本将两个仿真的结果相加嘛,具体应该怎么操作呢?

        3.关于数据导出,我已经导出为mat格式,但是下一步操作还不清楚,导出的E是四维数据,比如我想要提取出4um波长下的二维平面上的电场强度数据,我该怎么进行下一步的操作呢

              1)通过matlab显示的E结构体,结构体中包含了x,y,lambda和E等数据,这个E数据是一个三维数据,我该怎么利用这个E数据呢(我看FDTD面板中E数据包含了Ex,EyEz和Magnitude,通过导出的mat文件我该怎么选择Magnitude数据并导出)

              2)我该怎么找到对应lambda的E数据

        感谢老师!????

    • Guilin Sun
      Ansys Employee

      如果仅需要1个波长,你可以在光源处设置为单波长,尽管仍然是脉冲宽谱,监视器就会仅记录这个波长。当然你也可以设置为宽谱,记录一个或者多个波长,只是记得结果也是波长的函数。

      如果仅是为了得到任意椭圆偏振结果,仅需要两个仿真,然后用脚本合成即可,可以大大节省仿真时间,脚本也不复杂,只是将监视器里面的场相干叠加再考虑两个线偏光的位相即可。当然你愿意的话也可以进行一系列仿真。

      具体操作就是将两个监视器的电场或者远场或者光栅分析的远场分别提取出来,然后每个分量都按椭圆偏振光公式合成即可。因为你只需要电场,对吧。

      前面说了,电场是四维矩阵,可以把不需要的维数去掉,用Pinch,也可以不用管它。

      Matlab数据不是显示了吗,但是我不知道它是Dataset 还是矩阵。前面帖子我已经告诉你怎么得到每个分量了。

      就把所有的电场分量和坐标都提取了,比如

      Ex=E.Ex;

      x=E.x;

      f=E.f

      此时Ex是4D,xyz和频率。”

      同理:

      Ey=E.Ey;

      Ez=E.Ez;

      你可能需要再学习一下Matlab数组,这个是第三方软件我不能提供建议。

       

       

       

Viewing 2 reply threads
  • The topic ‘有关脚本的一些问题:数据导出’ is closed to new replies.