中文/English
目的: 分析單一矩形孔洞遠場繞射---模擬與理論解析解之比對
一厚度<<入射波長 (理想)的單一矩形孔洞,材料為完美導體
入射波長 300 nm
入射光極化為線性極化
矩形孔洞為 1200 nm x 1200 nm
分析比對其遠場模擬的結果與理論解析解之比對
風行模擬結果
1. 定義總x,y,z長度相等於模型檔案,然後調整適當的各軸解析度
2. 按【建立網格 Cad to Grids (Create)】按鈕建立模擬網格
設定一適當大小的模擬環境,這裡設定 2000 nm x 2000 nm x 500 nm
使用線性極化平面波由下方入射(theta=0,電場極化x-y方向 (psi=45)
沒有使用探測與元件,直接按 【創建(Create)】
1.勾選要使用的材料
2.輸入內建結構函數
3.執行區塊內的指令函數
4.檢查結構是否正確
5.確認後輸出結構
內建結構的寫法則如下,使用材料為PEC (完美電性導體)
gdx是(grid) dx的大小, gdy = dy. gdz = dz;
ib= X grids, jb= Y grids, kb= Z grids;
icenter= ib/2; jcenter= jb/2; kcenter=kb/2;
內建結構函數 矩形孔洞 Square Hole 參考 : 內建結構
%======矩形孔洞 SquareHole=======
lengthx=1200e-9;
lengthy=1200e-9;
lengthz=20e-9;
nindex=1^2;
sigma=0;
choice='PEC'; %E_Iso,PEC,M_Iso,PMC,E_Model1,M_Model1,EM_Model1
gridtype=-1; %
xposition=icenter*gdx;
yposition=icenter*gdy;
zposition=kcenter*gdz;
Iso_SquareHole(choice,gridtype,nindex,sigma,xposition,yposition,zposition,lengthx,lengthy,lengthz)
%==========矩形孔洞 SquareHole==========
(1) 按 【快速載入結果 Fast load results】按鈕
(2) 選擇穩態場分析 (Steady State Field Pattern Analysis)
選擇所有場 (All-Fileds)
設定 近場轉遠場 Near To Far-Field Transformation
(1) 選擇要觀測的方向,這範例是由下方入射,因此設定觀測方向在上方出口端的整個面
(2) 按【計算 Calculate】按鈕
(3) 按【畫圖 Plot】按鈕
Z+ 方向,其他設定如下圖
單位可以有三種選擇
dB log(
Linear
Sqrt
畫圖方法可以有下圖四種
等待轉換計算時間後,在【指令區塊中 Command Panel】輸入以下程式碼
與理論解析解的比對如下
理論解析解中 a, b = 4 意味 矩形孔洞/入設波長 的比值
在此範例中矩形孔洞的長寬為 1200 nm x 1200 nm, 入射波源的波長為 300 nm
%----- Analytical Solution -----
figure(2);hold on;
a = 4; b = 4;
[theta,phi] = meshgrid(-90:1:90, 0:1:360);
theta = theta*pi/180; phi = phi*pi/180;
vx = a*sin(theta).*cos(phi);
vy = b*sin(theta).*sin(phi);
E = abs((1 + cos(theta))/2 .* sinc(vx) .* sinc(vy));
surf(vx/a,vy/b,(E));
shading interp;
colormap(jet)
set(gca, 'color', 'none');
set(gcf, 'InvertHardCopy', 'off');
%----- FonSinEM -----
a_theta=(theta_start:theta_span:theta_end)*pi/180;
a_phi=(phi_start:phi_span:phi_end)*pi/180;
[b_theta,b_phi]=meshgrid(a_theta,a_phi);
figure(2)
vx=sin(b_theta).*cos(b_phi);
vy=sin(b_theta).*sin(b_phi);
plot3(vx,vy,RCS_Far'/max(RCS_Far(:)));shading interp;xlabel('X');ylabel('Y');
view(-30,10)=====