Skip to Main Content

      

Ansysブログ

December 18, 2023

Henyey-Greenstein分布モデルを使用したOpticStudioによるバルク散乱の可視化

Henyey-Greensteinモデルは、微小な粒子で散乱する光の角度分布を記述します。このモデルは、生物組織による光の散乱から星間塵雲による散乱まで、さまざまな状況に適用されてきました。

ここでは、ユーザー定義オブジェクト(DLLファイル)を使用して、Henyey-Greensteinバルク散乱をノンシーケンシャルモードでモデル化する方法について解説します。

Henyeyy-Greensteinバルク散乱モデルについて

Henyey-Greensteinモデルでは、散乱光の角度分布が次式で与えられます。

Henyey Greenstein math equation

Henyey-Greensteinモデル

パラメータgは分布の特性を表します。g=0の場合、このモデルはすべての角度で一様な散乱確率を持つ材料を表し、gが1に近づくにつれ、θ=0°付近に強いピークを持つ分布に変化していきます。角度θは、正反射光線に対する散乱光線の角度として定義されます。θ=0°は正反射光線に沿った前方方向の散乱を表し、θ=180°は正反射光線に沿った後方方向の散乱を表します。

Ansys Zemax OpticStudioには、ユーザー定義DLLが含まれており、ユーザーはこのバルク散乱モデルをノンシーケンシャル体積に適用することができます。以下の例で「Henyey-Greenstein-bulk.dll」を使用し、Henyey-Greensteinモデルの角度分布とパワー分布を示します。

Henyey-Greensteinモデルでパワー分布を調査

OpticStudioでHenyey-Greensteinモデルを実装する方法を示す例を見てみましょう。この光学系は、Henyey-Greenstein散乱分布が適用された矩形体積に対して垂直に入射する光線を放つ光源で構成されます。この分布は、ユーザー定義DLLを指定することによって矩形体積に適用します。 

OpticStudioにおいて[Object Properties] 内の [Volume Physics]を選択し、矩形体積に適用するバルク散乱モデルの種類を制御します。この例では、[model]に[DLL Defined Scattering]を選択し、使用するDLLファイルを「Henyey-Greenstein-bulk.dll」とします。このDLLとそのソースコードは、[Zemax {DLL}\DLL\BulkScatter]フォルダにあります。

DLL defined scattering

図1。Henyey-Greenstein-bulk.DLL。

DLLへの入力は、「透過率」(散乱中に入力パワーがどの程度減衰するかを表す)と、上記の式にあるパラメータgです。例の光学系では、散乱光線をさまざまな角度で測定するために、体積から等距離の位置に3つの小さな検出器を配置しています。これらの検出器は、入射光線に対して0°、30°、60°となる角度で置かれています(図2参照)。

Scattered ray angles

図2。散乱を有効にせずに表示されたNSC 3D Layout。

図2は、散乱を有効にせずに表示された[NSC 3D Layout]ツールであるため、正反射光線の経路のみが示されています。散乱を有効にして結果を解析する前に、[Object Properties] の [Source]を選択することで、光源光線を確認することができます。図3では、入射光線1本に対して散乱が1回だけ明示的に発生するように、光学系が設定されています。

One instance scattering

図3。バルク散乱の発生を1回に変更する画面を示したもの。

OpticStudioでは、[Bulk Scatter]のデフォルトが[Many]です。これは、光線が媒質内で複数回散乱する可能性があることを意味します。[Once]を選択すると、光線の分岐ごとに発生するバルク散乱が1回のみになります。散乱の前に、散乱体積の界面などで光線が分裂した場合、光線の各分岐が初めて散乱を経験し、それぞれの子光線が散乱します。[Never]を選択すると、この光源からの光線にはバルク散乱が発生しません。

[NSC 3D Layout]ツールで散乱の様子を確認するには、レイアウト設定で[Scatter NSC Rays]ボックスをチェックします(図4参照)。

NSC 3D layout

図4。[NSC 3D Layout]ツールで観察できる散乱。

光線の多くは検出器に到達しないため、これらの光線はその方向を示すために短い距離だけ描画されています。これらの光線の描画距離を変更するには、[System Explorer]の[Non-Sequential]の下にある[Missed Ray Draw Distance]ボックスで設定します(図5参照)。

このパラメータは、どのオブジェクトにも到達しない光線セグメントを描画する距離です。ゼロに設定した場合、未到達光線の描画距離には、このパラメータのデフォルト値が選択されます。

フィルタ文字列を使用すれば、矩形体積内で散乱して検出器(矩形)に到達する光線のみを解析することができます。フィルタ文字列により、光線が描画または表示されるために適合しなければならない「テスト」を定義します。フィルタ文字列の構文は、コマンドまたはフラグの間で実行する論理演算で構成されており、これらのコマンドまたはフラグにより、光線がオブジェクトに到達、反射、屈折、散乱、回折、ゴースト反射したかどうかを指定します。

フィルタ文字列のコマンドの完全なリストについては、OpticStudioのヘルプファイルを参照してください。

使用するフラグは以下の通りです。

  • Bn:オブジェクトnの内部でバルク散乱した光線を表示します。
  • Hn:オブジェクトnに到達した光線を表示します。
  • これらのフィルタ文字列は、以下の演算子を使用して組み合わせることができます。
  • &:論理積(AND演算)。AND演算は、「&」記号の両側のフラグが両方ともTRUEである場合にのみ、TRUEを返します。
  • |:論理和(OR演算)。OR演算は、いずれかのフラグがTRUEである場合にTRUEを返します。
System explorer

図5。OpticStudioでは、未到達光線の描画距離をゼロに設定すると、このパラメータのデフォルト値が選択される。

したがって、矩形体積(オブジェクト2)内でバルク散乱し、検出器(オブジェクト3、4、5)の1つに到達した光線を表示するには、フィルタ文字列「B2 & (H3 | H4 | H5)」を使用します。このフィルタ文字列は、[NSC 3D Layout]ツールまたはシェードモデルのレイアウト光線に適用できます(図6参照)。

Filter B2

図6。フィルタ文字列は、[NSC 3D Layout]ツールまたはシェードモデルのレイアウト光線に適用できる。

フィルタ文字列は、解析光線にも適用することができます。これは、[Ray Trace Control]ウィンドウで結果を光線データベースに保存する際に行うことができます。

Ray trace control

図7。[Ray Trace Control]ウィンドウで、フィルタ文字列を解析光線にどのように適用するかを示したもの。

次に、各検出器に到達するパワーの分布を測定します。これは、全パワーを1W(透過係数を1)として、5,000,000本の解析光線を発射する場合を想定して行います。g=0.001とg=0.5の場合の結果を以下の表に示します。

Distribution of power

[Mean Path](平均自由光路)は、体積の厚さ0.1mmよりも小さい0.0001mmに設定しました。OpticStudioによる測定値は、各光線が1回しか散乱できない場合に予想される理論モデルの結果と統計誤差の範囲内で一致しています(統計的な性質により、光線追跡の結果は毎回異なるものの、それでも十分に近い値が得られる)。

無料トライアルをダウンロードして、Ansys Zemaxの機能をお試しください。

注意:g=0を入力として指定した場合、計算で実際に使用されるgの値は10-4です。これは、g=0のときに計算上の特異点が発生するためです。非常に小さい値のgで得られた結果は、g=0で予測される結果とほぼ一致するため、この近似が十分に正確であることが分かります。