EM Simulation 04 · 離散化 — 連続場を有限の数値に落とす

Chapter 04

離散化 — 連続場を有限の数値に落とす

この章のゴール.

「セル/波長」というこの分野の共通言語を手に入れること。 中心差分がなぜ 2 次精度なのかをテイラー展開から導けること。 そして精度と計算コストの交換レートを数字で言えるようになること。

この章で使う既出の用語(定義は各リンク先). FDTD(01 章 5 節)、FEM(01 章 5 節)、FIT(01 章 5 節)、MoM(01 章 5 節)、次元(01 章 5 節)、領域(01 章 5 節)

1. 離散化とは何をすることか

連続の場 \(E(x,y,z,t)\) は、無限個の実数からできている。計算機は有限個しか持てない。 そこで空間と時間を格子で刻み、格子点上の値だけを保持する。

\[ E(x, t) \;\longrightarrow\; E^n_i \equiv E(i\Delta x,\ n\Delta t) \]
離散化 — 連続の場を格子点の値だけで表す連続の場 E(x)格子点上の値 Eᵢⁿ だけを保持するΔxDSP のサンプリングと同じ話 —— ただし空間 3 軸 + 時間軸の 4 次元実用には波長あたり 10〜20 点が要る(ナイキストの 2 点では全く足りない)
「何点で表すか」がすべてを決める。多いほど正確だが、3 次元では点数が 3 乗で効く

これは DSP のサンプリングと全く同じ操作である(姉妹シリーズ「動いて理解するデジタル信号処理」01 章〜02 章)。 違いは、サンプリングするのが時間軸だけでなく空間 3 軸 + 時間軸の合計 4 軸であること。

そして同じ結論がついてくる: 1 波長あたり最低 2 点(ナイキスト——サンプリング定理が要求する下限)では全く足りず、 実用上は波長あたり 10〜20 セルが必要になる。理由は次節で数字にする。

2. 中心差分と 2 次精度 — 導出

微分を差分で置き換える。3 通りの置き方がある。

\[ \text{前進: } \frac{\partial u}{\partial x}\bigg|_i \approx \frac{u_{i+1}-u_i}{\Delta x} \qquad \text{後退: } \frac{u_i - u_{i-1}}{\Delta x} \qquad \text{中心: } \frac{u_{i+1}-u_{i-1}}{2\Delta x} \]

どれが良いかをテイラー展開で判定する。\(u_{i\pm1} = u_i \pm \Delta x\, u' + \frac{\Delta x^2}{2}u'' \pm \frac{\Delta x^3}{6}u''' + \cdots\) を使う。

前進差分:

