[光源 (DLL)] (Source DLL)

OpticStudio には各種の組み込みの光源が付属していますが、必要な特性を備えた光線を生成するアルゴリズムの定義が、光源をモデル化する最善の方法である場合もあります。

OpticStudio では、ユーザー定義の光源を、光線のテーブルとしてもサポートしています。[光源 (ファイル)] (Source File) の説明を参照してください。

プログラムを使用して光源を定義するには、ランダム光線を生成するアルゴリズムを作成して、それを Windows のダイナミック リンク ライブラリ (DLL) としてコンパイルする必要があります。OpticStudio に付属する多数の DLL にはソース コードが含まれます。適切なコンパイラを使用すると、DLL を簡単に新規作成できます。「DLL に関するコメント」も参照してください。

光源 DLL のパラメータ

光源プロパティの計算時には、各 DLL で 0 ~ 30 個のユーザー定義のデータ値をパラメータとして使用する場合があります。これらのパラメータは、DLL によって定義され、DLL のみで使用します。

新規光源 DLL の作成

ビーム DLL には、関数 UserSourceDefinition および UserParamNames を記述する必要があります。

DLL でモデル化した光源から光線を発する際には、UserSourceDefinition 関数に光源パラメータ、波長、およびその他のデータが渡されます。UserSourceDefinition 関数は、次の値の計算に必要になります。

x、y、z: 光線の開始座標。

l、m、n: 光線の開始方向余弦。

i: 光線の初期相対強度 (後述の「光源 DLL の相対強度に関するコメント」を参照)。

これらの値は OpticStudio に返された後、光線追跡を開始するために使用されます。UserParamNames 関数は、使用するすべてのパラメータの名前の定義に使用されます。これらの名前は、NSC エディタの光源 DLL オブジェクトのパラメータ列に表示されます。

DLL ごとに入力データと出力データを確認するには、光源 DLL の data[] 値を確認します。

光源 DLL の使用方法を習得するための最善の方法は、既存の DLL から学んで、必要に応じてそれを変更することです。OpticStudio に付属するサンプル DLL には、データ形式に関する広範なドキュメントとコメントが含まれます。例として、いずれかのサンプル ソース コード ファイルを参照してください。

すべての光源 DLL は、<data>\DLL\Sources フォルダに配置する必要があります。

光源 DLL の相対強度に関するコメント

DLL で生成された光線を OpticStudio で追跡する場合、光線の初期パワーは、その光源の全パワーを解析光線数で除算して、相対的な重みでスケーリングした値です。このため、要求された全解析光線のすべての相対強度の平均値が 1.0 になるように、DLL で計算される光線の相対強度を設定する必要があります。解析光線数は、DLL へのパラメータとして渡されることに注意してください。OpticStudio では、追跡前にすべての光線を生成しないと、追跡対象である解析光線の集合全体を正規化できないため、この条件が必要になります。

光線の正規化の推奨される方法は、DLL ですべての光線の相対強度を 1.0 に設定してから、光源の目的の確率分布に従って光線を選択することです。この手法を使用するということは、より多くのエネルギーが存在する位置と方向余弦にある光線が選択されるようになるという意味です。そのための計算手法は簡単です。この計算手法では、すべての空間域と方向域で光源を統合してから、正規化された積分値と均一乱数ジェネレータを使用して光線を特定します。付属のサンプル FIBER1 DLL は、この計算手法を例示しています。

別の方法では、1 以外の光線の重みを使用します。この手法では、DLL で必要な光線をすべて計算してから、平均重み値 1.0 になるように光線を内部的に正規化します。この計算手法は概念的にはより簡単ですが、一般的にその効率は下がります。

LightningTrace での使用

この光源タイプは、LightningTrace ではサポートされていません。

サンプル光源の DLL

次のサンプル光源の DLL とソース コードは、OpticStudio に付属しています。

これらの DLL は <Zemax\DLL\Sources> フォルダにあります。そのソース コードが用意されている場合は、それもこのフォルダにあります。

CONE.DLL
内容 ユーザー定義パラメータ

