ホーム 例 スクリーンショット ユーザーマニュアル Blueskyロゴ YouTube ☰
OghmaNano 有機/ペロブスカイト太陽電池、OFET、OLEDをシミュレーション ダウンロード Quick Start guide

転移行列法を用いた光学フィルターのシミュレーション

Schematic of the Transfer Matrix Method showing forward and backward propagating electromagnetic fields in a multilayer optical stack
多層光学構造における転送行列法(TMM)の概略図である。各層は複素屈折率\(n + jk\)および膜厚\(l\)によって記述され、各界面において前方および後方に伝播する電磁波(\(E^+\)および\(E^-\))が結合される。デバイス内部の全光電場は、これらの波が全層を通過することで求められる。

本チュートリアルでは、OghmaNanoの光学用伝達行列ソルバーを用いて、多層薄膜光学フィルターにおける反射、透過および光干渉現象をシミュレーションします。このような構造体はブラッグ反射器、誘電体ミラー、反射防止コーティング、OLED、薄膜太陽電池などに広く利用されており、その光学特性は各層の複素屈折率(n+jk)および膜厚によって決定されます。

1. 背景

転送行列法(TMM)は、OLEDマイクロキャビティや薄膜太陽電池、誘電体ミラー、分布型ブラッグ反射器(DBR)、反射防止コーティング、波長選択型光学フィルターといった多層薄膜光学構造のシミュレーションに広く用いられている。垂直入射条件下において、屈折率の異なる物質間の各界面で光は部分的に反射・透過され、進行方向が異なる電磁波同士で干渉現象が生じる。転送行列法はこの干渉現象を厳密にモデル化することで、多層構造全体における反射率、透過率、および光吸収量を正確に算出することが可能となる。多層薄膜構造の光学的応答は、構造内部で反射・透過した電磁波間の干渉作用によって決定される。多層構造および伝播する光波の模式図を図??に示す。

転送行列法においては、各層内の電場は進行方向と逆方向に伝播する波の和として表される。

\[ E_i(z)=E_i^{+}e^{-\zeta_i z}+E_i^{-}e^{\zeta_i z} \]

ここで\(E_i^{+}\)および\(E_i^{-}\)はそれぞれ前方および後方に伝播する電場の振幅を表す。

\[ \zeta_i=\frac{2\pi}{\lambda}\bar{n}_i \]

ここで\(\bar{n}=n+j\kappa\)は材料の複素屈折率を表す。各界面においてマクスウェル方程式および電磁界の境界条件を適用することで、フレネル反射係数および透過係数が求められる。

\[ r_{ij}=\frac{n_i-n_j}{n_i+n_j}, \qquad t_{ij}=\frac{2n_i}{n_i+n_j} \]

これにより、界面の両側にある光電場が転送行列を介して相互に関連付けられることになる。

\[ \begin{pmatrix} E_i^{+} \\ E_i^{-} \end{pmatrix} = \frac{1}{t_{ij}} \begin{pmatrix} 1 & r_{ij} \\ r_{ij} & 1 \end{pmatrix} \begin{pmatrix} E_j^{+} \\ E_j^{-} \end{pmatrix} \]

厚さ\(d_i\)の層内での伝播は、次のように表される。

\[ \begin{pmatrix} E_i^{+}(z+d_i) \\ E_i^{-}(z+d_i) \end{pmatrix} = \begin{pmatrix} e^{\zeta_i d_i} & 0 \\ 0 & e^{-\zeta_i d_i} \end{pmatrix} \begin{pmatrix} E_i^{+}(z) \\ E_i^{-}(z) \end{pmatrix} \]

したがって、多層光学スタック全体は、各層の界面行列および伝播行列を順次乗算することで解析される。

\[ M=M_1M_2M_3 \cdots M_n \]

これにより、反射・透過・吸収された光の強度を直接算出することができる。この手法は計算効率に優れ、数値的にも安定しており、単純な行列乗算のみを必要とするため、多層光学フィルターや薄膜干渉構造のシミュレーションに最適である。