\[ \frac{u_{i+1}-u_i}{\Delta x} = u' + \frac{\Delta x}{2}u'' + O(\Delta x^2) \]

誤差の最低次が \(\Delta x\) に比例 → 1 次精度。

中心差分: \(u_{i+1}-u_{i-1}\) を作ると、偶数次の項(\(u''\) を含む)がきれいに打ち消える:

\[ \frac{u_{i+1}-u_{i-1}}{2\Delta x} = u' + \frac{\Delta x^2}{6}u''' + O(\Delta x^4) \]

誤差が \(\Delta x^2\) に比例 → 2 次精度。

これが「セルを半分にすると誤差が 1/4 になる」の根拠である.

同じ手間(1 回の引き算)で精度が 1 桁良くなるのだから、使わない理由がない。 FDTD も FEM(1 次要素)も、基本は 2 次精度である。 そして次章で見るように、中心差分を使うために Yee 格子は電界と磁界を半セットずらして配置する。

中心差分 — 偶数次の誤差項が打ち消える前進差分uᵢuᵢ₊₁微分を評価する点はここではない誤差 ∝ Δx(1 次精度)中心差分uᵢ₋₁uᵢ₊₁ここを評価誤差 ∝ Δx²(2 次精度)(uᵢ₊₁ − uᵢ₋₁)/2Δx = u′ + (Δx²/6)u‴ + … ← u″ の項が消える同じ手間で精度が 1 桁良い。だからセルを半分にすると誤差は 1/4 になるこの「両側に値が要る」という要求が、Yee 格子のずらし配置を生む(05 章)
FDTD も FEM(1 次要素)も基本は 2 次精度。ここが崩れると(曲面の階段近似など)精度が落ちる

3. 何セル必要か — 位相誤差から決める

「波長あたり \(N\) セル」で離散化したとき、どれだけ誤差が出るか。 中心差分の誤差項 \(\frac{\Delta x^2}{6}u'''\) を、波 \(u = e^{-jkx}\)(\(k=2\pi/\lambda\))に対して評価する。

真の微分は \(-jk\,u\)。次章の Yee 格子では、電界と磁界を半セルずらして置くので差分の間隔は \(\Delta x\)(隣り合う \(E\) と \(H\) の間隔は \(\Delta x/2\))になり、中心差分が返すのは

\[ \frac{e^{-jk\Delta x/2}-e^{+jk\Delta x/2}}{\Delta x}u = -j\frac{\sin(k\Delta x/2)}{\Delta x/2}u \]

つまり中心差分は、波数 \(k\) の代わりに実効的な波数

\[ k_{\text{eff}} = \frac{\sin(k\Delta x/2)}{\Delta x/2} \]

を使ってしまう。\(k\Delta x = 2\pi/N\) を代入して相対誤差を出すと

\[ \frac{k_{\text{eff}}}{k} = \frac{\sin(\pi/N)}{\pi/N} \approx 1 - \frac{1}{24}\left(\frac{2\pi}{N}\right)^2 \]
\(N\)(セル/波長)波数の相対誤差10 波長進んだ後の位相誤差
5−6.4 %232°
10−1.6 %59°
20−0.41 %15°
40−0.10 %3.7°

(時間方向の離散化は逆符号で効くため、クーラン数を安定限界の近くに取った実際の FDTD ではこの半分以下になる——06 章。ここでは空間差分だけを見ている。)

位相誤差は距離とともに積み上がる伝搬距離(波長数)位相誤差5 セル/λ10 セル/λ20 セル/λ1 波長ぶんの誤差が小さくても、長い距離を伝わるほど比例して溜まる→ 必要なセル数は「構造が電気的に何波長あるか」で決まる(大きい構造ほど多く要る)
小さな部品なら 10〜15 セル/λ で足りるが、数十波長の構造では 20〜30 が要る。06 章の数値分散の正体である

位相誤差は距離とともに積み上がる——これが決定的である.

1 波長ぶんの誤差は小さくても、波が長い距離を伝わるほど誤差は比例して溜まる。 「10 セル/波長で 1 波長なら十分だが、20 波長離れた点の位相はもう信用できない」ということが起きる。

だから必要なセル数は、構造の電気的な大きさ(何波長あるか)で決まる。

これが 06 章の「数値分散」の正体であり、10 章のメッシュ設計の出発点である。

離散化の誤差を見る

セル/波長を動かすと、離散化された波が真の波からどうずれていくかを重ねて表示する。 距離とともに位相がずれていく様子が見どころである。

4. コストの見積り — 3 次元 + 時間の呪い

セルを半分(\(\Delta x \to \Delta x/2\))にすると、何が起きるか。

項目変化
1 辺あたりのセル数×2
3 次元の総セル数×8
メモリ×8
時間ステップ幅 \(\Delta t\)(クーラン条件、06 章)×1/2
必要ステップ数×2
FDTD の総計算時間×16
セルを半分にすると、何が起きるか1 辺のセル数×23D の総セル数×8メモリ×8Δt(クーラン)×1/2総計算時間×16精度を 4 倍にするために、計算を 16 倍する(誤差は Δx² なのでセル半分で 1/4、計算時間は 3 次元 8 倍 × ステップ数 2 倍)だから「一律に細かく」は最も高くつく —— 必要なところだけ細かくする局所細分化・適応メッシュ(07・10 章)が決定的に重要になる理由がこれである
周波数領域ソルバでも事情は同じ。未知数 N に対して直接解法は O(N³)——さらに厳しい

「精度を 4 倍にするために計算を 16 倍する」——これが電磁界解析の宿命である.

中心差分は 2 次精度なので、セル半分で誤差は 1/4。その代金が計算時間 16 倍。 メッシュを一律に細かくするのは、最も高くつく解決策である。

だから実務では「必要なところだけ細かくする」—— 局所細分化・サブグリッド・適応メッシュ(07 章、10 章)が決定的に重要になる。 どこが必要かを見抜くのが設計者の腕であり、そこにこの分野の技術の大半がある。

周波数領域ソルバ(FEM・MoM)でも事情は似ているが、 コストは時間ステップではなく行列の解法で決まる。 未知数 \(N\) に対して直接解法は \(O(N^3)\)(メモリ \(O(N^2)\))——さらに厳しいスケーリングである。 だから大規模問題では反復解法や高速アルゴリズム(08 章の MLFMA=多階層高速多重極法)が必須になる。

5. 何を離散化するか — 3 つの流儀

同じ「離散化」でも、何を格子に載せるかで手法が分かれる。第 II 部の予告である。

何を離散化するか — 3 つの流儀微分を差分に置き換える未知数 = 格子点上の場の値直交格子→ FDTD(05 章)積分形を面と辺に載せる未知数 = 面の磁束・辺の電圧直交格子(デュアル格子)→ FIT関数を基底で展開する未知数 = 基底関数の係数任意形状の要素→ FEM・MoM(07・08 章)E(r) ≈ Σ cₙ φₙ(r)3 番目が最も強力 —— 曲面を階段で近似しなくて済む同じマクスウェル方程式を、どう有限個の数に落とすか。その選択が手法の名前になる
第 II 部では、この 3 つの流儀を順に開けていく。それぞれ得意な問題が違う
流儀未知数格子手法
微分を差分に格子点上の場の値直交格子FDTD(05 章)
積分形を面と辺に面を貫く磁束、辺に沿った電圧直交格子(デュアル格子)FIT
関数を基底で展開基底関数の係数四面体など任意形状FEM(07 章)、MoM(08 章)

3 番目の考え方が一番強力である。場を

\[ E(\mathbf{r}) \approx \sum_{n=1}^{N} c_n\, \phi_n(\mathbf{r}) \]

と有限個の基底関数 \(\phi_n\) の重ね合わせで表し、 未知数を係数 \(c_n\) にしてしまう。基底関数を任意形状の要素上で定義できるので、 曲面や斜めの構造を階段で近似しなくて済む(06 章の階段近似問題が消える)。

6. この章のまとめ

ポイント内容
離散化空間 3 軸 + 時間軸のサンプリング。DSP と同じ話
中心差分偶数次項が打ち消えて 2 次精度。だから半分で誤差 1/4
セル/波長実用は 10〜20。構造が電気的に大きいほど多く要る(位相誤差が積算するため)
コストセル半分 → メモリ 8 倍・FDTD 計算時間 16 倍。一律細分化は最も高い
3 つの流儀差分(FDTD)・積分(FIT)・基底展開(FEM/MoM)