the simulation was terminated because the electromagnetic fields were diverging的问题

运行结束后出现warning: the simulation was terminated because the electromagnetic fields were diverging

我按照https://kb.lumerical.com/en/index.html?layout_analysis_diverging_simulations.html 的方法检查了,不是PML的问题,也就是那个dt stability factor的问题,但是我将那个参数调到0.9还是有这个warning

而且这个warning的意思是说计算发散吗? 可是我的材料都不算是dispersive material吧?
不过我用的材料比较多,有50种,模型见附件pixel1_3.fsp (1.8 MB)

dt stability factor还可以进一步减小;我估计应该还是这个问题。
你需要检查每个材料的拟合,看看虚部有没有小于零的,包括介电常数和折射率。

检查过了,都是大于0 的,没有问题,请问这个dt stability factor 到底啥意思? 看了 介绍没懂… 什么叫time step?

而且…一模一样的东西在旧版上跑有warning 在新版上跑没有warning…

现在材料虚部没有小于0的,包括介电常数和折射率,但是我dt stability 都调到0.3了还是不行…不知道咋回事?

什么叫time step?就是时间的步长。FDTD作离散计算,time step不能大于一定的数值,这个数值由网格尺寸决定。另外,仿真时需要用到卷积,有的时候时间步长大的话导致卷积出现问题而发散所以如果不是PML的问题需要减小时间步长。但是软件里面不是直接改变时间步长,而是改变dt stability factor,用它乘理论的时间步长得到实际的时间步长。

你可以添加时间监视器查看其频谱。如果谐振发生在不感兴趣的波长可以增加光源的脉冲长度和中心位置。你先测试一下。再有问题将文件发来我看一下。

在仍然出现warning的情况下添加时间监视器吗? 感觉出现warning算的数据不都是无效的吗? 我看那个反射率都变成e26次方了…

因为你现在不是要得到准确的结果,是想了解一下是不是某些不必要的波长谐振了。
你可以读取时间监视器的信号,如果场已经发散了可以不要,参见带结构计算分析组中的脚本。

我修改后不发散。pixel1_3 (1).fsp (1.8 MB)

但是你设置的substrate_glass厚度只有0.35个微米,是这样吗?还是一直深入到PML之外被看作是半无限大的基底?

对啊,我的是基底半无限大的,你是改了FDTD的范围?

天呐! 我运行你那个还是发散的! 是fdtd的版本问题吗?(购买的,不是试用版)

那你需要下载最新版。

我使用半无限大基底,仍然收敛,参见文件。pixel1_substrate.fsp (1.8 MB)

需要注意的是,你的周期结构应该扩大到周期边界之外,否则可能仿真看到的周期与你想象的邮差别,应该像基底那样。一般我建议画3*3 周期。

好的,多谢帮助,我先去下最新版试试

如果依你所说用3 × 3 的结构的话,是不是对其他部分做如下改动:

  1. 结构本身产生9个unit cell

  2. 基底也面积增大为9倍

  3. FDTD simulation region和mesh区域不变,就是一个unit cell 的区域?

  4. source呢? 也取一个unit cell 的区域就行了吗?

  5. monitor也只要在一个unit cell中就行了吧?

  6. 加问一个问题,像我这样设置mesh 区域的话,它只占整个FDTD模拟区域的一部分,那是默认只有这部分是这个mesh size, 其他区域用默认的(在FDTD simulation region中也有一个mesh accuracy的设置,我说默认就是指的那个), 还是所有部分都是这个mesh size了?

1235是的;
4: source自动回大于一个unit cell ,如果没有大于,需要手动修改。实际使用的是一个周期的大小,但是需要设的大一些一面出问题。如果是自动添加的,软件一般会自动设置大小。

mesh size里面的网格尺寸就是你设置的,然后自动地逐步过渡到mesh accuracy设置的网格。

那么也就是说如果这样的话,mesh size 覆盖的这个3D区域并不是均匀划分的咯? 但是如果我在mesh 3D同样的区域加一个3D 的monitor,用getresult或者getdata得到的电场是一个数组,有5个维度,x,y,z,lambda,3个分量;而monitor得到的值就是网格划分算出来的值,如果不是均匀划分的话,结果又怎么可能以这种数组的形式展现?(比如说中z=0附近,x密一些,z靠边缘附近,x疏松一些),那第一个维度的各个x代表的是密的划分,还是稀疏的划分呢?

其实我的意思就是,这种过渡区域,网格还是长方体吗?(可能是歪的?,那没法用x,y,z三个向量画出来把?)

添加mesh后,其区域内是均匀网格,但是整个3D区域并不是均匀的网格;
因为网格都是直角的,即使有疏有密,仍然可以用矩阵表示结果,这是直角FDTD的优点。结果实际上是矩阵,并没有空间坐标在里面,你一看不到稀疏,只有它与坐标连在一起时才看到疏密。你可以用1D监视器看看。

这种过渡区域,网格还是长方体,没问题的,你可以看计算网格。

1 Like

嗯嗯,那么E(L1,L2,L3,L4,1) 的意思就是 坐标为 x(L1) , y(L2) ,z(L3), lambda(L4) 对应的电场的x方向分量对吧?

基本上是,不过一般电场E都是4维函数,xyz和频率,波长与频率指的是同一个,并不是5维,参见下图。

只有扫描的话才可能出现5维。

1 Like