ryujimiyaの日記

C#を使って数値解析したい

WE-FDTD(波動方程式FDTD)によるH面誘電体装荷共振器の散乱係数の計算(3)-Uniaxial PMLを用いた場合 Part 2-

WE-FDTDで完全整合層を用いた場合、Zhouの定式化では界Ezの現在値、1つ前、2つ前の値に加え、4つの補助変数Fzx, Fzy, Pzx, Pzyの現在値、1つ前の値が必要となりました。

 WE-FDTD(波動方程式FDTD)によるH面誘電体装荷共振器の散乱係数の計算(2)-Uniaxial PMLを用いた場合-

 http://ryujimiya.hatenablog.com/entry/2013/04/26/025718

上記問題を改善した定式化が下記文献に記されています。

Ramadan, Omar, Oyku Akaydin, and Gazi Magusa.

 "MPI Parallel Implementations of the Wave-Equation PML for Truncating FDTD Computational Domains."

https://www.uop.edu.jo/download/research/members/CSIT2006/vol4%20pdf/pg136.pdf

https://www.uop.edu.jo/download/research/members/CSIT2006/

Proceeding of te 4th International Multiconference on Computer Sciense and Information Technology CSIT2006, Volume 4

定式化の概要は次の通りです。 

WE-FDTD TMz with Uniaxial PML( O. Ramadan et al.)

  jωPzx = (1 / sx) d Ez / dx

  jωFzx = (1 / sx) d Pzx / dx

   ここでsx = κx + σx / (jω ε) 

  Pzy, Fzyも同様に定義します。

 ヘルムホルツ方程式より

  (jω)^2 Ez = {1/ (εμ)} { (jω)^2 Fzx + (jω)^2 Fzy }

 両辺を時間で積分( jωで割る)して、

  (jω) Ez = {1/ (εμ)} { (jω) Fzx + (jω) Fzy }

 (jω) → d/dtに変換し、離散化すると、

 (1)  Ez(i, j)n+1 = Ez(i, j)n

  + (1 / (εμ)) { Fzx(i, j)n - Fzx(i, j)n-1  + Fzy(i, j)n - Fzy(i, j)n-1 }

 (2) Fzx(i, j)n+1 = c1fzx(i, j) Fzx(i, j)n 

  + c2fzx(i, j) { Pzx(i + 0.5, j)n+1 - Pzx(i - 0.5, j)n+1}

  ここで、

  c1fzx(i, j) = (2 ε κx - σx ⊿t ) / (2 ε κx + σx ⊿t )

  c2fzx(i, j) = (2 ε ⊿t) / { (2 ε κx + σx ⊿t ) ⊿x }

  同様にFzy(i, j)も導出できます。

 (3) Pzx(i + 0.5, j)n+1 = c1pzx(i + 0.5, j) Pzx(i + 0.5, j)n

  + c2pzx(i + 0.5, j) { Ez(i + 1, j)n+1 - Ez(i, j)n+1 }

  ここで、

  c1pzx(i, j) = (2 ε κx - σx ⊿t ) / (2 ε κx + σx ⊿t )

  c2pzx(i, j) = (2 ε ⊿t) / { (2 ε κx + σx ⊿t ) ⊿x }

  同様にPzy(i, j+ 0,5)も導出できます。

計算は(3)→(2)→(1)の順で行います。

 

Zhouの定式化と比べると、Fzx, Fzyの定義が異なっています。この定義により、ヘルムホルツ方程式の時間微分が2階から1階に低減され、(1)式で2つ前のEzの値は不要になります。また(2)式でPzx, Pzyは現在値のみの式となるので、Pzx, Pzyの1つ前の値は不要になります。

結局、必要なのは Ez(現在値と1つ前の値は同じ変数で共用可能)、Fzx, Fzy(現在値と1つ前の値)、Pzx, Pzy(現在値)の、計7変数となります。

 

この定式化にしたがってH面導波管誘電体共振器の散乱係数を計算した結果を次に示します。

ガウシアンパルスで励振したときの計算結果

f:id:ryujimiya:20130426042107p:plain

微分ガウシアンパルスで励振したときの計算結果

f:id:ryujimiya:20130426042225p:plain

どちらも前回のZhouの定式化とほぼ同じ結果が得られています。

前回のZhouの定式化は、PMLの媒質パラメータκx, σxをκx = 1, σx = 0としたとき、ベーシックなWE-FDTDの定式化の式と一致することを確認しましたが、こちらは未確認。多分一致すると思います。

一致するのであれば、PML領域以外ではベーシックなWE-FDTDを用い、PML領域ではZhouの定式化、または本記事のO. Ramadanの定式化を用いることで標準FDTDよりは記憶容量を低減できそうです。

 

ソースコード

 main_we_upml_type1_wg2d_problem01_2.m

 https://gist.github.com/ryujimiya/5460201

 we_upml_type1_wg2d_dielectric_filter.m

 https://gist.github.com/ryujimiya/5460188

 we_upml_type1_wg2d_straight.m

 https://gist.github.com/ryujimiya/5460183