脚本设置的层数在网格化后层数被改变了怎么办?


#1

Continuing the discussion from 请问那儿的index是指复折射率吗?要是的话,复数怎么输进去?:

提问:假如我在script里面已经设置了5层并且每层都附上了(n,k)值,可是当再使用FDTD region以后新的网格又有新的坐标又会代替掉script里的坐标参数,导致层数变多,这样的话我就没办法控制膜的层数了,这个应该怎么办?
答复:由于所问内容不是原帖题目的问题,故而新开一贴。
首先,网格化不会增加新的层数,它只是将用户所画的结构划分为FDTD要计算的网格而已,请参见FDTD算法说明。原帖已回复说,
“这个meshgrid3dx只是针对于你自己定义的数据的,不会针对于仿真区域的mesh setting。如果你想要调整仿真的mesh, 可以通过添加mesh override来实现。那些meshgrid语句一般是用来画图的。”

我再看你的帖子,发现一个问题:
脚本里面用的是国际单位制,因此,thickness=0.5;意味着这个厚度是0.5米,不会是你想要的吧?如果是微米,应该用 thickness=0.5e-6;

你看到的“层数”可能是仿真网格(橙色),或者是视觉化网格(Visual Grid)。这些不会影响物体结构本身。再有问题请将你的脚本和仿真文件发来,并指明仿真文件中那里有问题。


#2

脚本和生成文件都在下面,问题就是我已经在脚本设置了2层结构,并且附上了两个(n,k)值,但是加了FDTD region后,用refractive index监视器看到的(n,k)分布却有这么多层,并且随着region里面精度的增加,这个层数还会改变。
usr_importnk_3d.lsf (6.0 KB)

liner.fsp (233.9 KB)


#3

这个是如何理解折射率监视器结果的问题。
折射率监视器按照网格计算每个网格点上的折射率分量;因此,你看到的不是材料层,而是等折射率线,参见下图:

并不是说就有这多层。

我建议你修改文件,每次产生一个变折射率物体,此时坐标Z只是计算折射率用的材料,不代表层数。

另外,请注意计算的折射率是不是你你想要的,可以用这些命令画折射率实部
image(x,y,n(1:length(x), 1:length(y), find(z,0.02e-6),1));
image(x,y,n(1:length(x), 1:length(y), find(z,0.02e-6),2));
image(x,y,n(1:length(x), 1:length(y), find(z,00.02e-6),3));
你可以修改,找你想看的截面的折射率。我看这些折射率变化都很小。下面是画虚部:
image(x,y,imag(n(1:length(x), 1:length(y), find(z,0.02e-6),1)));
image(x,y,imag(n(1:length(x), 1:length(y), find(z,0.02e-6),2)));
image(x,y,imag(n(1:length(x), 1:length(y), find(z,00.02e-6),3)));
以上是找z=0.02e-6米的截面,你可以修改看任意截面。


学习例子solver_far_field.fsp时的一些问题