各層の膜厚や屈折率を調整することで、目的に応じた分光特性を持つ光学フィルターを設計することが可能となる。例えば、波長がλ/4の厚さを持つ単一の誘電体層を用いれば、所望の波長における表面反射を低減できる。また、高屈折率層と低屈折率層を交互に積層させることで、強力なバンドストップ特性を示すブラッグ反射体が形成される。

2. はじめに

最初の光学フィルター計算を開始するには、メインメニューのファイルリボンから「新規シミュレーション」ウィンドウを開いてください。次に「光学フィルター例」(??参照)をダブルクリックし、シミュレーション内容をディスク上のフォルダに保存します。そうすると、約10層からなる多層構造が表示されたメインウィンドウ(??参照)が現れます。「シミュレーション実行」ボタンをクリックするとスペクトルが計算され、処理完了後には結果が「出力」タブに表示されます(??参照)。

New simulation window with the Optical filter example highlighted.
光学フィルター例が強調表示された新規シミュレーションウィンドウ。
Main window showing a multilayer optical filter stack.
光学フィルターのデモ用のOghmaNanoメインウィンドウであり、約10層からなる積層構造が表示されている。スペクトルを計算するには「シミュレーション実行」ボタン(再生アイコン)をクリックする。
Output tab showing files and plots from the optical filter simulation.
光学フィルターシミュレーション実行後の出力タブには、生成されたスペクトルおよびデータファイルが表示される。

3. 出力結果の確認

シミュレーション実行後、??内の「Optical Output」をダブルクリックすると「Optical Simulation Editor」が開きます。このエディタには複数のタブがあり、最初のタブである「Photon distribution」が自動的に表示されます(??参照)。ここにはキャビティ内の光子分布が示されており、フィルターの層状構造が縦縞として明確に確認できます。2番目のタブ「Photon distribution absorbed」(??参照)では光子の吸収箇所が示されます。本例では、ある材料の吸収係数がわずかに設定されているため、吸収はごくわずかながらも存在します\(\alpha\)。最後に「Reflected light」タブ(??参照)には反射スペクトルが表示されます。その結果、約500ナノメートルから800ナノメートルの範囲で強い反射が生じ、この帯域外の光は程度の差こそあれ透過するという、典型的なブラッグ型フィルターの特性が確認できます。

Photon distribution within the cavity showing the layer structure.
多層キャビティ内部における光子分布。
Photon distribution absorbed showing weak absorption in some layers.
光子吸収マップ。特定の層において吸収が弱くなっている様子が示されている。
Reflected light spectrum showing strong reflection between 500 nm and 800 nm.
500nmから800nmの範囲において強い反射が見られる反射光スペクトル。
Transmitted light spectrum showing band-stop behaviour of the multilayer filter.
フィルターのバンドストップ特性を示す透過光スペクトルである。

透過光スペクトルから、フィルターが示すバンドストップ特性が確認できる。約300nmから500nmの波長域の光は効果的に透過する一方、500nmから800nmの波長域では光の透過が強く抑制される。800nmを超える長波長域では再び透過が見られ、フィルターの応答が多バンド特性を持つことが示されている。

4. フィルターの編集

Layer editor showing the multilayer stack with editable thicknesses and materials.
レイヤーエディターには多層構造が一覧表示されており、各層の膜厚や光学材料を編集可能である。

スタック構造を確認または変更するには、メインウィンドウの「デバイス構造」タブを開き、「層エディタ」をクリックしてください(??参照)。このエディタにはデバイス内の各層が、その膜厚や光学材料、各種設定と共に一覧表示されます。ユーザーはこの表内で直接層の膜厚を編集したり、材料を変更したり、層の追加・削除や順序の入れ替えを行うことで、目的に合った光学フィルター設計が可能となります。

5. 光学フィルターの膜厚スキャン

次に、フィルターの膜厚を自動的にスキャンする方法について説明します。これにより、フィルターを設計し自動的にスキャンすることで、フィルター構造が透過率および反射率に与える影響を調査できます。体系的なスキャンを実行することで、多種多様なフィルター設計の概要を迅速に把握し、用途に最適な設計を選定することが可能となります。

