この記事では、DLL によるミー散乱モデルを OpticStudio に実装する方法について解説します。また、このモデルを使用して大気中での散乱をシミュレートするサンプルが用意されています。このサンプル光学系は 2 つのコンフィグレーションで構成されていて、コンフィグレーション 1 では、主に大気中の水滴に起因して散乱が発生する条件下でのレイリー限界をモデル化し、コンフィグレーション 2 では大型粒子による散乱をモデル化します。このような粒子によって、散乱はレイリー限界からミー領域に移行します。
著者 Sanjay Gangadhara
ダウンロード
序論
ミー理論は、球状の粒子による光の散乱を対象として、マックスウェル方程式の解析解を記述する理論です。任意のサイズの粒子を扱うことができるため、あらゆる半径対波長比の粒子に適用できます。雲の中の大気散乱のモデル化1 に有効なほか、牛乳や生体組織といった一般的素材の外観を記述する場合にも使用します。OpticStudio では、ノンシーケンシャル モードのバルク散乱分布としてモデルを実装しています。この計算は、Bohren & Huffman による文献に基づいています。2
この記事では、モデルの入力方法を説明し、ミー散乱のコードを使用して大気散乱をモデル化する例を示します。
DLLの入力
ノンシーケンシャル モードで体積にミー散乱分布を適用するには、[オブジェクト プロパティ] (Object Properties) を開き、[体積物理特性] (Volume Physics) → [DLL 定義の散乱] (DLL Defined Scattering) を選択して [DLL] で [MIE.DLL] を選択します。
この DLL には、以下に述べる 5 つのパラメータの入力が必要です。
Particle index
このパラメータは、散乱粒子の屈折率 (実数) です。粒子が存在する媒質である背景媒質の屈折率は、体積の [材料] (Material) 列の設定で決まります。粒子の屈折率が背景媒質の屈折率に等しい場合 (両者の屈折率の差が 10-6 未満の場合)、粒子が背景と一体化したようになるので散乱は発生しません。また、粒子の屈折率を 0.0 以下に設定すると、散乱は発生しません (ミー散乱の DLL は無視されます)。
Size (microns)
このパラメータは球状散乱粒子の半径 (r) です。この値を 0.0 以下に設定すると、散乱は発生しません (ミー散乱の DLL は無視されます)。サイズの最大許容値は、正規化球体サイズ (x = 2πrnbackground/λ) の最大許容値で決まり、現在は 1934 に設定されています。正規化球体サイズが 1934 を超えると散乱は発生しません。球体がその程度まで大きくなると、OpticStudio で球体自体をモデル化して、その球体によって発生する実効的な散乱をモデル化する方が適切であることが考えられるからです。
Density (cm-3) 及び Mean Path
このパラメータは体積内部での散乱粒子の密度 (ns) です。この値を 0.0 より小さく設定すると、散乱は発生しません (ミー散乱の DLL は無視されます)。この値を 0.0 より大きく設定すると、コードによって計算される散乱断面積 (σs) とともに使用され、体積内部での散乱の平均自由光路λmfp = 1/nsσs が計算されます。密度を 0.0 に設定すると、体積内部での散乱の平均自由光路は、[平均光路] (Mean Path) のパラメータで指定した値に等しくなります。密度が 0.0 より大きい場合は、[平均光路] (Mean Path) のパラメータは無視されます。一方、[平均光路] (Mean path) のパラメータ値が 0.0 に等しい場合は、ミー散乱の DLL が無視されます。また、このダイアログでは [平均光路] (Mean path) に負の値を入力できないことにも注意してください。
Min. thresh.
このパラメータは計算を行う確率の最小閾値を設定します。OpticStudio の散乱の計算では、確率分布関数が積分されます (詳細は、ナレッジベースの記事「How to create a user-defined scattering function」を参照してください)。通常、この積分は極方向に 0 ~π (および方位角方向に 0 ~ 2 π) の範囲で計算されます。しかし、ピーク状に変化する分布の場合、角度空間領域では確率分布がゼロであることから、この積分を実行しても効率的な計算にはなりません。このため、最小閾値を設定することで、極方向の積分範囲上限としてπよりも小さい値を定義できます。この上限は、極角空間の中で、確率分布ピーク値に対する確率分布値の比率が一定の値まで低下する場所によって決まります。この一定の比率を最小閾値として設定します。たとえば、最小閾値を 0.01 に設定した場合、極方向積分範囲の上限は、確率分布が確率分布ピーク値の 0.01 倍になる場所です。この入力値が 0.0 以下または 0.5 以上の場合、デフォルト値の 0.001 が使用されます。
この値の指定には注意が必要です。一般的に、粒子が大きいほど確率関数のピークが鋭くなるので、一見、最小閾値を大きい値に設定する方が適切であるように思われます。しかし、散乱の計算における角度分解能は一定なので (0.1 度)、確率分布のピークが鋭くなるほど、角度の 1 変分あたりの確率低下が急峻になります。したがって、このような場合は最小閾値を小さくして、積分で十分なデータ ポイントが使用されるようにする必要があります。
このパラメータの適切な値を判断する最適な方法は、この値を少しずつ変更しながら結果を比較することです。0.01 から始めて、1/10 ずつ値を小さくしていきます。結果が著しく変化する場合は値をさらに小さくします。結果が収束するまで、この操作を繰り返します。収束後は、それ以上値を小さくしても計算の精度は上がらずに、計算時間が長くなるだけになります。
Transmission
このパラメータは散乱現象が発生した光線の強度を低くするための減衰係数です。散乱体積内部で光線が散乱すると、その強度はこの係数を乗算した値になります。たとえば透過率を 0.89 に設定した場合、散乱光線の強度は散乱前の 0.89 倍になります。この係数により散乱球体によるエネルギー吸収を考慮できます。背景媒質でのエネルギー吸収は、体積の [材料] (Material) 列で指定した材料の透過特性で決まります (ナレッジベースの記事「Fitting index data in OpticStudio」を参照してください)。
散乱粒子の屈折率の虚数成分は吸収に影響しますが (その特性は DLL への透過率入力で指定できます)、散乱の確率分布にも影響します。ただし、確率分布への影響は虚数成分の大きさが 10-2 以上の場合だけに見られ、これはきわめて高い吸収性を持つ粒子に相当します。したがって、この記事で取り上げるミー散乱モデルでは、虚数成分が散乱分布に与える影響を無視します。
その他の検討事項
最後に、ミー散乱の DLL では [角度] (Angle) のパラメータを使用しません。ただし、この値を 0.0 以下または 180.0 より大きい値に設定すると散乱が発生しません (ミー散乱の DLL は無視されます)。
ミー散乱分布の特性は、2 つの無次元パラメータで指定できます。ひとつは背景媒質の屈折率に対する散乱粒子の屈折率の比率 (m =nparticle /nbackground) 、もうひとつは正規化球体サイズ (x =2πrnbackground/λ) です。(m, x) のペアごとにミー分布を別々に計算する必要がありますが、計算した値はメモリに格納されるので、任意本数の光線の追跡で使用できます。この DLL では、最大で 10,000 個の (m, x) ペアの計算値をメモリに格納できます。この制限を超えるとミー データをそれ以上保存できなくなるので、以降の (m, x) のペアでは散乱が発生しなくなります。この 10,000 ペアという上限は、ほとんどのアプリケーションで十分すぎるほどの値です。
例 : 大気中の散乱
ミー散乱の DLL の使用法を示す簡単な例を検討します。このサンプル ファイルは、この記事の添付資料のリンクよりダウンロードできます。
サンプルでは、太陽からの放射をモデル化するために光源 (楕円) を使用しています。この光源のスペクトル分布は、その黒体温度で決まっています。 (詳細は、ナレッジベースの記事「How to model colored and Tristimulus sources」を参照してください)
太陽表面を表すために、温度として 5780 K を選択しています。3
大気をシミュレートするために矩形体積オブジェクトを使用し、観測される大気の色はディテクタ (色) オブジェクトで判断します (詳細は、ナレッジベースの記事「How to measure and optimize color data」を参照してください)。また、太陽スペクトルの色の観測結果を得るために、別のディテクタ (色) オブジェクトを使用します。この基本的なサンプルでは、各構成要素の大きさの比率が正確ではありません。このような光学系にミー散乱の DLL を適用する方法を示すことのみを目的としています。
この光学系には、2 つのコンフィグレーションを定義しています。コンフィグレーション 1 では、散乱のレイリー限界を表すモデル (正規化球体サイズが 1 よりもはるかに小さい状態) になるように、ミー散乱の DLL への入力パラメータを指定します。
粒子の屈折率には、水の屈折率に相当する 1.33 を使用します。矩形体積オブジェクトの [材料] (Material) を空欄にすることで、体積の材料を空気にします。したがって、このモデルは空気中の水滴による散乱を表します。
各水滴のサイズは 7 nm です。可視光の波長 (λが 0.4 ~ 0.7 µm) を使用するので、正規化球体サイズは 0.063 ~ 0.11 になります (レイリー限界に相当する、1 よりも十分に小さい値)。光学系の散乱自由光路が数 µm 程度になるように粒子密度を定義します (このデータは DLL から返されません。コード内部に設定したプローブ ポイントから求めます)。
この光学系で 1,000 万本の光線を追跡したところ、得られた大気の色は青でした。この原因は、レイリー限界における散乱は波長依存性がきわめて大きい (1/λ4) ことにあります (詳細は、ナレッジベースの記事「Bulk scattering with the Rayleigh model」を参照してください)。
色の特性は、評価関数に NSDE オペランドを使用することで、色度座標によって評価できます。
これらの値を、太陽のスペクトルについて生成した値 (評価関数の 7 行目と 8 行目) と比較することで、レイリー散乱限界で色に発生する変化を明確に確認できます。
コンフィグレーション 2 では散乱粒子のサイズを大幅に大きくし、レイリー限界の領域からミー散乱の領域に光学系を移行します。
散乱平均自由光路をコンフィグレーション 1 と同等の約数 µm に維持するために粒子密度を低くします。このデータは DLL から返されませんが、コード内部に設定したプローブ ポイントから求めています。この大きな粒子における限界でも確率分布が適切にサンプリングされるように、最小閾値も小さくしています。このコンフィグレーションで 1,000 万本の光線を追跡したところ、放射光の色が光源のスペクトルにほぼ等しいことがわかりました。
この結果は、NSDE オペランドで定量的に確認できます。
この結果は、文献4の説明どおり、ミー領域では散乱分布が波長にほとんど依存しないことを示しています。この結果から、太陽近傍の光が白く見える (太陽と同じ色に見える) 理由がわかります。雲が白く見える理由も、この結果からわかります。雲を形成する水滴は、大気を構成する分子よりもはるかに大きいので、日光が雲の中で散乱しても、観測される色は変化せず、白色のままです (今回の簡易サンプルでは、大気を構成する分子を水としてモデル化しましたが、実際には窒素分子と酸素分子です)。一方、大気中で散乱したときは色が変化して青色になります。
参考文献
- Wikipedia. 2019. Mie scattering. Feb 6. en.wikipedia.org/wiki/Mie_theory.
- Bohren, Craig F.; Huffman, Donald R. 1983. "Absorption and Scattering of Light by Small Particles." p. 82-129, 477-482. John Wiley & Sons.
- Wikipedia. 2019. Sun. Feb 4. en.wikipedia.org/wiki/Sun.
- Nave, Carl R. 2017. Blue Sky. http://hyperphysics.phy-astr.gsu.edu/hbase/atmos/blusky.html.
KA-01682
コメント
サインインしてコメントを残してください。