FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD...
Transcript of FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD...
2002/04/01 FDTD 法入門 平野拓一 1
FDTD 法入門
平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電
磁界をシミュレートする方法である。 1. マクスウェルの方程式
0=∂∂
+×∇tBE (1)
iDH =∂∂
−×∇t
(2)
媒質は等方・非分散とし、構成方程式 EiEDHB σεµ === ,, を代入すると
0=∂∂
+×∇tHE µ (3)
EEH σε =∂∂
−×∇t
(4)
2. 差分方程式
2.1 時間の離散化
EH×∇−=
∂∂
µ1
t
EHEεσ
ε−×∇=
∂∂ 1t
時間を離散化する。
nnn
tEHH
×∇−=∆−
−+
µ12
121
21
211 1 −−−
×∇+−=∆− nnnn
tHEEE
εεσ
ここで、 21
−nE はないので
2
1−+ nn EEで近似する(p.6)。
nnn
tEHH
×∇−=∆−
−+
µ12
121
2002/04/01 FDTD 法入門 平野拓一 2
2111 1
2−−−
×∇++
−=∆− nnnnn
tHEEEE
εεσ
21
,+nn HE について解くと、
211
1
2−−
− ×∇∆
++∆
−=−nnn
nn tt HEEEEεε
σ
21
1
21
21
−− ×∇∆
+
∆−=
∆+
nnn ttt HEEεε
σε
σ
21
1
21
/
21
21
−− ×∇∆
+
∆+
∆+
∆−
=nnn
tt
t
t
HEE
εσε
εσε
σ
nnn t EHH ×∇∆
−=−−+
µ21
21
nnn t EHH ×∇∆
−=−+
µ21
21
21
1
21
/
21
21
−− ×∇∆
+
∆+
∆+
∆−
=nnn
tt
t
t
HEE
εσε
εσε
σ
nnn t EHH ×∇∆
−=−+
µ21
21
2.2 位置の離散化
図 1 のように空間を離散化して電磁界を配置すると、電界と磁界がうまくずれている
ので互いにローテーションを取ることができる。また、図 2 は図 1 の単位セルを表し
ていて、このように電界、磁界を配置したセルを Yee セルと言う。同じ場所に電界と
磁界を配置していないので電界、磁界を時間更新していくときに電界と磁界を交互に
更新し、その結果過去の値を保持する必要もなくなり、メモリを節約できる。これを
Leap-flog (蛙飛び) アルゴリズムと言う。 例えば、ある場所の電界はその場所の 1 ステップ前の電界と、その場所の磁界のロー
テーションから計算される。同様に、ある場所の磁界はその場所の 1 ステップ前の磁
界と、その場所の電界のローテーションから計算される。
2002/04/01 FDTD 法入門 平野拓一 3
x
yz
(i,j,k)
(i+1,j,k)
(i,j,k+1)
(i,j+1,k+1)
(i,j+1,k)
(i+1,j+1,k)
(i+1,j+1,k+1)
ΔxΔy
Δz
Electric field
Magnetic field
(i,j,k)
(i+1,j,k)
(i,j,k+1)
(i,j+1,k+1)
(i,j+1,k)
(i+1,j+1,k)
(i+1,j+1,k+1)
ΔxΔy
Δz
Electric field
Magnetic field
i=1
i=NX-1 j=1
j=NY-1
k=1
k=NZ-1
図 1 セル分割された解析領域
x
yz (i,j,k)
(i+1,j,k)
(i,j,k+1)
(i,j+1,k+1)
(i,j+1,k)
(i+1,j+1,k)
(i+1,j+1,k+1)
ΔxΔy
Δz
Electric field
Magnetic field
図 2 単位セル
2002/04/01 FDTD 法入門 平野拓一 4
A×∇ の計算
∂∂
−∂
∂+
∂∂
−∂∂
−
∂
∂−
∂∂
=
∂∂∂∂∂∂=×∇
yA
xA
zzA
xAy
zA
yAx
AAAzyxzyx
xyxzyz
zyx
ˆˆˆ
///ˆˆˆ
A
次の表現に現れる )21,,(),,
21,(),,,
21( +++ kjikjikji などはプログラム中では全て ),,( kji とし
て配列に格納すればよい。 電界 (p.27)
−+−+++−
−+−++++
++=+
−−
−−
−
)21,,
21()
21,,
21(),,
21(
),21,
21(),
21,
21(),,
21(
),,21(),,
21(),,
21(
21
21
21
21
1
kjiHkjiHkjiC
kjiHkjiHkjiC
kjiEkjiCkjiE
n
y
n
yexrz
n
z
n
zexry
nxex
nx
−+−++++
+−−+++−
++=+
−−
−−
−
)21,
21,()
21,
21,(),
21,(
),21,
21(),
21,
21(),
21,(
),21,(),
21,(),
21,(
21
21
21
21
1
kjiHkjiHkjiC
kjiHkjiHkjiC
kjiEkjiCkjiE
n
x
n
xeyrz
n
z
n
zeyrx
nyey
ny
+−−++++
+−−+++−
++=+
−−
−−
−
)21,
21,()
21,
21,()
21,,(
)21,,
21()
21,,
21()
21,,(
)21,,()
21,,()
21,,(
21
21
21
21
1
kjiHkjiHkjiC
kjiHkjiHkjiC
kjiEkjiCkjiE
n
x
n
xezry
n
y
n
yezrx
nyez
nz
ただし、
2002/04/01 FDTD 法入門 平野拓一 5
),,21(2
),,21(
1
),,21(2
),,21(
1
),,21(
kji
tkji
kji
tkji
kjiCex
+
∆++
+
∆+−
=+
ε
σ
ε
σ
z
kji
tkji
kjitkjiCexrz ∆
+
∆++
+∆=+
1
),,21(2
),,21(
1
),,21(/
),,21(
ε
σ
ε
y
kji
tkji
kjitkjiCexry ∆
+
∆++
+∆=+
1
),,21(2
),,21(
1
),,21(/
),,21(
ε
σ
ε
),21,(2
),21,(
1
),21,(2
),21,(
1
),21,(
kji
tkji
kji
tkji
kjiCey
+
∆++
+
∆+−
=+
ε
σ
ε
σ
z
kji
tkji
kjitkjiCeyrz ∆
+
∆++
+∆=+
1
),21,(2
),21,(
1
),21,(/
),21,(
ε
σ
ε
x
kji
tkji
kjitkjiCeyrx ∆
+
∆++
+∆=+
1
),21,(2
),21,(
1
),21,(/
),21,(
ε
σ
ε
2002/04/01 FDTD 法入門 平野拓一 6
)21,,(2
)21,,(
1
)21,,(2
)21,,(
1
)21,,(
+
∆++
+
∆+−
=+
kji
tkji
kji
tkji
kjiCez
ε
σ
ε
σ
x
kji
tkji
kjitkjiCezrx ∆
+
∆++
+∆=+
1
)21,,(2
)21,,(
1
)21,,(/
)21,,(
ε
σ
ε
y
kji
tkji
kjitkjiCezry ∆
+
∆++
+∆=+
1
)21,,(2
)21,,(
1
)21,,(/
)21,,(
ε
σ
ε
電界の更新プログラムは次のようになる。i,j,k のインデックスの始まりが 1 または 2 となって
いるのは図 1 において色付けされた壁は後で述べる吸収境界壁として使うから、その上にのって
いる電磁界を更新しないからである。
! Ex do k=2,nz-1 do j=2,ny-1 do i=1,nx-1 id=media_id(i,j,k) if(id.eq.1) then ! 1: 自由空間 ex(i,j,k)=cex0*ex(i,j,k) & +cexry0*(hz(i,j,k)-hz(i,j-1,k)) & -cexrz0*(hy(i,j,k)-hy(i,j,k-1)) else if(id.eq.2) then ! 2: 完全導体 ex(i,j,k)=0.0d0 else ! 3 以上: 任意媒質 ex(i,j,k)=cex(id)*ex(i,j,k) & +cexry(id)*(hz(i,j,k)-hz(i,j-1,k)) & -cexrz(id)*(hy(i,j,k)-hy(i,j,k-1)) end if
2002/04/01 FDTD 法入門 平野拓一 7
end do
end do end do ! Ey do k=2,nz-1 do j=1,ny-1 do i=2,nx-1 id=media_id(i,j,k) if(id.eq.1) then ! 1: 自由空間 ey(i,j,k)=cey0*ey(i,j,k) & +ceyrz0*(hx(i,j,k)-hx(i,j,k-1)) & -ceyrx0*(hz(i,j,k)-hz(i-1,j,k)) else if(id.eq.2) then ! 2: 完全導体 ey(i,j,k)=0.0d0 else ! 3 以上: 任意媒質 ey(i,j,k)=cey(id)*ey(i,j,k) & +ceyrz(id)*(hx(i,j,k)-hx(i,j,k-1)) & -ceyrx(id)*(hz(i,j,k)-hz(i-1,j,k)) end if end do end do end do ! Ez do k=1,nz-1 do j=2,ny-1 do i=2,nx-1 id=media_id(i,j,k) if(id.eq.1) then ! 1: 自由空間 ez(i,j,k)=cez0*ez(i,j,k) & +cezrx0*(hy(i,j,k)-hy(i-1,j,k)) & -cezry0*(hx(i,j,k)-hx(i,j-1,k)) else if(id.eq.2) then ! 2: 完全導体 ez(i,j,k)=0.0d0 else ! 3 以上: 任意媒質 ez(i,j,k)=cez(id)*ez(i,j,k) & +cezrx(id)*(hy(i,j,k)-hy(i-1,j,k)) & -cezry(id)*(hx(i,j,k)-hx(i,j-1,k)) end if end do end do end do
2002/04/01 FDTD 法入門 平野拓一 8
磁界 (p.29)
+−+++++
+−++++−
++=++−+
),21,()1,
21,()
21,
21,(
)21,,()
21,1,()
21,
21,(
)21,
21,()
21,
21,( 2
121
kjiEkjiEkjiC
kjiEkjiEkjiC
kjiHkjiH
ny
nyhxrz
nz
nzhxry
n
x
n
x
+−+++++
+−++++−
++=++−+
)21,,()
21,,1()
21,,
21(
),,21()1,,
21()
21,,
21(
)21,,
21()
21,,
21( 2
121
kjiEkjiEkjiC
kjiEkjiEkjiC
kjiHkjiH
nz
nzhyrx
nx
nxhyrz
n
y
n
y
+−+++++
+−++++−
++=++−+
),,21(),1,
21(),
21,
21(
),21,(),
21,1(),
21,
21(
),21,
21(),
21,
21( 2
121
kjiEkjiEkjiC
kjiEkjiEkjiC
kjiHkjiH
nx
nxhyry
ny
nyhyrx
n
z
n
z
ただし、
zkji
tkjiC
ykji
tkjiC
hxrz
hxry
∆++
∆=++
∆++
∆=++
1
)21,
21,(
)21,
21,(
1
)21,
21,(
)21,
21,(
µ
µ
xkji
tkjiC
zkji
tkjiC
hyrx
hyrz
∆++
∆=++
∆++
∆=++
1
)21,,
21(
)21,,
21(
1
)21,,
21(
)21,,
21(
µ
µ
2002/04/01 FDTD 法入門 平野拓一 9
ykji
tkjiC
xkji
tkjiC
hzry
hzrx
∆++
∆=++
∆++
∆=++
1
),21,
21(
),21,
21(
1
),21,
21(
),21,
21(
µ
µ
磁界に対するプログラムコードも電界の場合と同様にして次のようになる。
! Hx do k=1,nz-1 do j=1,ny-1 do i=2,nx-1 id=media_id(i,j,k) if(id.eq.1) then ! 1: 自由空間 hx(i,j,k)=hx(i,j,k) & -chxry0*(ez(i,j+1,k)-ez(i,j,k)) & +chxrz0*(ey(i,j,k+1)-ey(i,j,k)) else if(id.eq.2) then ! 2: 完全導体 hx(i,j,k)=0.0d0 else ! 3 以上: 任意媒質 hx(i,j,k)=hx(i,j,k) & -chxry(id)*(ez(i,j+1,k)-ez(i,j,k)) & +chxrz(id)*(ey(i,j,k+1)-ey(i,j,k)) end if end do end do end do ! Hy do k=1,nz-1 do j=2,ny-1 do i=1,nx-1 id=media_id(i,j,k) if(id.eq.1) then ! 1: 自由空間 hy(i,j,k)=hy(i,j,k) & -chyrz0*(ex(i,j,k+1)-ex(i,j,k)) & +chyrx0*(ez(i+1,j,k)-ez(i,j,k)) else if(id.eq.2) then ! 2: 完全導体 hy(i,j,k)=0.0d0 else
2002/04/01 FDTD 法入門 平野拓一 10
! 3 以上: 任意媒質
hy(i,j,k)=hy(i,j,k) & -chyrz(id)*(ex(i,j,k+1)-ex(i,j,k)) & +chyrx(id)*(ez(i+1,j,k)-ez(i,j,k)) end if end do end do end do ! Hz do k=2,nz-1 do j=1,ny-1 do i=1,nx-1 id=media_id(i,j,k) if(id.eq.1) then ! 1: 自由空間 hz(i,j,k)=hz(i,j,k) & -chzrx0*(ey(i+1,j,k)-ey(i,j,k)) & +chzry0*(ex(i,j+1,k)-ex(i,j,k)) else if(id.eq.2) then ! 2: 完全導体 hz(i,j,k)=0.0d0 else ! 3 以上: 任意媒質 hz(i,j,k)=hz(i,j,k) & -chzrx(id)*(ey(i+1,j,k)-ey(i,j,k)) & +chzry(id)*(ex(i,j+1,k)-ex(i,j,k)) end if end do end do end do
3. モデリング
図 1 の解析領域に対して、媒質定数( σµε ,, )を設定してモデリングを行う。
媒質の種類があまり多くない場合、各セルに媒質番号(整数)のインデックスを与えて処理した
方が、各セルに媒質乗数(実数)を与えるよりもメモリを節約できる。よって、各セルに媒質の
インデックスを与えて電磁界計算の処理を行う。 電磁界の更新には媒質定数も使われるが、それがそのまま更新式にある訳ではなく、更新係数に
よって間接的に行われるので、プログラムの最初の部分で各媒質に応じた電磁界の更新係数をあ
らかじめ計算しておく。
! ******** 媒質定数設定 ******** nmedia=3 ! 1: 真空
2002/04/01 FDTD 法入門 平野拓一 11
eps(1)=epsilon0
mu(1)=mu0 sig(1)=0.0d0 ! 2: PEC,PMC (これは別のルーチンで処理する) ! 3: 誘電体(テフロン) eps(1)=2.17d0*epsilon0 mu(1)=mu0 sig(1)=0.0d0 ! ******** フィールド更新係数 ******** ! 1: 真空 cex0=1.0d0 cey0=1.0d0 cez0=1.0d0 cexry0=(dt/epsilon0)/dy cexrz0=(dt/epsilon0)/dz ceyrz0=(dt/epsilon0)/dz ceyrx0=(dt/epsilon0)/dx cezrx0=(dt/epsilon0)/dx cezry0=(dt/epsilon0)/dy chxry0=(dt/mu0)/dy chxrz0=(dt/mu0)/dz chyrz0=(dt/mu0)/dz chyrx0=(dt/mu0)/dx chzrx0=(dt/mu0)/dx chzry0=(dt/mu0)/dy ! 3 以上: 一般の媒質 do id=3,nmedia cex(id)=(1.0d0-((sig(id)*dt)/(2.0d0*eps(id)))) & /(1.0d0+((sig(id)*dt)/(2.0d0*eps(id)))) cey(id)=(1.0d0-((sig(id)*dt)/(2.0d0*eps(id)))) & /(1.0d0+((sig(id)*dt)/(2.0d0*eps(id)))) cez(id)=(1.0d0-((sig(id)*dt)/(2.0d0*eps(id)))) & /(1.0d0+((sig(id)*dt)/(2.0d0*eps(id)))) cexry(id)=(dt/eps(id))/(1.0d0+((sig(id)*dt)/(2.0d0*eps(id))))/dy cexrz(id)=(dt/eps(id))/(1.0d0+((sig(id)*dt)/(2.0d0*eps(id))))/dz ceyrz(id)=(dt/eps(id))/(1.0d0+((sig(id)*dt)/(2.0d0*eps(id))))/dz ceyrx(id)=(dt/eps(id))/(1.0d0+((sig(id)*dt)/(2.0d0*eps(id))))/dx cezrx(id)=(dt/eps(id))/(1.0d0+((sig(id)*dt)/(2.0d0*eps(id))))/dx cezry(id)=(dt/eps(id))/(1.0d0+((sig(id)*dt)/(2.0d0*eps(id))))/dy chxry(id)=(dt/mu(id))/dy chxrz(id)=(dt/mu(id))/dz chyrz(id)=(dt/mu(id))/dz chyrx(id)=(dt/mu(id))/dx chzrx(id)=(dt/mu(id))/dx chzry(id)=(dt/mu(id))/dy end do
2002/04/01 FDTD 法入門 平野拓一 12
4. 波源
4.1 電流源
iDH =∂∂
−×∇t
JEi +=σ とすると
JEHiHD−−×∇=−×∇=
∂∂ σt
JHEEεεε
σ 11−×∇+−=
∂∂t
2.1 のように離散化すると
21
21
1
21
/
21
/
21
21
−−−
∆+
∆−×∇
∆+
∆+
∆+
∆−
=nnnn
tt
tt
t
t
JHEE
εσε
εσε
εσε
σ
4.2 磁流源
磁流を考慮した Maxwell の方程式は
mBE −=∂∂
+×∇t
iDH =∂∂
−×∇t
となり、3.1 と同様に計算を行う。 HE −→ , EH → , mi → , µε → , 0→σ と書き換えれ
ばよいだけなので
21
21
1 −−− ∆+×∇
∆−=
nnnn tt mEHHµµ
4.3 平面波
平面波が1方向に進むようにするために電界と磁界を界インピーダンスの比にして、ある面に対
して与える。 5. 吸収境界条件
[参考文献]
[1] 宇野亨: 「FDTD 法による電磁界およびアンテナ解析」, コロナ社, 1998
2002/04/01 FDTD 法入門 平野拓一 13