この DLL は、次の 2 つの大きな相違点を除けば Lambertian_Overfill DLL に似ています。(1) 光源および角度分布の両方の全領域で、均一分布と余弦 (ランバーシアン) 角度分布が正確に考慮されます。(2) 内側円錐角と外側円錐角および円錐開始角と円錐終了角に基づいて、解析の対象領域を指定できます。対象領域を指定すると、その領域に放射される光線を 2πの全半球に放射した場合に得られる空間分布と角度分布が維持されるように、放射される光線の強度がこの DLL によってスケーリングされます。この機能を使用することで、光源に対する法線軸から大きく離れた位置にある小領域での光線の分布を、均一分布でもランバーシアン分布でも優れた効率で追跡できます。次の 2 種類の分布から選択できます ([分布タイプ] (Distribution Type) 列で指定)。

  • ランバーシアン分布 (data = 0)
  • 均一な半球面分布 (data = 1)

円錐角パラメータは 0°~ 90°、円錐の開始角と終了角のパラメータは 0°~ 360°の範囲で設定する必要があります。外側円錐角を 90°、円錐終了角を 360°に設定すると、対象領域は 2πの半球になります。円錐の開始角と終了角は、光源の方向を見た状態で、+x 軸から反時計回りに考えます。

  • Source Width、Source Height : 光線を放射する楕円領域または矩形領域を定義します。
  • Source Rectangular?
    • 光源 (楕円) の場合は 0
    • 光源 (矩形) の場合は 0 以外
  • Distribution :
    • ランバーシアン分布の場合は 0
    • 均一分布の場合は 1
  • Inner Cone Angle、Outer Cone Angle : 0 ~ 90 度
  • Clock Start Angle、Clock End Angle : 0 ~ 360 度
  • Scale Factor

FIBER1.DLL

内容 ユーザー定義パラメータ

平面のファイバ モデルです。

光線は、半径 R のディスクから放射されます。強度プロファイルは、以下の式で求められます。

I(r) = A + Br2 + C r4

ここで、

0.0 <= r <= R .

光線の開始位置が決定されたら、面から円錐へ光線が照射されます。円錐の開口数は、次の半径座標に基づいています。

NA(r) = D + Er2 + Fr4

開口数で定義される角錐内では、光線分布は均一です。

  • R : ファイバの半径
  • A、B、C : 強度プロファイルを定義する係数
  • D、E、F : NA を定義する係数

GaussianSource.dll

内容 ユーザー定義パラメータ

この DLL はガウス ビームをシミュレーションします。ビーム ウェスト、ビーム位置、M^2 ファクタを使用して光線の空間分布と角度分布を定義します。実際のウェストは次のように定義できます。

発散は次による値に等しくなります。

光源強度の空間分布は、以下の式で求められます。

光源強度の角度分布は、以下の式で求められます。

この DLL では、光源の媒質の屈折率は考慮されません。この DLL の最新バージョンがコミュニティの「DLL (Source): Non-sequential Astigmatic Gaussian」に用意されています (このページを閲覧するには、サポート対象のライセンスに関連付けられたアカウントでログインする必要があります)。

  • Waist (Radius) : 基本的なウェスト半径
  • Position : 光源 (DLL) のローカル座標による ZSourceDLL - Zwaist の値
  • ZSourceDLL が Zwaist より小さい場合、Position 値は 0 より小さい値
  • ZSourceDLL と Zwaist が等しい場合、Position 値は 0
  • ZSourceDLL が Zwaist より大きい場合、Position 値は 0 より大きい値
  • M^2 : ビームの品質係数

LAMBERTIAN_OVERFILL.DLL

内容 ユーザー定義パラメータ

この DLL を使用すると、仮想的な円形アパチャーに向かってランバーシアン分布による光線を照射して、そのアパチャーを埋めることができます。

光線は、楕円形または矩形の光源領域から均一な空間分布で発せられます。直円錐は仮想的なターゲット アパチャーに合わせてフィッティングされ、その光源領域内に頂点が配置されます。

光線の方向は、この直円錐内の均一な角度分布から選択され、その強度は直円錐の立体角に比例します。この円錐はターゲット アパチャーの楕円断面よりもわずかに大きいので、光線の中には、ターゲット アパチャーのわずか外側に到達するものがあります。その結果、ターゲット アパチャーではその直径に対してわずかな量だけ光が過剰になります。

