FDTD実装 - その1「いきさつ」 [考え中 - FDTD法の実装]
ほかのものが全部途中なのに、また新しいことを始めてしまう。
FDTDの実装のための勉強。
会社で、後輩と一緒に「趣味と勉強を兼ねて、FDTDでも実装しようか」と一昨年話していた。もともと光学部品の開発設計の部署にいたので、仕事で使うためにFDTDの商用のソフトを手に入れることにはそれほど問題は無い。とりあえず波長同程度の大きさかさらに小さい構造がどういう影響を与えるか、とかいった解析がしたいというのが動機。が、やはり
その前にやってた仕事のために、非常に特殊な干渉測定を行うソフトを二人掛かりで実装していたのでお互い勝手が分かっていたのと、そのあとRCWA(Rigorous Coupled Wave Analysis。wikipediaにはエントリが無かった。googleでの検索)を二人で実装しようとしたんだけれど、こっちは非常に難しくて挫けてしまった、と言う経緯があった。RCWAの簡単な方の偏光方向(TEだったかTMだったか忘れたけど)での計算をフォローするだけで二人で討ち死にした。あまりに複雑で式を一つ導くと、その前の式がどんなだったか忘れてしまう。「あれ、これって、なんでこうだったっけ?」とかの質問の繰り返しになってしまった。明らかに短期記憶のキャパシティを超えていた。フォローできる人は偉いなあ。最終的にはその簡単な方の偏光で、問題を1次元連立方程式におとして固有値を求めればいいと言うところまでは一応来たけど、そこで力つきた。そういう挫折があってFDTDの方が簡単そう、ならやってみようとなっていた。
その後、僕が仙台に移ったせいでそのままになっている。
勉強を兼ねて一人で進めることにした。仕事でこんなことをチンタラやってたら怒られるけど、趣味でやるなら誰にも文句は言われない。ここには勉強の過程を残すことにする。
もちろん世の中には専門家がいっぱいいて懇切丁寧に教えてくれる。わかりやすく書かれた本も、たくさんとは言えないけどそれなりの数ある。FDTDを勉強しようとしてここに行き着いた人はこれを見るよりほかのサイトの方が整理されていてきっとそっちの方が参考になる。一般人がどういうところでひっかかったり誤解するかとか、どこで悩むかなどを知りたい人か、あるいは僕と一緒に苦しみたい人だけどうぞ。
FDTD法(Finite-Difference Time-Domain method)、その詳細はよその偉い人の本でも見てもらうとして、ようするにMaxwellの方程式を差分化して逐次的に解こうと言うもの。RCWAよりずっと考え方はブルートフォースで簡単。
具体的には
とは言うものの、いろいろよくわからないところがある。知ってる人にとっては当たり前なんだろうけど、今時点で例えば
次回から具体的に進める。まず、アルゴリズムのキモの差分化からまとめる。
夜も遅いので続きはまたこんど。
会社で、後輩と一緒に「趣味と勉強を兼ねて、FDTDでも実装しようか」と一昨年話していた。もともと光学部品の開発設計の部署にいたので、仕事で使うためにFDTDの商用のソフトを手に入れることにはそれほど問題は無い。とりあえず波長同程度の大きさかさらに小さい構造がどういう影響を与えるか、とかいった解析がしたいというのが動機。が、やはり
- ソフトがなにやってるのかわからん
- (ただでさえ計算量が多いのに)CPUを増やすたびにライセンス料をとられる
- 痒いところに手が届かない
その前にやってた仕事のために、非常に特殊な干渉測定を行うソフトを二人掛かりで実装していたのでお互い勝手が分かっていたのと、そのあとRCWA(Rigorous Coupled Wave Analysis。wikipediaにはエントリが無かった。googleでの検索)を二人で実装しようとしたんだけれど、こっちは非常に難しくて挫けてしまった、と言う経緯があった。RCWAの簡単な方の偏光方向(TEだったかTMだったか忘れたけど)での計算をフォローするだけで二人で討ち死にした。あまりに複雑で式を一つ導くと、その前の式がどんなだったか忘れてしまう。「あれ、これって、なんでこうだったっけ?」とかの質問の繰り返しになってしまった。明らかに短期記憶のキャパシティを超えていた。フォローできる人は偉いなあ。最終的にはその簡単な方の偏光で、問題を1次元連立方程式におとして固有値を求めればいいと言うところまでは一応来たけど、そこで力つきた。そういう挫折があってFDTDの方が簡単そう、ならやってみようとなっていた。
その後、僕が仙台に移ったせいでそのままになっている。
勉強を兼ねて一人で進めることにした。仕事でこんなことをチンタラやってたら怒られるけど、趣味でやるなら誰にも文句は言われない。ここには勉強の過程を残すことにする。
もちろん世の中には専門家がいっぱいいて懇切丁寧に教えてくれる。わかりやすく書かれた本も、たくさんとは言えないけどそれなりの数ある。FDTDを勉強しようとしてここに行き着いた人はこれを見るよりほかのサイトの方が整理されていてきっとそっちの方が参考になる。一般人がどういうところでひっかかったり誤解するかとか、どこで悩むかなどを知りたい人か、あるいは僕と一緒に苦しみたい人だけどうぞ。
FDTD法とは?
波長よりも十分大きな構造に対しては光線追跡やFraunhoffer回折の考え方、計算法で十分だけど、波長と同程度かそれ以下の大きさの構造や、回折に偏光を考慮したいような場合、そういった簡単な方法では限界がある。もう少し近似を進める方法としてさっきのRCWAがある。これは、おおざっぱに見れば平面の境界面の上に細かく見れば構造があるような場合、その構造をそのおおざっぱな平面に平行な薄い層の積み重ねと見なして層間の境界条件から数値解を制限して行くやりかたで、考え方は美しいが計算は非常に難しい(ということが一昨年わかった)。そして、もうひとつのやり方がFDTD法。FDTD法(Finite-Difference Time-Domain method)、その詳細はよその偉い人の本でも見てもらうとして、ようするにMaxwellの方程式を差分化して逐次的に解こうと言うもの。RCWAよりずっと考え方はブルートフォースで簡単。
具体的には
- 計算したい媒質形状を直方体の中にモデリングする
- それをメッシュに刻む
- 入力電磁場を定義する
- 差分化したMaxwellの方程式に従って時間を進めながら場を計算する
とは言うものの、いろいろよくわからないところがある。知ってる人にとっては当たり前なんだろうけど、今時点で例えば
- 光学応用では伝播解にしか興味は無いけど、有限の箱の中の解だけからどうやって伝播解を得るのか
- 分散性媒質はどうやって盛り込むのか
次回から具体的に進める。まず、アルゴリズムのキモの差分化からまとめる。
夜も遅いので続きはまたこんど。
2008-05-14 23:00
nice!(0)
コメント(0)
トラックバック(0)
コメント 0