有限差分伝達行列法によるDFBミラーおよびブラッグ光栅のシミュレーション
このチュートリアルでは、OghmaNanoの有限差分伝達行列ソルバーを用いて、分布反馈光栅(DFB光栅)またはブラッグ光栅における反射、透過、および光吸収の挙動をシミュレーションします。これらの構造体は、屈折率の周期的な変調によって、相干性のある分布散乱を引き起こし、波長選択性の高い強い反射を生じさせます。以前の光学フィルターに関するチュートリアルでは、デバイスのエピタキシャル成長によって光学構造が定義されていましたが、本チュートリアルではLuaスクリプトを用いて直接光栅構造を構築することで、任意の光学積層構造や幾何形状を定義できるようになっています。このスクリプトシステムの詳細についてはステップエディターおよびスクリプト関連のドキュメントをご参照ください。最後に、2周期構造を持つDFB光栅が反射・透過・吸収スペクトルにどのような影響を与えるかを検証します。
1. 背景情報
金属製の鏡が単一の界面で光を反射するのとは異なり、DFBミラーは周期的な構造における繰り返し散乱によって光を反射する(??参照)。グレーティング周期が布拉格条件を満たす場合、反射波同士が同位相で重なり合い、強い反射帯、すなわち阻帯が形成される。この阻帯の位置および幅は主にグレーティング周期、屈折率コントラスト、および周期の数によって決定される。
DFBミラーの反射帯は、ブラッグ波長\(\lambda_B\)を中心として形成される。この波長は、グレーティング周期\(\Lambda\)および構造内を伝播する光モードの有効屈折率\(n_{\text{eff}}\)によって決定される。
\[ m\lambda_B = 2 n_{\text{eff}} \Lambda \]ここで \(m\) は回折次数を表す。光格子の強度は結合係数 \(\kappa\) によって記述され、この値は屈折率変調 \(\Delta n\) によって前進および後退方向に伝播する波がどの程度強く結合されるかを示す指標となる。屈折率分布がほぼ正方形形状を呈する光格子においては
\[ \kappa \approx \frac{2\,\Delta n}{\lambda_B} \]長さが\(L\)である均一な光グレーティングの最大反射率は、結合モード理論に基づき次のように求められる。
\[ R = \tanh^{2}(\kappa L) \]したがって、屈折率コントラストまたは光格子の長さを増加させると、反射率は1に近づく。阻帯の幅は結合係数に比例して変化する。
\[ \Delta\lambda \approx \frac{\lambda_B^{2}\,\kappa}{\pi\, n_{\text{eff}}} \]屈折率コントラストが高い光グレーティングほど幅広く強力な反射帯を形成するのに対し、コントラストが低い場合は狭い反射帯しか生じない。こうした単純な関係式を用いれば阻帯の位置や強度を大まかに見積もることは可能だが、より詳細なスペクトル形状やリップル現象、帯域外特性を正確に把握するためには完全な電磁界解析が必要となる。
従来の伝達行列法では、無限に周期的な平坦な層の積層構造が仮定されている。しかし実際の光格子は完全に周期的であることは稀である。本チュートリアルでシミュレーション対象とした2周期構造を含め、任意の非周期的あるいは意図的に摂動が加えられた構造を扱うため、OghmaNanoでは伝達行列法を有限差分格子上に展開している。光学的構造は空間的に離散化され、メッシュ上で各スライスごとに電磁場の順方向および逆方向伝播が計算される。この有限差分伝達行列法により、従来の伝達行列法が持つ数値的効率性および安定性が維持されると同時に、1周期以上の構造を持つ光格子やチルプ構造、アポダイゼーション処理が施された構造、さらには内在的な不規則性を含むあらゆる空間的屈折率分布のシミュレーションも可能となる。
2. 始め方
最初のDFBミラー計算を開始するには、メインメニューのファイルリボンから新規シミューションウィンドウを開いてください(??参照)。次に伝達行列法グループに移動し、ブラッグ光栅(一次元)のサンプルをダブルクリックしてください(??参照)。その後、作成したシミュレーションをディスク上の任意のフォルダに保存します。そうするとメインウィンドウが表示され(??および??参照)、そこには二周期構造を持つブラッグ光栅が現れます。このサンプルでは二周期のブラッグ光栅が読み込まれており、狭い間隔の光栅同士の間隔は140ナノメートル、やや広い間隔の光栅同士の間隔は218ナノメートルとなっています。この光栅自体はSiO2で構成されており、周囲の媒質はこの例では空気です。シミュレーションが開始されたら、メインウィンドウ上で構造を確認できます(??参照)。
3. DFBシミュレーションの実行
??には、わずかに異なる視点から見た同一のデバイスが示されている。シミュレーション実行(再生)ボタンをクリックするとスペクトルが計算され(??参照)、処理完了後は結果が出力タブに表示される(??参照)。Run simulationをクリックすると、ソルバーが光スペクトルを順次処理し、各波長ごとに計算を実行する(??参照)。ターミナル内の各色の線(Solve optical slice at … nm)は、それぞれ異なる波長に対応している。前述の通り、ここで用いられている手法は実質的に有限差分格子上に展開された伝達行列法であり、これによって任意形状の2周期構造を持つ分布反馈光栅の解析が可能となっている。
3. 出力結果の確認
シミュレーションが完了したら、出力タブ(??を参照)を開き、計算で生成されたファイルを確認します。本チュートリアルで主に使用する出力ファイルは device.csv、optical_output フォルダ、および optical_snapshots フォルダです。まずは device.csv を開いてください(??を参照)。これにより、ソルバーが認識するデバイスの三次元メッシュが表示され、光学結果を確認する前にグレーティングの幾何形状が正しく生成・メッシュ化されているかを検証できます。
次に、optical_outputをダブルクリックして光学シミュレーションエディタを開きます。??に示す生成率タブには、構造内で光子が吸収されている箇所が表示されます。ほとんど吸収が見られない領域は主に周囲の空気層であり、より強い吸収は光格子内部で生じています。
[反射光]タブ(??参照)には、光グレーティングによって反射される波長が示されており、反射率の低い領域によって隔てられた明確な反射帯が確認できる。一方、[透過光]タブ(??参照)には対応する透過スペクトルが表示されており、反射率が低い領域では透過率が高くなっている。
4. 光学材料の編集
グレーティングに使用される光学材料は、メインウィンドウの「デバイス構造」タブから開くことのできる「吸収エディタ」を通じて確認および変更可能である。これにより吸収エディタが表示され(??および??参照)、グレーティングを構成するSiO2およびその周囲の空気の屈折率\(n\)と吸収係数\(\alpha\)のデータが示される。「オブジェクト」タブ(??参照)にはグレーティング自体の材料(Oxides/SiO2)が表示され、「ワールド」タブ(??参照)には周囲の媒質(Generic/air)が表示される。ここで「光学材料」フィールド内の「…」ボタンをクリックすることにより、任意の材料へと変更することが可能である。
5. 光栅構造の編集
DFB構造自体を右クリックすると、メッシュエディタや結晶エディタを含むいくつかのオプションが表示される(??参照)。メッシュエディタをクリックすると(??参照)、そのボックスの寸法が表示される。伝達行列法は一次元的手法であるため、構造物の他の寸法は実質的に重要ではない。重要なのは伝播軸方向の幅のみであり、ボックスの他の寸法は関係しない。もし二次元FDTD法を用いる場合には、他の寸法も重要となる。
同じメニューから[Crystal editor]を選択することで(??参照)、グレーティング構造を生成する際に使用されるLuaスクリプトを確認できる。個々のグレーティング要素を手動で定義する代わりに、構造全体がプログラムによって構築される仕組みだ。Refreshボタンをクリックするとスクリプトが再実行され、幾何形状が再生成される。この例ではmath.randomによりごくわずかな位置変動が導入されているため、再生成のたびにグレーティング形状が若干変化する。この現象は??でも確認可能であり、そこでは周期構造にランダムな変動が生じる様子を2秒ごとに更新して示している。
clear_points()
N = 200
radius = 1.5e-6
pitch = 3e-6
turns = 6
for i = 1, N do
t = (i / N) * turns * 2 * math.pi
-- first helix strand
x1 = radius * math.cos(t)
y1 = radius * math.sin(t)
z1 = (i / N) * turns * pitch
add_point(x1, y1, z1)
-- second helix strand offset by pi (opposite side)
x2 = radius * math.cos(t + math.pi)
y2 = radius * math.sin(t + math.pi)
add_point(x2, y2, z1)
end
このスクリプトはまず、以前に生成された点群をすべて消去し、続いて幾何形状を制御するためのパラメータを定義する。メインとなるforループでは、構造体の各位置を順次処理していく。各反復処理において、現在のiの値を用いて次の幾何要素の座標を算出し、その座標をadd_point()を使って構造体に追加する。同一ループ内で別の座標も計算され、反対側に相当する点も生成される。DFB光栅の例においても、同様の手法が各光栅要素の配置に用いられている。パラメータを変更したりmath.random()のような項を追加したりすることで、スクリプトはさまざまな周期や寸法、あるいは制御された変動を有する光栅を生成可能となる。
6. 照明方向の選択
OghmaNanoの便利な機能の一つとして、伝達行列計算が単一の伝播方向に限定されない点が挙げられます。多くのシミュレーションでは、計算はデバイスのエピタキシャル層を通る方向のみで行われますが、OghmaNanoでは照明方向を明示的に選択可能であり、同一構造体を任意の主軸方向に沿ってシミュレーションすることが可能です。
照明方向を選択するには、??で示す光学リボンを開き、??で示す光源エディタを起動するために「光源」を選択します。Configureタブ内の「Illuminate from」欄からx0、x1、y0、y1、z0、またはz1を選択してください。
z0 であり、光源は光格子の一端に位置している。
z1からの照明であり、光源は光格子の反対側端に移動している。この例では、照明方向を z0(?? 参照)から z1(?? 参照)へ変更すると、単に光源が光格子の反対側へ移動するだけです。このような可逆的な構造ではどちらの方向からの光照射でも光学応答は同一となりますが、非対称構造の解析や光の伝播方向の違いによる比較を行う際にはこの機能が有用となります。
7. 結論
本チュートリアルでは、OghmaNanoを用いて有限差分伝達行列法により分布反馈(DFB)ミラーおよびブラッグ光栅のシミュレーションを行いました。Luaスクリプトを利用して2周期構造の光栅を生成し、製造上の許容誤差を模倣するための制御されたランダム性を導入すること、光学的計算を実行し、得られた反射・透過・吸収スペクトルを解釈することも学びました。また、照射光の方向は固定されたエピタキシャル方向に限定されることなく、任意の主軸方向に設定可能であることも確認しました。これらの手法は、DFBおよびDBRレーザーミラー、光ファイバー用ブラッグ光栅、光学フィルター、誘電体ミラーといった波長選択型フォトニック構造、さらには複数周期や不規則性、特殊な幾何形状を有するより複雑な光栅の解析にも応用可能です。