ランバーシアン強度分布を使用すると、若干ゆがみのある統計分布になることがあります。この原因は、特定の円錐角内部での分布確率がローカル Z 軸からの離角に依存することから、別の公称方向ベクトルが使用されるように光線を再エイミングすると精度が若干低下することにあります。光源の空間的サイズがゼロに近づくほど、またターゲットの距離が無限大に離れるほど、ランバーシアン強度分布はより正確な解に収束します。ランバーシアン分布では、サイズが大きな光源や近距離のターゲットを使用しないようにする必要があります。ランバーシアン強度を使用して正確な統計分布を得るには Cone.dll を使用します。

  • Source Width、Source Height : 光線を放射する楕円領域または矩形領域を定義します。
  • Source Rectangular?
    • 光源 (楕円) の場合は 0
    • 光源 (矩形) の場合は 0 以外
  • Target Diameter : ターゲットの直径
  • Target Distance : 光源 (DLL) から仮想アパチャーまでの距離
  • Distribution Type :
    • 均一な球面分布の場合は 0
    • 均一な半球面分布の場合は 1
    • ランバーシアン分布の場合は 2

SkewRaysCircular.dll

内容 ユーザー定義パラメータ

この DLL は、スキュー光線を送出してノンシーケンシャル モードでガウス ビームの伝搬をモデル化します。スキュー光線は、優れた効率でガウス ビームを正確に表現することから、最適な焦点を迅速に得るための最適化や収差の最小限化に使用できます。これは、Paul Colbourne によるユーザー定義面 (Using skew rays to model Gaussian beams) をノンシーケンシャル モードに取り入れた面です。

この光源 (DLL) では、理想的なガウス ビームが得られます。次の図に示すように、以下の各パラメータを任意に組み合わせることで、所定の波長を持つガウス ビームを記述できます。

  • ビーム ウェスト w0、および光源 (DLL) の位置を基準としたウェスト位置。
  • ビーム発散角θ、および光源 (DLL) の位置を基準としたウェスト位置。
  • 光源 (DLL) の位置におけるビーム サイズ w(z)、およびビーム発散角θ。


これらのパラメータはすべて、以下の式で結び付いています。

  • ビーム ウェストは、ビームの遠視野発散角θと波長λによって変化します。
  • ウェストを基準としたビームの Z 位置は、ビーム ウェスト サイズとビーム半径 ω を使用して次のように計算できます。
    Zr はレイリー長です。レイリー長は次のように定義します。

開始位置にある媒質 (DLL に記述された媒質) の屈折率によるスケーリングが、波長に適用されない点に注意が必要です。

Definition? : 1、2、または 3 を指定できます。このフラグ値 1、2、3 に応じて、以下のいずれかの定義が使用されます。Definition? は、1、2、3 以外の値を指定すると 1 に設定されます。

Definition? は、1 の場合

  • 1.Waist (Radius) (レンズ ユニット)
  • 1.Position (レンズ ユニット)。この位置は、ウェスト位置を基準とした光源 (DLL) の位置です。
  • Position : 光源 (DLL) のローカル座標による ZSourceDLL - ZWaist の値。
  • ZSourceDLL が ZWaist より小さい場合、Position 値は 0 より小さい値
  • ZSourceDLL と ZWaist が等しい場合、Position 値は 0
  • ZSourceDLL が ZWaist より大きい場合、Position 値は 0 より大きい値

Definition? は、2 の場合

  • 2.Angle (deg) : 遠視野発散角
  • 2.Position (レンズ ユニット)。この位置は、ウェスト位置を基準とした光源 (DLL) の位置です。
  • Position : 光源 (DLL) のローカル座標による ZSourceDLL - ZWaist の値。
  • ZSourceDLL が ZWaist より小さい場合、Position 値は 0 より小さい値
  • ZSourceDLL と ZWaist が等しい場合、Position 値は 0
  • ZSourceDLL が ZWaist より大きい場合、Position 値は 0 より大きい値

Definition? は、3 の場合

  • 3.Angle (deg) : 発散角
  • 3.Size (Radius) (レンズ ユニット)光源 (DLL) 位置におけるビームのサイズ。

次へ :