メインウィンドウ内の「Automation」リボンに移動し、「Parameter Scan」をクリックしてください(??参照)。そうすると「Parameter Scan」ウィンドウが開き、既に「new」という名前のスキャンエントリが存在するはずです。このエントリをダブルクリックすると、スキャン設定ウィンドウが表示されます(??参照)。最後に「Run scan」をクリックして計算を開始してください。選択したパラメータ値の数によっては、スキャン完了まで少し時間がかかる場合があります。

OghmaNano main window with the Automation ribbon and Parameter Scan highlighted.
パラメータスキャンボタンが強調表示されている自動化リボン。
Parameter scan setup window showing layer thickness values to scan.
パラメータスキャン設定ウィンドウ。スキャン対象の値を定義した後、『Run scan』ボタンをクリックしてください。

「Run scan」ボタンをクリックすることで、??に示されている小さなプログラムが実行されます。このプログラムについては後ほど説明しますが、要するに最高屈折率を持つ層の膜厚を一連の値に沿って変化させるものです。Parameter Scanウィンドウ内の「Output」タブを開いてください(??参照)。そこには4つのディレクトリが存在し、それぞれがスキャンされた膜厚値の一つに対応しています。各ディレクトリ内には通常のファイル群から成る完全なシミュレーション結果が格納されており、唯一の違いは該当層の膜厚のみとなります。

スキャンフォルダのルートディレクトリには、「マルチカーブ」用の特殊なアイコン(複数行記述が含まれるCSVファイル)も存在します。これらは各サブシミュレーションから得られた対応する曲線データを集約したものです。??をダブルクリックしてoptical_outputファイルを開くとreflect.csvおよびtransmit.csvが表示されます。reflect.csvを開くと、スキャンされたすべての膜厚値における反射率データが1つのグラフ上にプロットされ、??に示すような結果が得られます。

Parameter scan Output tab showing subfolders for each scanned thickness.
パラメータスキャン機能の出力タブ:スキャン対象の各膜厚値ごとにフォルダが作成される。
Inside a scanned-thickness folder showing reflect.csv and transmit.csv aggregate files.
スキャン用サブフォルダ内には、集約された reflect.csv および transmit.csv が存在する。
Combined reflectance plot overlaying curves from all scanned thicknesses.
スキャン対象となった全膜厚における反射率の合成値。

6. パラメータスキャンウィンドウの仕組みを理解する

もう一度ご覧いただければ ??、 5つの行が記載されているのが確認できます。各行では特定の内容が指定されています。 スキャン対象となるパラメータこの例において、パラメータとは膜厚のことですdyエピタキシャル積層構造内の特定の層の膜厚。記載されている値は epitaxy.layer0.dy, epitaxy.layer2.dy, epitaxy.layer4.dy, epitaxy.layer6.dy、 および epitaxy.layer8.dyこれらの行は、対応するものです。 高屈折率層 デバイス構造内において。

最初の行には膜厚の値のリストが記載されています:1.0e-7、2e-7、4e-7、8e-7。これらがスキャン処理においてlayer0に割り当てられる値となります。この行の操作設定は「スキャン」となっており、これによりプログラムがlayer0の膜厚を上記の値群の中から順次変化させることになります。

他の層(layer2、layer4、layer6、layer8)においては、処理内容がepitaxy.layer0.dyに紐付けられています。値の欄には「duplicate」と記載されており、これはプログラムに対しlayer0に現在設定されている値を読み取り、他の高屈折率層にも同値を適用するよう指示するものです。つまりlayer0の値が変更されるたびに、他の高屈折率層の膜厚も自動的に同一の値へ更新される仕組みとなっています。

要するに、本プログラムでは1つの高屈折率層に対して複数の膜厚値を順次設定し、その値をスタック内の他のすべての高屈折率層にも適用します。各ケースごとにシミュレーションが実行されるため、膜厚の変化がフィルター性能に与える影響を詳細に調査することが可能となります。

7. まとめ

このチュートリアルの本節では、パラメータスキャン機能を用いて光学フィルター設計を自動化する方法を学びました。層の膜厚を体系的に変化させ、複数の層間でパラメータを複製することで、それらの変更が透過率および反射率に与える影響を調査しました。これらのツールを活用すれば、さまざまなフィルター設計案を迅速に評価し、ご自身の用途に最適な構造を見つけ出すことが可能となります。