fdtd法入門 - takuichi2002/04/01 fdtd 法入門 平野拓一 1 fdtd法入門 平野拓一 fdtd...

13
2002/04/01 FDTD 法入門 平野拓一 1 FDTD 法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電 磁界をシミュレートする方法である。 1. マクスウェルの方程式 0 = + × t B E (1) i D H = × t (2) 媒質は等方・非分散とし、構成方程式 E i E D H B σ ε µ = = = , , を代入すると 0 = + × t H E µ (3) E E H σ ε = × t (4) 2. 差分方程式 2.1 時間の離散化 E H × = µ 1 t E H E ε σ ε × = 1 t 時間を離散化する。 n n n t E H H × = + µ 1 2 1 2 1 2 1 2 1 1 1 × + = n n n n t H E E E ε ε σ ここで、 2 1 n E はないので 2 1 + n n E E で近似する(p.6)n n n t E H H × = + µ 1 2 1 2 1

Upload: others

Post on 31-Mar-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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

Page 2: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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 ステップ前の磁

界と、その場所の電界のローテーションから計算される。

Page 3: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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 単位セル

Page 4: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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

ただし、

Page 5: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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,(

ε

σ

ε

Page 6: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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

Page 7: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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

Page 8: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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(

µ

µ

Page 9: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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

Page 10: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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: 真空

Page 11: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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

Page 12: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

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

Page 13: FDTD法入門 - takuichi2002/04/01 FDTD 法入門 平野拓一 1 FDTD法入門 平野拓一 FDTD (Finite Difference Time Domain method) 法とは、マクスウェルの方程式を差分化して電

2002/04/01 FDTD 法入門 平野拓一 13