登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
高手来看下这个一维的FDTD的MATLAB仿真
发帖
回复
2291
阅读
2
回复
[
讨论
]
高手来看下这个一维的FDTD的MATLAB仿真
离线
zhai0606
UID :12369
注册:
2008-05-13
登录:
2008-06-12
发帖:
4
等级:
旁观者
0楼
发表于: 2008-05-30 15:28:11
function FDTD_debug
u=`H n-(
,0'GHQWz$
%constants
*CN *G"
c_0 = 3E8; % Speed of light in free space
7lC$UQ x8
Nz = 100; % Number of cells in z-direction
)\wkVAm
Nt = 200; % Number of time steps
7UTfafOGX
N = Nz; % Global number of cells
G':3U
n,T &n
E = zeros(Nz,1); % E component
&61U1"&$ R
E2 = zeros(Nz,1);
lZzW- %K
E1 = zeros(Nz,1);
s.1F=u9a
Es = zeros(Nz,Nz); % Es is the output for surf function
bWyimr&B
%H = zeros(Nz,1); % H component
O>`k@X@9/
pulse = 0; % Pulse
(3e.q'
[8ZDMe
%to be set
ss^a=?~
mu_0 = 4.0*pi*1.0e-7; % Permeability of free space
_{|a<Keq|
eps_0 = 1.0/(c_0*c_0*mu_0); % Permittivty of free space
$v>q'8d
Jv~R/qaaD
c_ref = c_0; % Reference velocity
@f[-
eps_ref = eps_0;
}G4I9Py
mu_ref = mu_0;
If'q8G3]-
,%!m%+K9a
f_0 = 10e9; % Excitation frequency
xU'z>y4V$
f_ref = f_0; % Reference frequency
@52#ZWy
hB[bth
omega_0 = 2.0*pi*f_0; % Excitation circular frequency
Ir;JYY!0?
omega_ref = omega_0;
T!/o^0w
q@.>eB'92P
lambda_ref = c_ref/f_ref; % Reference wavelength
*F$@!ByV
!Uiq3s`1T
Dx_ref = lambda_ref/20; % Reference cells width
s.M39W?
Dz = Dx_ref;
Lf_Y4a#
nDz = Dz/Dx_ref;
rrIyZ@_d9
\((MoQ9Qk
Z = Nz*Dz;
(Jp~=6&lKf
r = 1; % Normalized time step
|n_N.Z
Dt_ref = r*Dx_ref/c_ref; % Reference time step
(Cr
Dt = Dt_ref;
#p+iwW-
Z% +$<J
% Source position
E}wT5t;u
Nz_Source = 0.5*Nz;
?mMM{{%(.
N_Source = Nz_Source;
t{;2$z 0
9qX$
for n = 1:Nt-1
.Ys e/oEo
t = Dt_ref*r*(n-1); % Actual time
zC50 @S3|
:.PA(97xb
%Source function series
w4L()eP#?=
Source_type = 1;
4U2{1aN`
switch Source_type
QQ?t^ptv
case 1 % modified source function
iXWzIb}CJ-
ncycles = 2;
WcmX"{
if t < ncycles*2.0*pi/(omega_0)
Zo UeLU
pulse = -0.5*( 1.0 - cos(omega_0*t/ncycles) ) * sin(omega_0*t);
5OM#_.p
else
^f[6NYS?
pulse = 0;
:'h$]p%
end
p22AH%
case 2 % sigle cos source function
xMbgBx4+
if t < 2.0*pi/(omega_0)
%/dOV[/
pulse = 8*c_0^2*Dt_ref^2*mu_ref*omega_0*cos(omega_0*t);
qrMED_(D
else
$ (}rTm
pulse = 0;
z ]f(lwo{
end
iEn:Hh)
case 3 % Gaussian pulse
tSy 9v
if t < Dt_ref*r*50
`%YMUBaI
pulse = -40*c_0*(t-t*25/(n-1))*exp(-(t-t*25/(n-1))^2/2/(50/2.3548)^2/(t/(n-1))^2);
|q3X#s72
else
[G 9Pb)
pulse = 0;
NuOA'e+i
end
u|KjoO
end
}u#3 hYa
E2(N_Source) = E2(N_Source) - r*pulse;
?HG[N7=j
E1 = E2;
81nD:]7
E2 = E;
w|dfl *
loA/d
m = 2:Nz-1;
y&(#C:N
E(m) = r^2*(E2(m+1) - 2*E2(m) + E2(m-1)) + 2*E2(m) - E1(m);
H&-3`<
j$T12
%Boundary
<F^9ML+'
E(1) = 0; E(Nz) = 0; % Dirichlet
2: QT`e&
%E(1) = E(2);E(Nz) = E(Nz-1); % Neumann
[%k8l~ 6
%E(Nz) = E2(Nz-1) + (r-1)/(r+1)*(E(Nz-1)-E2(Nz)); % Mur ABC @ right side z = Nz
!B`z|#
%E(1) = E2(2) + (r-1)/(r+1)*(E(2)-E2(1)); % Mur ABC @ left side z = 0
l8~(bq1
I<}% L V
%display
#cQ5-R-1
%choice***********************************************
(iKJ~bJ
display = 3; % choice: '1' = line plot; '2' = imagesc; '3' = surf
l/k-`LeW
switch display
^i@anbH
case 1
%P}H3;2
i = 1:Nz;
~d7t\S
plot(i, E(i));
l/3=o}8q
axis([0 Nz -4 4]);
$SQ$2\iC
case 2
}NDl~5
A = rot90(E);
gk%01&_>4
imagesc(A);
,X!) z Amm
case 3
aiPm.h>
i = 1:Nz;
B}[CU='P*
for j = 1:Nz
=!-} q
Es(i,j) = E(i);
?22U0UF
&nbs ..
s AFn.W
H+*3e&
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
离线
cem-uestc
UID :9061
注册:
2008-03-07
登录:
2019-01-05
发帖:
2575
等级:
荣誉管理员
1楼
发表于: 2008-06-01 21:18:24
一维FDTD的最多数据是一维的,还真不能绘制3D的图。
0?$|F0U"J
不过可以同时绘制电场、磁场分量的历史曲线,他们在垂直的两个平面,这样可以是3D的
共
条评分
离线
cem-uestc
UID :9061
注册:
2008-03-07
登录:
2019-01-05
发帖:
2575
等级:
荣誉管理员
2楼
发表于: 2008-06-01 21:20:04
不像1D的FDTD啊,像一维时域波动方程
共
条评分
发帖
回复