乗車日記

自転車ときのこ

MATLABとRCWA

行列計算に強い数値処理ソフトMATLABが使えるようになったので、行列を多用するRCWA(厳密波結合解析)による二次元周期構造体の光学特性を計算をするプログラムを書いてみた。他の仕事をしながら、MATLABの勉強をしながら半日ほどで書けてしまった。CやFORTLANでEISPACを使って書くよりも、圧倒的に読みやすい。
 しかし、プログラムはさくっとかけたのに何故か動作がおかしい。ある条件の時、入力した光より沢山の光が出てくる。隅から隅まで何度も見直し、物理的にも色々考え、数学的にも夜中まで色々考えること3日間。もうお手上げかと思っていたとき、ひらめいた。
 そう、出口側で伝搬しないエバネッセント光まで足し合わせて出力を計算していた。これを修正したら一挙解決。さっきまでのどんよりとした心が瞬時にすっきり晴れ晴れ。
 まあ大変だったが、おかげで色々と基礎まで戻って光の挙動を考察し、根本的な理解がさらに深まったので良かった。むしろこういうことでも無いと必死になって考えないので良い機会だったかも知れない。
 MATLABデバッグの際に変数をチェックするのもし易いし、少ないコード量でやりたいことが出来るのが良い。今後ともいろいろ活用して行きたい。
 今日は久しぶりにぐっすり眠れそうです。