Photonics – Chinese

Photonics – Chinese

Ansys Insight: 关于FDTD算法中的细化网格Override尺寸的设置目的

    • Guilin Sun
      Ansys Employee


      我们反复讨论了网格尺寸大小的设置。但是,可能一些用户并不清楚为什么要设置细网格。还有的用户用Override mesh将本想细化的网格变粗了,特别是在介电常数虚部非常大以至于自动网格需要超过计算机内存的情况下,错误地以为用Override mesh能大大降低内存需求。

      FDTD是一种时域空域离散算法,因此,无论是时间信号还是空间场,都需要离散。而一般软件所用的是受Courant–Friedrichs–Lewy (CFL)限制的显性算法,所以时间步长受限于空间网格尺寸:空间网格越小,时间步长越小,要仿真一定的时间长度(即光传播的时间),所用的CPU时间就越长(用户看到的计算机计算所用的时间)。 在其他设置正确的情况下,网格越细结果精度越高(数值色散Numerical Dispersion 越小)。 因此,FDTD仿真重要的是空间网格尺寸。

      空间网格尺寸的设置目的主要有两个:

      1:得到一定精度的结果。

      2:分辨几何细节。例如在光波段仿真,有一层结构只有几个纳米的厚度并且不能将其表征为表面电导率,那就要用1个或多个网格来分辨它,取决于所期望的结果精度以及谐振波长的准确性。仿真的谐振波长偏离理论结果的主要原因就是网格不足够细。理论上讲,当网格无限细的情况下,仿真的结果可以无限逼近理论结果。

      总之,应该是根据“需要”设置网格尺寸,即Set the mesh size as needed. 你要了解这种需要,就需要对FDTD算法及其误差等有个基本概念。比如,如果某个方向需要很细的网格来分辨细节,而其它方向即使不用细化网格,也已经有足够的精度(通过FDTD的自动网格),为了节省内存和加快仿真,那就没有必要在所有的方向上都用同样的细化网格。换句话说,一些情况下,仅需要在一个方向添加细化网格。

      当然,在一些仿真中,如果光的传播主要限制在一定的角度范围内,我们可以适当增大个别方向网格尺寸,目的是为了减小内存需求来加快仿真。参见这个连接 https://kb.lumerical.com/en/index.html?cmos_simulation_tips.html

      有用户问,如何知道在哪里添加?不管是FDT还是MODE 的VarFDTD,但是都是在仿真前就决定的,仿真过程中不会改变。如果某区域要计算的物理量(电场、磁场、载流子密度、温度等)梯度比较大,该区域就应该添加细化网格(另外的情况就是几何结构细节的分辨)。如果刚开始不能直觉地确认这种区域,也可以在初步仿真后查看结果,发现这样的区域,添加合适的细化网格再仿真。


      当然,Override网格也可以比背景网格更粗,可以根据需要谨慎添加,比如背景网格太细导致PML需要太多层数,可以在PML前加粗网格,当然也不能低于最短波长的六分之一,以免应该结果精度。

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