登 录
註 冊
论坛
微波仿真网
注册
登录论坛可查看更多信息
微波仿真论坛
>
时域有限差分法 FDTD
>
求助啊 。。。谁帮我改下程序啊
发帖
回复
617
阅读
0
回复
[
求助
]
求助啊 。。。谁帮我改下程序啊
离线
海聆羽
谁帮我改下程序啊 。。。万分感谢
UID :81280
注册:
2011-08-09
登录:
2013-01-14
发帖:
13
等级:
仿真新人
0楼
发表于: 2011-08-09 17:40:41
!******************************************************************************************************
~ YO')
! 二维 FDTD区域中设置一随时间为正弦周期变化的点波源
-aLBj?N c[
! 对于Ez的TM波(Hx.Hy.Ez一组) 设介质是无耗介质(自由空间)
?,]%V1(@V`
! 在区域截断边界设为二阶Mur吸收边界,角点亦处理
7'7bIaJk
! 画出TM波情形是正玹变化点源辐射时的相位分布
X<K[` =I
! language:Fortran90
DUEA"m h
! 彭 欢 2011.6.1
je9[S_Z:Y
!*******************************************************************************************************
~xGWL%og
program FDTD2D
{z|0Y&>[=
implicit none
IE: x&q`3
!********************************************************************************************************
TgJx%
! 定义变量
ii2X7Q
!********************************************************************************************************
@jN!j*Y H
integer i,j,m,n !循环变量与时间步数
,AGK O,w
real*8 Ez(0:200,0:200),Hx(0:200,0:200),Hy(0:200,0:200)
oiJa1X
real*8 Eac(4,2,0:1),Eab(1:199,1:4) !Eab吸收边界条件临时变量 Eac吸收边界条件角点临时变量
Lg|j0-"N
real*8 CA,CB,CP,CQ !FDTD迭代公式系数
H.XD8qi3W
real*8 CM,CN,C1 !TM波Mur吸收边界条件系数
l Vo](#W
real*8 Omega,dt,dx,dy,delta !角频率
4otB1{
integer Imax,Imin,Jmax,Jmin !FDTD 区域总边界(吸收边界)
$%`OJf*k
integer WL !数值波长
ly%$>BRU
real*8 Z !波阻抗
,~X^8oY
real*8,parameter:: C=3.0e+8 !光速
Vm_y,;/(-R
real*8,parameter:: Pi=3.14159263 !圆周率
.hn{m9|U
real*8,parameter:: wavelength=0.01 !波长
JVwYV5-O<0
real*8,parameter:: Epso=8.85e-12 !介电常数
R}llj$?
real*8,parameter:: Mu0=4*pi*1.e-7 !自由空间电磁参数:磁导率
y&t&'l/m
ss T o?WL|
write(*,*)"时间步数"
jr~ +}|@{
read(*,*)n
K:z|1V
`(H]aTLt ,
!open(1,file='Ez.dat')
44f8Hc1g
!********************************************************************************************************
*y5d&4G2
! 参数赋初始值
i' %V}2
!********************************************************************************************************
u3Z*hs)Z%
Z=sqrt(Mu0/Epso) !自由空间中波阻抗为377
fU!C:
WL=40
s#&jE GBug
dx=wavelength/WL
&at>pV3_
dy=wavelength/WL
:RzcK>Gub=
delta=dx
%<O'\&!,
dt=0.5*dx/C !需要满足Courant二维稳定性条件
Ig"Krz
Omega=2*Pi*(C/wavelength)
g~h`wv'
CA=1.
63UAN0K%
CB=dt/Epso !由自有空间介质中电损耗与磁损耗分别为0,求出的迭代系数CA,CB,CP,CQ
v+znKpE
CP=1.
[esjR`u
CQ=dt/Mu0
-5>K pgXo\
Hx=0.
SEr\ u#
Hy=0.
8^\DQ&D
Ez=0.
FlOKTY
Imax=200
Au#(guvm
Imin=0
Ko\m8\3?fK
Jmax=200
I"#jSazk
Jmin=0
%FT F
Ez(100,100)=sin(Omega*dt) !设置一随时间为正弦周期变化的点波源
7n,nODbJ
CM=(c*dt-dx)/(c*dt+dx)
i cQsA
CN=c**2*Mu0*dt/(2*(c*dt+dx))/Z !吸收边界条件系数。注意:CN计算时候徐除以自由空间的波阻抗常数377
U&C\5N]
C1=(c*dt-sqrt(2.)*delta)/(c*dt+sqrt(2.)*delta) !角点处理的系数
~bL(mq
!*********************************************************************************************************
gdSv)(
!
GuQ3$B3j
! Ez的迭代
1m|Oi%i4
!
rVzjLkN^
!*********************************************************************************************************
bd_U%0)pi1
do m=1,n
jMcCu$i7
!*********************************************************************************************************
FgE6j;
! 迭代求解电场Ez
yrR<F5xge
!*********************************************************************************************************
"}*P9-%
do i=Imin+1,Imax-1
u Y V=
do j=Jmin+1,Jmax-1
o ]2=5;)
Ez(i,j)=CA*Ez(i,j)+CB*((Hy(i,j)-Hy(i-1,j))/dx-(Hx(i,j)-Hx(i,j-1))/dy) !(见课本2-3-12式)求Ez
? =_l=dR
end do
tQ5gmj
enddo
SLSJn))@!
!*********************************************************************************************************
@{@x2'-A
! 迭代求解磁场Hx
rs~RKTv-
!*********************************************************************************************************
qeQTW@6 F
!Ez(Imax,Jmax)
;Y?7|G97*S
do i=Imin,Imax
L;Nz\sJ
do j=Jmin,Jmax-1
;.V5:,&
Hx(i,j)=CP*Hx(i,j)-CQ*(Ez(i,j+1)-Ez(i,j))/dy !(见课本2-3-10式)求Hx
@NlnZfMu
end do
']u w,b
end do
~)tIO<$U
!*********************************************************************************************************
j8M}*1
! 迭代求解磁场Hy
dZ9[w kn
!*********************************************************************************************************
92]>"
do i=Imin,Imax-1
0h^upB#p
do j=Jmin,Jmax
?q7VB
Hy(i,j)=CP*Hy(i,j)+CQ*(Ez(i+1,j)-Ez(i,j))/dx !(见课本2-3-11式)求Hy
Q {3"&
end do
(=CV")tF
end do
mc?5,oz;pz
MkC25
!以上三式为二维情况FDTD电磁场的时间推进计算公式
[`=|^2n?
Ez(100,100)=sin(Omega*m*dt) !在(100,100)处加入正弦点波源
(nbqL+
!************************************************************************************************************
BEg%u)"([
! 二阶Mur吸收边界
LV0g *ng
!************************************************************************************************************
RxAWX?9Z
28d:
!************************************************************************************************************
Y{1IRP?S
! y=0与y=200边界
lD6hL8[
!************************************************************************************************************
A{: a kK
do i=Imin+1,Imax-1
p !AQ
Ez(i,Jmin)=Eab(i,1)+CM*(Ez(i,Jmin+1)-Ez(i,Jmin))+CN*(Hy(i,Jmin)-Hy(i-1,Jmin)+Hy(i,Jmin+1)-Hy(i-1,Jmin+1))
]Q-ON&/
Eab(i,1)=Ez(i,Jmin+1)
Za jQ B
Ez(i,Jmax)=Eab(i,3)+CM*(Ez(i,Jmax-1)-Ez(i,Jmax))+CN*(Hy(i,Jmax)-Hy(i-1,Jmax)+Hy(i,Jmax-1)-Hy(i-1,Jmax-1))
QV L92"
Eab(i,3)=Ez(i,Jmax-1)
-86 9$
end do
Axk p
!************************************************************************************************************
-1Lh="US
! x=0与x=200边界
!R//"{k0?
!************************************************************************************************************
9TO
do j=Jmin+1,Jmax-1
k^ B'W{
Ez(Imin,j)=Eab(j,4)+CM*(Ez(Imin+1,j)-Ez(Imin,j))-CN*(Hx(Imin,j)-Hx(Imin,j-1)+Hx(Imin+1,j)-Hx(Imin+1,j-1))
~ I]kY%
Eab(j,4)=Ez(1,j)
"@ Zy+zLU
Ez(Imax,j)=Eab(j,2)+CM*(Ez(Imax-1,j)-Ez(Imax,j))-CN*(Hx(Imax,j)-Hx(Imax,j-1)+Hx(Imax-1,j)-Hx(Imax-1,j-1))
9:!n'mn
Eab(j,2)=Ez(Imax-1,j)
(5_l7hWY
F04`MY"
end do
~uq J@#o{
!*************************************************************************************************************
tU!"CX
! 吸收边界角点处
# h/-
!*************************************************************************************************************
Iu2RK
Ez(Imin,Jmin)=Ez(Imin+1,Jmin+1)+C1*(Ez(Imin+1,Jmin+1)-Ez(Imin,Jmin))
JZD27[b
Ez(Imax,Jmin)=Ez(Imax-1,Jmin+1)+C1*(Ez(Imax-1,Jmin+1)-Ez(Imax,Jmin))
-qs.'o ;2
Ez(Imax,Jmax)=Ez(Imax-1,Jmax-1)+C1*(Ez(Imax-1,Jmax-1)-Ez(Imax,Jmax))
pHsp]a
Ez(Imax,Jmax)=Ez(Imin+1,Jmax-1)+C1*(Ez(Imin+1,Jmax-1))-Ez(Imax,Jmax)
8|d lt$
] \4-e2N`\
!*********************************************************************************************************
+"?K00*(
! 多文件输出
bo$xonV @y
!*********************************************************************************************************
"}\z7^.W>
100 format(1350f16.5)
<&8cq@<
if(m==300)THEN
HGC>jeWd_
A*n '"+_
OPEN(1,File='Ez300.dat')
|5F]y"Nb
do j=Jmin,Jmax
! D'U:)
write(1,100) (Ez(i,j),i=Imin,Imax)
U2ecvq[T
end do
.7g^w+W
close(1)
bG^E]a/D
!z{bqPlFGG
elseif(m==500)then
xRv1zHZ
OPEN(1,File='Ez500.dat')
%HL@O]ftS
do j=Jmin,Jmax
e3F)FTG&
write(1,100) (Ez(i,j),i=Imin,Imax)
x|U]x
end do
wQ2'%T|t
close(1)
W`eYd|+C
~fAdOh
elseif(m==1000)then
)cUc}Avg}
OPEN(1,File='Ez1000.dat')
NrgN{6u;
do j=Jmin,Jmax
X3!btxa%t
write(1,100) (Ez(i,j),i=Imin,Imax)
|}QDC/
end do
[\V]tpl!
close(1)
R{8nR00|1
XsQ<yeun
elseif(m==3000)then
,`P,))
OPEN(1,File='Ez3000.dat')
'@AK0No\W
do j=Jmin,Jmax
Q6MDhv,
write(1,100) (Ez(i,j),i=Imin,Imax)
JXftQOn
end do
1#(,Bq4
close(1)
*VIM!/YW
.o:Pe2C
elseif(m==5000)then
_:c8YJEG{
OPEN(1,File='Ez5000.dat')
VaZS_qGe:
do j=Jmin,Jmax
UI<'T3b
write(1,100) (Ez(i,j),i=Imin,Imax)
}qc[ysDK]
end do
zIH[ :
close(1)
(+@3Dr5o0}
nDiD7:e7=
elseif(m==6000)then
$*b>c:
OPEN(1,File='Ez6000.dat')
5;>M&qmN
do j=Jmin,Jmax
`;hsOfo
write(1,100) (Ez(i,j),i=Imin,Imax)
g5V9fnb!d
end ..
{u9(qd;;
_Y|k \|'
未注册仅能浏览
部分内容
,查看
全部内容及附件
请先
登录
或
注册
共
条评分
发帖
回复