1   FDTD法計算アルゴリズム

「FDTD法」という名前は「FiniteDifferenceTimeDomain法」という言葉の頭文字から来ていて直訳すると「有限差分時間領域法」(もしくは「時間領域差分法」)となります(Wikipedia、英語の学習サイトを参考にしました)。 「FDTD法」という名前は「FiniteDifferenceTimeDomain法」という言葉の頭文字から来ていて直訳すると「有限差分時間領域法」となります。正確に対応する日本語訳は「時間領域差分法」となるようです(Wikipedia、英語の学習サイト、あと、FDTD法の本の1つの題名を参考にしました)。(2023.5.15 ここまでを訂正)

「FDTD法」という名前は「FiniteDifferenceTimeDomain法」という言葉の頭文字から来ていて直訳すると「有限差分時間領域法」、もしくは「時間領域差分法」となります(Wikipedia、英語の学習サイト、あと、FDTD法の本の1つの題名を参考にしました)。Webサイトを見る限り、両者ともこのまま広く使われているようです。(2023.5.20 ここまでを訂正) 電磁界解析の数値計算で用いる場合、基礎方程式のマクスウェル方程式という微分方程式を差分化した式で近似的に解いていくわけで、いわゆる差分法の1つに分類されます。名前を分析すると、時間軸を有限個に分割して(差分化して)計算することが特徴のようです。物理シミュレーションでそうではない差分法を私は今、思いつきませんが、静電場の計算か何かであったかもしれません 物理シミュレーションでそうではない差分法も、静電場の計算か何かで習った覚えがあります(補足1)。(2022.1.11 修正、2023.5.20 最後の文を訂正)

FDTD法の詳細は 「FDTD法による電磁界およびアンテナ解析」宇野 亨 著 コロナ社 を見ていただきたいです。差分化プロセス等が良く説明されています。この本よりわかりやすく説明することはなかなか難しいです。だらだらと引用するのも気が引けます。それでは、このサイトの目的は何なのかというと、さらに情報を追加して、高校生、大学生ぐらいの人にわかりやすくするということが1つにはあります。その情報とは何かというと、主にソースプログラムです。ソースプログラムの作り方だけではなく、実際に動くものをみることでさらにFDTD法がわかりやすくなると考えます。

YeeCellの説明図

fig.1
Yeeセルと電磁界の配置

それでも、何も原理を解説しないのも問題だと思うので、簡単に書いておきます。FDTD法において差分化した式で実際に進める計算アルゴリズムを「Yeeアルゴリズム」と呼んでいます。Yeeアルゴリズムでは、解析する空間内にある座標系(直交座標系等)を設定して、そこに電磁場を求めるノードを格子点上に設置します。設置するノードには2種類あって、一方のノードでは電界強度だけを時系列で計算し続け、もう一方のノードでは磁界強度だけを時系列で計算し続けていきます。そしてある時刻での全ノードの電磁場(電界強度、磁界強度の空間分布)の計算を作業の1つの単位として繰り返します。つまり、ある時刻における全ノードにおける各ノードが持つ物理量(電界強度、磁界強度のいずれか)を時系列順に求めていきます。正確に言うと、電場(電界強度の空間分布)と磁場(磁界強度の空間分布)は時系列順に単位時間毎に交互に求まります。だから、「ある時刻」というのはほとんど同じですが2つの時刻になります。電場が求まるノードの位置と磁場が求まるノードの位置は3次元直交座標系で考える場合には直方体単位格子の頂点か辺の中点か面の中心かいずれかの位置になります。各ノードにおいて、電場Eのx方向成分、y方向成分、z方向成分、磁場Hのx方向成分、y方向成分、z方向成分の計6つのうち1つだけ求まります(もちろん後で補間する計算をすれば全部求まります)。だから、ノードの種類は電場用、磁場用の2種類にそれぞれの(x,y,zの)方向まで加味して2×3=6種類あるといえます。この様子を絵で描くと右図、fig.1 のようになります。電場Eと磁場Hのx,y,z各方向で1点ずつの計6点のノードが単位格子(「Yeeセル」と呼ぶ)内に収まっています(本段落を、2015/11/25 に訂正)。

