FDTD初学者设置
步骤:
(1)设置几何形状并赋材料性质
(2)设置仿真区、选择网格精度和边界条件
(3)添加合适的光源,修改光谱范围
(4)添加合适的监视器
至此,仿真文件就建好了,可以保存起来。
在运行之前,需要做几个检查:
1:检查几何形体是否如预期,可以使用折射率监视器查看;
2:检查材料拟合特性,在仿真光谱范围内,拟合的色散曲线是否光滑,材料特性直接决定仿真结果的精确度。
3:检查内存需要。如果内存需要超过计算机可用内存,必须修改文件的设置,例如Disable不必要的监视器、降低网格精度或增加细化网格尺寸大小、减少频域监视器检测的频率点数,利用对称性边界条件等。
如何设置仿真区大小?
按照步骤,设置完物体和材料后,添加仿真区,一般来说软件自动给出仿真区。对于周期方向,仅仿真一个周期,只要在相应方向的仿真宽度给出就可以,PML离开物体(折射率变化的地方)半个波长就可以了。建议光源, 探测器,衬底 的边缘全部超过FDTD仿真区域的边界。
PML是最常用的边界条件,其作用是吸收入射到其上面的电磁场,相当于场无阻挡地传播到无限远。实际的PML有一定的反射,曾经有用户测试FDTD Solutions, PML反射率可以小到1E-12。由于仿真还有其它误差源,一般不必要苛求PML的反射率到如此小的程度,只要PML对仿真结果的影响小到一定程度就可以了。
一般建议,PML应该离开物体(更准确地说应该是折射率变化的地方)半个波长左右,有时可以更小。其次,PML应该位于均匀网格区域,另外,PML的参数(一般是层数)要合适以便能吸收足够的场,这个对仅提高网格精度的仿真更为重要,因为网格变细后,如果层数不改变,总厚度只有几十个纳米,吸收性能可能变差。
要检查PML的设置(位置,层数)是否得当,可以将PML变远(即增加仿真区大小)、或增加层数,看看结果的变化是否显著、差别是否可以接受。如果不能,应该调整PML的设置。
缺省的设置一般建议使用stretched coordinate PML。如果入射角比较大,可以选用steep angle;如果在采取其它措施后仿真仍然发散,可以选用stabilized。 对于熟练用户,可以选择custom,这个选项需要调整PML的其它参数。实际上Steep Angle 和Stabilized就是针对特殊情况而定制的PML。
如何选择边界条件?
求解麦克斯韦方程必须有合适的边界条件。周期边界不言而喻,PML是最常用的。在半无限大的方向一般可以用PML。其它高级边界条件,例如对称性边界条件,可以熟练后再使用。
如何设置仿真时间?
对光学波段,使用缺省的1000飞秒就可以。对于太赫兹或者微波,需要适当加长。可以在光源光谱那里查看是否太短,如果光谱不正确,时间脉冲不完全。由于这个脉冲是光源位置的,它需要一定的长度传播到仿真区的另一端。一般应该比较长,其长度由设置的仿真时间决定。
结束仿真有几个方法?
正常情况下有两个方法,一是auto shut off min 达到指定数值;二是仿真达到了指定的仿真时间。一般应该由前者结束仿真,此时进程显示小于100%。个别情况,例如高Q仿真按第二种方法结束。
非正常结束:点击 Quit and Save; Quit & don’t save; Force quit.
怎么知道仿真结束的时间是合适的?
一般情况下仿真在小于100%结束就是正常的。可以察看一些监视器的结果,例如透射率反射率,如果没有反常的数据,例如大部分结果为正个别地方为负(错误!)就可以。有时可以见到结果曲线有不规则的波纹,很可能是仿真时间不够或者PML太近造成的。
应该选什么监视器?
根据项要提取的结果,添加合适的监视器。一般建议添加至少一个时间监视器,以便仿真结束时的场信号情况(或者要分析频谱);虽然是时域仿真,通常用户希望得到频域结果,例如透射率和反射率,此时应该添加 frequency domain power monitor。 index 监视器一般用来检查所设置的解噢股是否正确,检查完毕可以Disable。movie 监视器一般用于了解场的时间变化过程,初学者可以不用。
常用的材料特性网站:
http://www.ioffe.ru/SVA/NSM/nk/
https://refractiveindex.info/
https://materials.springer.com/
FDTD中导入新材料:https://support.lumerical.com/hc/en-us/articles/360034915093
FDTD中光源类型选择:https://kx.lumerical.com/t/fdtd-solutions/623
减少FDTD仿真内存:https://kx.lumerical.com/t/topic/922
材料拟合设置参数:https://kx.lumerical.com/t/fdtd-material-explorer-fit-tolerance-max-coefficients-imaginary-weight/714
模拟文件衰减很慢:https://kx.lumerical.com/t/topic/486
Auto shut off min:https://kx.lumerical.com/t/auto-shut-off-min-auto-shut-of-max/534
斜入射:https://kx.lumerical.com/t/topic/5498
结构周期性、光源周期性和仿真周期性:https://kx.lumerical.com/t/topic/7500
对称性边界条件的使用:https://kx.lumerical.com/t/topic/25293/2
矢量作图:https://kx.lumerical.com/t/matlab/18589
理解重叠对象的网格顺序:
网格顺序属性控制模拟中重叠对象的网格划分方式。 对于不重叠的对象,它不起作用。 可以在材料级别(在材料数据库中)或对象对象级别(在对象属性中)设置网格顺序。 网格顺序较低的材料优先于优先级编号较高的材料(即,顺序1优先于2)。 为重叠的区域分配了优先级较高的材料的材料属性(请参见下图)。
在上图中,有两个对象部分重叠。 根据其网格顺序,实际被仿真的对象将有所不同。 如果两个重叠的材料具有相同的顺序,将从对象树中推断出网格顺序。 树底部的对象将优先于树顶部的对象。 为了确保正确定义模拟,建议避免两个不同的重叠结构具有相同网格顺序的情况。 要使用脚本设置网格顺序,用户可以设置材料(材料级别),设置名称或设置(对象级别)。对于使用共形网格的模拟,网格顺序属性定义了材料完全相互重叠的网格单元中的材料属性。 在包含两种材料之间边界的网格单元中,共形网格算法在这些边界附近求解麦克斯韦积分方程。使用索引监视器确认结构是否按预期进行了网格划分。默认材料数据库中的蚀刻材料:默认情况下,材料数据库中的大多数材料的网格顺序为2。唯一的例外是蚀刻材料,其网格顺序为1。较低的网格顺序表示对象使用 蚀刻材料将覆盖其他材料类型不同的对象。蚀刻材料的折射率为n = 1。 如果使用其他背景索引,则应修改蚀刻材料以匹配模拟的背景索引。
例如:生成椭圆形波导https://kx.lumerical.com/t/topic/25574