想在單一個波長上切很多個點 來求收斂值


#1

老師您好:

我如果想在單一波長上切很多個點 來求收斂值 我在fdtd上是要如何操作?


#2

我不太明白你的这个问题。你是想针对单个波长,察看不同空间位置的结果吗?频域监视器就可以实现。

如果是其它意思,请详细说明。


#3

老師你好:

  1. 像是說輸入波長的定義切點 要切到多少個點 可以使輸出結果趨近一樣精準收斂?

  2. mesh accuracy 的值要調到多少才可以算是精準?
    mesh accuracy 的值大小 是意味我們使用多少個點來定義輸入波長嗎?

  3. mesh accuracy 和 我們實際跑模擬的時候是有甚麼關係? 是透過計算dx嗎還是計算dy .dz ?

想對Lumerical FDTD的計算方法有更清楚的了解 , 在麻煩老師給我一些解答也希望如果有任何參考文獻可以參考也麻煩老師貼連結給我 謝謝老師!!!


#4

是想了解 fdtd在計算的時候 是將結構切格子來計算嗎?
如果式切格子 那我要怎麼知道切幾格?

老師真的是很謝謝你
謝謝你的幫忙!!!


#5

根据你的最后一个帖子,我大致了解了你的问题。你是想知道一个波长分多少个网格才能较为准确的描述结构进而得到精确结果。这个是一个非常复杂的问题,我简单介绍一下。
不错,FDTD的确用离散的网格来描述被仿真的物体,例如,对于一个光滑的几何球体,FDTD看到的是有阶梯形状的非光滑结构,正如现在的数码照片,你放大到一定程度就会看到这种阶梯形状。其仿真结果的精度当然与网格大小有关,如果这些网格趋于无限小,在其它仿真设置都正确的情况下,仿真结果可以无限地逼近实际情况,当然所付的代价是超常时间的仿真,如果计算机容量足够的话。

因此,在实际仿真过程中,我们一般都用有限的网格精度,在合理的时间内得到一定精度的结果。自动网格的划分参见这个帖子:


如果有的地方需要更细的分辨,可以添加细化网格。

仿真时间步长取决于仿真区内的最小网格尺寸。

一般计算用精度2开始(网格密度10),有比较好的结果后再进一步作收敛性测试。收敛性测试非常复杂,参见这里的大致介绍
https://kb.lumerical.com/en/layout_analysis_test_convergence_fdtd.html
仅仅提高网格精度是不够的,还需要考虑调整其它设置,例如PML的层数。

此外,取决于仿真结果的参数,有时需要细网格,有时需要长的仿真时间,这些只能 Case By Case。

一般,网格密度在20左右就算比较高精度了,相当于网格精度4~5。如果结果不收敛,在一定情况下可以通过Richard插值近似估算,或者继续测试。


#6

老師真的是非常感謝您的用心回復 !!!

那我想在請教幾個問題:

  1. 那我們mesh accuracy在跑模擬的時候是切一個立方體的格子嗎? dx dy dz的大小都是一樣的SIZE嗎?

  2. 為什麼我同樣的simulation time 跑 Mesh accuracy=2不會發散 但跑Mesh accuracy=5就會發散 這樣是因為什麼原因呢?


#7

A1:dx dy dz的大小不一定都是一樣的SIZE;因为不同方向看到的材料不同。
A2:你要看这个帖子检查原因:


根据你的描述,你如果仅修改Mesh accuracy,此值越大,网格越细,对于指定的PML层数,其厚度就越小,可能不能有效地吸收,反射场与结构相互作用而产生发散。你可以用帖子中的方法,把4周全用金属边界看看还发散不。


#8

老師你好

關於發散的部分謝謝老師的講解!!

那我想請問老師 如果針對我附件的FDTD的檔案來看
我的MESH ACCURACY=1 的時候, 我的dx dy dz 分別是多大, 要怎麼看得出來?

DC sweep 0.45_0.55.fsp (2.3 MB)


#9

老師不好意思 這邊想額外請問一個問題

如果我使用sweep去掃描模型的寬度, 要點選哪邊可以不要讓他儲存每一個寬度的(.fsp)檔案, 我只想要得到最後掃描出來的圖形和值就好了,不需要每個掃描寬度的(.fsp), 因為這樣子模型一大的話每個.fsp檔都很大,所以在使用SWEEP的時候電腦儲存空間很容易不足夠.


#10

Hi @L76044307,

你好。孙博今天不在办公室。现在的情况是,扫描会保存所有的仿真文件,如果你进行的扫描点太多,的确实是会占用很多内存。但是optimization和Monte Carlo都会在成功运行之后删除仿真文件,只保留结果。你可以考虑看看你的sweep可以用optimization代替吗?这样可以节省一点内存。


#11

好的謝謝您我在試試看!!! 那可否向您詢問
上面那個問題 如果MESH ACCURACY=1 的時候, 我的dx dy dz 分別是多大, 要怎麼看得出來? 以我的case要怎麼隻到呢!

真的是非常謝您


#12

你可以使用脚本中的循环语句,每计算一个参数,用一个矩阵将你需要的结果保存,循环结束后,你只会得到最后一个参数运行的fsp文件和你需要的结果。

https://kb.lumerical.com/en/index.html?ref_scripts_tutorial_parameter_sweeps.html
循环可以参考上述链接。


#13

注意:mesh type 为 auto non-uniform!
你使用的是 非共形网格(conformal mesh) ,这是一种特殊的技术,会根据你的结构(折射率)的信息,自动改变网格的大小,因此整个FDTD仿真区域中,不同的位置网格大小是不一样的(dx\dy\dz都不一样)。(PS:不过不排除有时不同位置网格大小一致)。

如果你实在想知道网格大小,你可以打开 view-ruler 使用 尺子 工具,自己去量一下网格的大小!


#14

小李的建议很好,你如果不想保留很多仿真文件,只能使用脚本来扫描;
除了用Ruler测量网格尺寸外,你也可以用脚本计算,参见附件。plot_FDTD_xyz_dxdydz.lsf (369 字节)


#15

好的!!!

真的非常謝謝你們幫助我好多!
我在試試看