中文/English
介電質圓柱 2D TM (Ex Ez Hy) 數值計算與理論解析解比較圖
二維介電質TM 圓柱形結構的散射吸收頻譜模擬,並與理論解對照
首先模擬一個折射率(refractive index) n=1.5,半徑200 nm (直徑 400 nm)介電質圓柱其散射吸收頻譜。
結構檔案加上邊界(使用FreeCAD)
參考 : 3D-CAD 範例 (流程簡介)
注意這裡展示單位可以互轉,因為FreeCAD預設的單位為 mm,然而載入風行時可以在 um, nm等互轉
如下圖使用FreeCAD繪製一圓柱
X軸為圓柱面方向、Y軸長度隨意(因為Y軸在選擇2D模擬時,會自動判斷為無窮長)
FreeCAD:
圓柱直徑: 0.4 mm = 400 um
邊界長度: 1 mm = 1000 um
1. 設定 2D TM (Ex Ez Hy)
2. 定義總x,y,z長度相等於模型檔案,然後調整適當的各軸解析度
3. 匯入模型檔案
4. 確定模擬材料定義
5. 按【建立網格 Cad to Grids (Create)】按鈕建立模擬網格
um ==> nm
FreeCAD
圓柱直徑: 0.4 mm = 400 um
邊界長度: 1 mm = 1000 um
FonSinEM
注意這X, Z length 邊界長度設定1000, 單位為 nm
則載入的模擬空間的圓柱面就會是 400 nm
(匯入風行的結構單位可以等比互轉)
選擇 雷達截面場 (TFSF-RCS) 計算散射吸收頻譜
最後檢查結構,按 輸出Output
數值計算與理論解析解比較圖
推薦一些可用的 Mie theory 對照程式及軟體
MieLab:
A Software Tool to Perform Calculations on the Scattering of Electromagnetic Waves by Multilayered Spheres
http://www.hindawi.com/journals/ijs/2011/583743/
Nmie:
https://nanohub.org/resources/8228
使用教學
這網站有許多免費程式,有FDTD、FEM、Ray tracing法、其中mie theory也很多
http://www.scattport.org/diogenes.iwt.uni-bremen.de/vt/scattport/index.php/light-scattering-software/mie-type-codes.html
======= 遠場分析 =======
當然系統不可能使用一無窮大的模擬系統來觀察遠場,在FDTD演算法中可利用 (Near to Far field transformation: NTFF) 近場轉遠場的數學方法,積分近場電磁場值得到遠場。
在風行的計算裡,可以用脈波(Pulse),也可以使用連續波(CW)來計算遠場分佈。不同的是
脈波(Pulse)一次可以觀察『所有分割點』上對應的頻率其遠場,也就是頻譜【切割數】越多,則可觀察的數量就等同切割數。但作近場轉遠場(Near to far field)的積分位置不能變換,只能是量測觀察點上的位置。
看遠場時,使用『其他=>遠場』
連續波(CW) 一次只能觀察一個頻率的遠場,但位置及範圍可以隨時使用『近場轉遠場』更改作觀察。
接下來介紹這兩種 Pulse與 CW 計算遠場的使用方式
===========================================
脈波(Pulse)
1.選擇脈波
2. 勾選 ☑近場觀測輸出 (Output NearField Ob.)-脈波 (Pulse Only)
這裡觀測的位置如果是TFSF-RCS則會自動定義,當然也可以自己設定範圍
計算完之後,會輸出
Pulse_DFT_1_p1.csv
Pulse_DFT_2_p1.csv
這兩個檔案,這兩個檔案就是我們在做Poynting(DFT)時所記錄量測的各電磁場位置分量的場強值。利用這些值帶入近場轉遠場的數學方程,就能得到遠場的強度分佈情形。
3.計算完畢後選擇選單中 : 其他(Other) ==> 遠場 (Far Field)
這個遠場的選項,就是用來作脈波(Pulse)輸入的近場轉遠場NTFF的功能。點擊後讀取檔案Data.set,而後會出現下圖左邊選擇散射或吸收來作遠場轉換。通常以TFSF-RCS*來說,只有選則散射才是對的,但還是先保留可選擇的功能。
TFSF-RCS* 其他(Other)
然後系統就開始將資料作近場轉遠場的轉換。若模擬系統觀察範圍很大、或者分割數很多,這個轉換會花不少的時間,請耐心等待。做完之後會出現下圖可選擇的遠場變換如下圖,從波長100nm-800nm之間,共分為400個等分。我們可以看下圖中有顯示的任一個位置的波長的遠場分佈情形。
當然也可以輸出,然後再和理論值作比較,作法如下
【指令輸入區塊】
輸出變數至檔案
csvwrite('scan_theta.csv',scan_theta)
csvwrite('RCS_theta.csv',RCS_theta)
csvwrite('RCS_phi.csv',RCS_phi)
使用外部程式讀取變數
對照用遠場解析解程式,會使用到其函數來作理論對比
MatScat
Author :Jan Schäfer
http://www.mathworks.com/matlabcentral/fileexchange/36831-matscat
【外部程式輸入】
scan_theta=csvread('scan_theta.csv');
RCS_theta=csvread('RCS_theta.csv');
RCS_phi=csvread('RCS_phi.csv');
%% Define test parameters
lambda0=400e-9;
dia = 400e-9; % cylinder diameter
ns = 1.5 + 0.j; % cylinder refractive index (complex) epsr=ns^2
nm = 1; % outer medium refractive index (real)
nang = 180; % number of far field angles to evaluate
zeta = 90; % cylinder inclination angle (90 deg = perpendicular)
[T, C, ang] = calccyl(dia/2., ns, nm, lambda0, nang, zeta);
fctr = 2/pi/C.k;
Far2E= fctr*squeeze(abs(T(2,2,:).^2)); % 2E
figure(1);hold on;
plot(scan_theta,RCS_theta(172,:),'r','Linewidth',3);
plot(ang, Far2E/max(Far2E(:))*max(RCS_theta(172,:)),'*b');
xlabel('Scattering Angle');
title('TM(ExEzHy)')
legend('FDTD','Analytical Solution')
====================================================
連續波(CW) (一次只能計算單一頻率)
我們選擇lambda0=400 nm的連續波入射。
計算完成後載入場分析
按下下方近場轉遠場 (NTFF Transformation)的確定按鈕後,得到下圖。
下方可自訂欲觀察的遠場,因為此模擬是球體散射情形,因此我們將近場轉遠場的觀察點設於TFSF的入射位置之外。(預設情況系統會自動將值判斷好,如這個位置x=19,213, z=19,213)
不同脈波 (Pulse),由於場圖(Field Pattern)是將所有的電磁場都輸出,因此可以任意變換位置、或選取要的分量來觀測
可以利用指令區塊(Command Panel)輸出Far Field的值至.CSV檔,再用EXCEL開啟,指令如下
a(:,1)=scan_theta';
a(:,2)=RCS_theta';
a(:,3)=RCS_phi';
csvwrite('Far2DTM.csv',a)
然後再讀進來,與理論值作比對
對照用遠場解析解程式,會使用到其函數來作理論對比
MatScat
Author :Jan Schäfer
http://www.mathworks.com/matlabcentral/fileexchange/36831-matscat
【外部程式輸入】
load Far2DTM.csv
scan_theta=Far2DTM(:,1);
RCS_theta=Far2DTM(:,2);
RCS_phi=Far2DTM(:,3);
lambda0=400e-9;
%% Define test parameters
dia = 400e-9; % cylinder diameter
ns = 1.5 + 0.j; % cylinder refractive index (complex) epsr=ns^2
nm = 1; % outer medium refractive index (real)
nang = 180; % number of far field angles to evaluate
zeta = 90; % cylinder inclination angle (90 deg = perpendicular)
[T, C, ang] = calccyl(dia/2., ns, nm, lambda0, nang, zeta);
fctr = 2/pi/C.k;
Far2E= fctr*squeeze(abs(T(2,2,:).^2)); % 2E
figure(1);hold on;
plot(scan_theta,RCS_theta,'r','Linewidth',3);
plot(ang, Far2E/max(Far2E(:))*max(RCS_theta(:)),'*b');
xlabel('Scattering Angle');
title('TM(ExEzHy)')
legend('FDTD','Analytical Solution')
#這裡有個很重要的觀念,前面我們在觀測散射吸收頻譜時(脈波(Pulse)),位置如下圖左。那這次我們看穩定態(Steady State)時的場圖(連續波(CW))時,利用畫波印亭實部(Py.real)能量流的方式,我們得到下圖右
發現了嗎?若觀測點離結構太近,那麼原本積分波印亭能量的散射部分(上圖左黃色方框),就會積分到回流能量(看右圖綠色箭頭為波長400 nm的能量流),這樣作出來的結果就會產生不小的誤差了。倘若離的越近那麼積分到回流波印亭能量誤差就會越大,結果將是錯的。(波長越長,能量回流的範圍將越大),因此上圖左標示的距離d要取的足夠,至少為入射波中心波長一半的距離會較恰當
這裡我們看 Lumerical FDTD Solutions 對二維圓柱的描述、入射場及量測,吸收層的示意圖
對照引用 Comparison & Reference
Lumerical FDTD Solutions
Mie scattering 2D
http://docs.lumerical.com/en/index.html?particle_scattering_mie_2d.html
網址裡他們所用的結構圖設定圖,但要注意若您在使用風行做模擬時不能像這樣設定。市售軟體裡這些應該都會自行將其取一個適當的距離,使用風行時請記得要自己留意。另外若是金屬材料的結構,可能會有較強的消逝波(evanescent),這時候距離太近,不僅回流能量更強,對觀測點影響更大,另外也可能會影響到吸收層而造成錯誤。可看Lumerical對金屬材料的消逝波(evanescent wave)對吸收層影響的描述,下方連結中
Simulation span 的部分,您可自行去看看
對照引用 Comparison & Reference
Lumerical FDTD Solutions
Mie scattering 3D
Direct link: http://docs.lumerical.com/en/index.html?particle_scattering_mie_3d.html
推薦一些可用的 Mie theory 對照程式及軟體
MieLab:
A Software Tool to Perform Calculations on the Scattering of Electromagnetic Waves by Multilayered Spheres
http://www.hindawi.com/journals/ijs/2011/583743/
Nmie:
https://nanohub.org/resources/8228
使用教學
這網站有許多免費程式,有FDTD、FEM、Ray tracing法、其中mie theory也很多
http://www.scattport.org/diogenes.iwt.uni-bremen.de/vt/scattport/index.php/light-scattering-software/mie-type-codes.html