また、補足ですが上記の本によると金属でおおわれていない解放空間の外壁の場合、外壁付近のノードの計算は内部のノードと同様に差分式が使われますが、Yeeアルゴリズムとは呼ばず、計算式によって、例えば「Murの吸収境界条件」、「Higdonの吸収境界条件」などと名前がついています。

1つ注意です。「FDTD法計算アルゴリズム」と「Yeeアルゴリズム」で使い分けているところがあった場合、「FDTD法計算アルゴリズム」=「Yeeアルゴリズムを用いているFDTD法計算プログラムに出てくる数値解析の手順全体(外壁部分の計算や初期条件、境界条件の設定方法等をすべて含んだもの)」という意味で読んでください。次の節「FDTD法計算と私」の3番目の項目「FDTD法のこれからについて私の考え」の中にある「3-3 Yeeアルゴリズム(宇野先生の本のもの)を用いないFDTD法について」の中以外では「Yeeアルゴリズム(上記の本のもの)を用いないFDTD法」といったことは念頭に置いていません。また、「Yeeアルゴリズム」と言えば上記の本のものを指すということにいたします。(本段落を、2015/3/30追加)

もう1つ補足いたします、FDTD法では電磁波の波源として場の値があらかじめ分かっている部分がどこかに存在するのが普通です。この部分のノードに関しては、差分式は出てきません。時間と位置を変数として持つある関数を用いて他の部分とは異なる計算をいたします。また、金属のある場所であれば特に電磁波のしみこみなど考えなければ電場=0とします。ここでも差分式は出てきません。このように述べると、プログラム依存性が大きいのではと心配になる方もいるかもしれません。でも心配ご無用です。フローチャートやソースプログラムではごまかされやすいのですが、各ステップ内において、どのノードを先に計算するかは結果に影響しません(もちろん、はじめのノード位置の選び方は結果に影響します)。あとで具体的に書きます。

補足1 時間軸を使わない差分法について

差分法での数値計算について、静電場を題材にしてポアソン方程式(マクスウェル方程式を静電場解析用に変形したもの)を用いて解く方法を千葉大学工学部電気電子工学科の授業で習った覚えがあります(差分式の作成で一般的な形状での2次元解析領域周辺部の扱いが手が込んでいた覚えがあります。教科書を不覚にもなくしてしまいました。もしかしたら、このときのテーマは力学系で「ゴム膜のたわみ」とかだったもしれません)。あと、静電場の数値計算は東京工業大学大学院の輪講でも取り上げている学生仲間がいました。助手の人も応援していました。ただし、千葉大学の他の数値計算の授業で用いたテキストには、例えばニュートン法を用いた方程式の解を求める問題については、計算手順(アルゴリズム)だけではなく、計算誤差の見積が書かれているのに、上記の差分法での数値計算の場面ではその話はありませんでした。だから、私の中では、「差分法での数値計算については、おそらく数学者集団が色々考えてくれていて、多分、方法論としては存在が広く認知されているのだろうな」となっています。(2023.5.20 追加)

2   他の数値計算方法との比較

電磁界解析に限定して話をします。数値計算方法として有名なものにはFDTD法の他に「有限要素法」、「境界要素法」があります。FDTD法との違いは、プログラムを使う人の立場で言うとノードの採り方が挙げられます。格子点にこだわらなくてよく自由度が大きいです。このことは結果を得るために必要な計算量を減らしうるという意味で有利に働くことがあります。ただし、その分だけ差分化による誤差の見積もり等、数学的考察には注意が必要になる思われます。 FDTD法も含めてどの方法も厳密解からの誤差の見積もり等の数学的考察は自分には難しいです(2021.3.30 訂正)。

このサイトではjavascriptを使用しています
Copyright (c) 駒田 寛 のサイト All Rights Reserved.