設定為softsource
設定欲觀測的頻譜範圍
因為是要計算單一圓柱體散射吸收頻譜,因此四周圍皆為使用吸收層PML
勾選 ☑ E,H,V,I (FFT) : 量測電場、磁場、電壓、電流
【指令輸入方塊】輸入以下程式碼,然後按【執行】,確定好結構無誤的話後再按【輸出結構】
%------------探測磁場 1 Probe Magnetic 1------------
% direction 1(Hx),2(Hy),3(Hz),4(|H|)
direction=2;
x1=(ib/2+1)*gdx;
x2=(ib/2+1)*gdx;
y1=(jcenter)*gdy;
y2=(jcenter)*gdy;
z1=(kcenter)*gdz;
z2=(kcenter)*gdz;
probe_magnetic(1,:)=[x1,x2,y1,y2,z1,z2,direction];
%----------------------------------
%------------探測磁場 2 Probe Magnetic 1------------
% direction 1(Hx),2(Hy),3(Hz),4(|H|)
direction=2;
x1=(ib/3+1)*gdx;
x2=(ib/3+1)*gdx;
y1=(jcenter)*gdy;
y2=(jcenter)*gdy;
z1=(kcenter)*gdz;
z2=(kcenter)*gdz;
probe_magnetic(2,:)=[x1,x2,y1,y2,z1,z2,direction];
%----------------------------------
%------------探測磁場 3 Probe Magnetic 1------------
% direction 1(Hx),2(Hy),3(Hz),4(|H|)
direction=2;
x1=(ib/4+1)*gdx;
x2=(ib/4+1)*gdx;
y1=(jcenter)*gdy;
y2=(jcenter)*gdy;
z1=(kcenter)*gdz;
z2=(kcenter)*gdz;
probe_magnetic(3,:)=[x1,x2,y1,y2,z1,z2,direction];
%----------------------------------
%------------探測電場 1 Probe Electric 1------------
% direction 1(Ex),2(Ey),3(Ez),4(|E|)
direction=1;
x1=(icenter-1)*gdx;
x2=(icenter-1)*gdx;
y1=(jcenter-1)*gdy;
y2=(jcenter)*gdy;
z1=(kcenter-1)*gdz;
z2=(kcenter+1)*gdz;
probe_electric(1,:)=[x1,x2,y1,y2,z1,z2,direction];
%----------------------------------
運算結束後
分析結果(Result Analysis)
N_Probed_E_Td(觀測位置編號,計算步數,分割數) %量測電場(時域) Probed Electric (Time-domain)
N_Probed_H_Td(觀測位置編號,計算步數,分割數) %量測磁場(時域) Probed Magnetic (Time-domain)
N_Probed_E_Fd(觀測位置編號,計算步數,分割數) %量測電場(頻域) Probed Electric (Frequency-domain)
N_Probed_H_Fd(觀測位置編號,計算步數,分割數) %量測磁場(頻域) Probed Magnetic (Frequency-domain)
★這裡您只需要調整兩個參數即可,第一個是觀測場的輸入,我們前面設定四個觀測場,其中三個磁場位置,一個電場位置
★要做模態判定,一次只能輸入電場或磁場其中一種。
★Probes=N_Probed_H_Td; 這個方式,是將三個觀測磁場都輸入,Mode_Analysis會將三個觀測的磁場做平均化來分析尋找模態
★Probes=N_Probed_H_Td(3,:,:); 這個方式,是將第三個觀測磁場都輸入,Mode_Analysis只會用第三個觀測的磁場來做分析尋找模態
★FieldMax 設定臨界值,高於此值的將視為找到的模態,小於此值的將過濾掉。若找到太多雜訊模態,調整前面的係數0.01變大來過濾
★max_band_number 在一輸入波數k(wave number)位置上,最多找幾個模態
★lambda0 中心入射波長
Probes=N_Probed_H_Td;
FieldMax=0.003*max(Probes(:))
max_band_number=6;
Mode_Analysis(Probes,FieldMax,max_band_number)
figure(1);
plot(betaz,Eigen_omega(:,:),'r*');
figure(1);
hold on;
ylabel('ω');
xlabel('k');
number=1000;
beta=2*pi./lambda_end+(2*pi/lambda_start-2*pi/lambda_end)./(number-1).*(1:number-1)
kz=beta;
d=(ib-1)*gdx;
cc2=cc*cc;
figure(1);hold on;
plot(kz,cc*kz);
hold off;
m=1;
w=(cc2*kz.^2+cc2*(m*pi/d)^2).^0.5;
figure(1); hold on;
plot(kz,w,'b')
hold off;
m=2;
w=(cc2*kz.^2+cc2*(m*pi/d)^2).^0.5;
figure(1); hold on;
plot(kz,w,'b')
hold off;
m=3;
w=(cc2*kz.^2+cc2*(m*pi/d)^2).^0.5;
figure(1); hold on;
plot(kz,w,'b')
hold off;