著者: Yuan Chen、Michael Cheng、Qiang Wang
Downloads
はじめに
この記事では、Zemax と SPEOS との間で光源ファイルを変換する Python コードを用意しています。
.IES ファイルのように、SPEOS と Zemax の両方で読み取り可能な光源ファイルもあります。しかし、IES ファイルは角度データのみを収めているので、光学系が光源の遠視野にある場合にのみ適切です。SPEOS と Zemax とでは、位置データを記述するために使用できる光源ファイル形式が異なります。SPEOS では .RAY ファイル、Zemax では .DAT ファイル (単色) と .SDF ファイル (多色) の 2 種類です。
セクション 1 では、Zemax と SPEOS の光源ファイル形式について説明します。
セクション 2 では、用意した Python コードを使用して Zemax の光源ファイルを SPEOS の光源ファイルに変換する方法を紹介します。ここで使用する光源ファイル サンプルは rayfile_LCB_G6SP_100k_20210701_Zemax.dat です。
セクション 3 では、用意した Python コードを使用して SPEOS の光源ファイルを Zemax の光源ファイルに変換する方法を紹介します。ここで使用する光源ファイル サンプルは rayfile_LCB_G6SP_100k_20210701_Speos.ray です。
この変換機能に関してご質問があれば、電子メール ボックス support@zemax.com またはウェブサイト https://www.zemax.com/ までご連絡いただくか、speos_support@ansys.com で SPEOS までお問い合わせください。
SPEOS と Zemax の光源ファイル形式
このセクションでは、Zemax と SPEOS の光源ファイル形式について説明します。この記事の主目的ではありませんが、ここで取り上げる定義に従うと SPEOS または Zemax で使用できる独自の光源ファイルを作成できます。
.RAY、.SDF、.DAT の各ファイル形式はすべてバイナリ形式で定義されています。このバイナリ光源ファイルには、まずヘッダー構造があり、それに続いて各光線のデータが記述されています。SPEOS と Zemax の光源ファイルでは、ヘッダー情報が互いに異なり、光線データも互いに異なる順序で定義されています。
1.1 SPEOS の光源ファイル形式
SPEOS のヘッダー構造は 28 バイトで、7 つの倍精度値を記述しています。各値は次のとおりです。
1: 放射パワー
2、3、4、5、6: 光源ファイルのバージョン
7: 測光パワー
ヘッダーに続いて各光線のデータが定義されています。各光線のデータは次の 8 つの倍精度値です。
- X
- Y
- Z
- L
- M
- N
- 波長
- エネルギー
X、Y、Z は光線の位置を示します。
L、M、N は光線の方向を示します。
波長は光線の波長です。
エネルギーは、光線が持つエネルギーをワットの単位で記述した値です。
1.2 Zemax の光源ファイル形式
Zemax の光源ファイル形式については、ヘルプ ファイルの以下のセクションに説明があります。
「[設定] (Setup) タブ」→「[エディタ] (Editor) グループ ([設定] (Setup) タブ)」→「[ノンシーケンシャル コンポーネント エディタ] (Non-sequential Component Editor)」→「ノンシーケンシャル光源」→「[光源(ファイル)] (Source File)」
この記事では、この形式を簡単に説明します。Zemax のバイナリ光源ファイルは 208 バイトで、構造は次のとおりです。
説明が 100 バイトで、他のデータのサイズは 4 バイトです。独自の光源ファイルの作成では、次の点に注意が必要です。
ray_format_type は、光束のみの形式では 0、スペクトル カラー形式では 2 に設定する必要があります。その他の形式タイプはサポートされていません。ray_format_type が 0 の場合にのみ、ワットのときは flux_type を 0 に、ルーメンのときは flux_type を 1 に設定します。スペクトル カラー形式の場合は、光束をワット単位で、波長を μm 単位で表します。
ヘッダーの後には光線構造が続きます。光線構造の形式は、光線の形式タイプに依存しています。
単色光源の光線形式は次のとおりです。
SPEOS の光源データ同様、X、Y、Z は光線の位置を示し、L、M、N は光線の方向を示します。Zemax の光源ファイルにある光束は、SPEOS におけるエネルギー データに相当します。
多色光源の光線形式は次のとおりです。
1.3 SPEOS と Zemax のスペクトル ファイル形式
光源ファイルと共にスペクトル ファイルが提供されることがあります。スペクトル ファイルも変換して使用できるように、この部分について触れます。どちらでもスペクトル ファイルはテキスト形式です。
SPEOS のスペクトル ファイルは拡張子が *.spectrum です。記述されている情報は、ヘッダー、名前、波長とその重みの総数、各波長とその重みです。
Zemax のスペクトル ファイルは .SPCD を拡張子として、<objects>\Sources\Spectrum Files フォルダに置かれています。このファイルを使用して、光源色のモデリングに使用するユーザー定義スペクトルを記述します。ファイル形式としては、次の形式による値のペアです。
#コメント (省略可) 波長 1 重み 1 波長 2 重み 2 (以下同様)
波長の値はマイクロメートルの単位で表し、昇順で記述する必要があります。重みの値は無次元の相対パワー単位で表します。3 ペア以上、200 ペア以下の範囲でデータ点を定義できます。
Zemax から SPEOS への変換
このセクションでは、Python コードを使用して Zemax の光源ファイルを SPEOS の光源ファイルに変換する方法を説明します。
2.1 Python コードの実行
Python で IDLE を開きます。この記事で使用している Python のバージョンは 3.9.2 です。
[File] → [Open] をクリックします。
この記事に添付されている zip ファイルから Python ファイル Convert_ZEMAX_to_SPEOS.py を選択します。
この Python コードを実行する前に、変換する光源ファイルへのパスを必ず変更しておきます。
必要に応じて、ZemaxSpectrumPath をスペクトル ファイルへのパスに変更します。
グラフィック ユーザー インターフェースでファイルを選択する場合は、次の 3 行のコメントアウトも解除します。
次のように [Run Module] をクリックします。
この記事の添付ファイルには、この変換を紹介する次の光源ファイルが用意されています。
rayfile_LCB_G6SP_100K_20210701_Zemax.dat.
このファイルの拡張子 (.DAT) から、この光源ファイルが単色であることがわかります。.SDF ファイルも変換できます。
この変換処理では、重要な情報が出力されます。変換された光線ファイルは、元の光源ファイルと同じディレクトリに保存されます。
2.2 Zemax での角度分布と位置分布の結果
変換前と変換後の光源間で整合性を確認するために、次のように Zemax OpticStudio に光源ファイルがインポートされ、光線追跡が実行されます。
光源ファイルは、光源ファイルのリストから選択できるように、\Document\Zemax\Objects\Sources\Source Files フォルダに配置されます。
光源のタイプとして [光源 (ファイル)] (Source File) を選択します。
角度分布を観測するディテクタ (極) が作成されます。このディテクタの最大角度は 180°に設定され、半径方向と角度方向のピクセル数はそれぞれ 180 に設定されます。
ディテクタ (矩形) も作成され、Z 方向のサイズは 1 mm、X 方向半幅と Y 方向半幅はそれぞれ 10 mm、X 方向ピクセル数と Y 方向ピクセル数はそれぞれ 100 に設定されます。この設定により、この光源 (ファイル) から 1 mm 離れた位置で、その光パターンを確認できます。
Here are the angular and position distributions.
2.3 SPEOS での角度分布と位置分布の結果
SPEOS でのセンサ パラメータは次のとおりです。
SPEOS で得られた角度分布と位置分布を次に示します。
SPEOS から ZEMAX への変換
このセクションでは、Python コードを使用して SPEOS の光源ファイルを ZEMAX の光源ファイルに変換する方法を説明します。SPEOS の光源ファイルには必ず波長の情報が記述されているので、生成される Zemax のファイル タイプは必ず .SDF です。
3.1 Python コードの実行
ここでも、IDLE Shell 3.9.2 を使用してコードを実行します。
Python ファイル Convert_SPEOS_to_ZEMAX.py を選択します。
つづいて、ファイル パスを rayfile_LCB_G6SP_100k_20210701_Speos.RAY へのパスに変更します。
必要に応じて、SpeoSpectrumPath をスペクトル ファイルへのパスに変更します。
[Run Module] をクリックします。
Python のウィンドウに警告もエラーも表示されていなければ、普通はファイルが正常に変換されています。
3.2 SPEOS での角度分布と位置分布の結果
上記の例と同様のセンサ パラメータが適用されてシミュレーションが実行されます。光源の角度分布と位置分布は、上記の変換結果と同じになります。
3.3 ZEMAX での角度分布と位置分布の結果
生成された光源ファイルが <data>\Objects\Sources\Source Files フォルダに配置され、光源ファイルとして選択されます。
変換されたスペクトル ファイル LCB_G6SP_20210701_spectrum.spcd が <data>\Objects\Sources\Spectrum Files フォルダにコピーされ、スペクトル ファイルとして選択されます。
上記と同じディテクタ設定が適用されます。
この光源の角度分布と位置分布を次に示します。
3.4 その他の注意事項
.ray ファイルを生成するソフトウェアは SPEOS だけではありません。
警告メッセージとして「警告: ファイル サイズが 28 + 8 * 4 * N ではありません。SPEOS の .ray ファイルであることを確認してください。 (Warning: File size is not 28 + 8 * 4 * N ? Please verify if it is a SPEOS .ray file.)」が表示された場合は、光源ファイルの変換で一部の光線が失われている可能性があります。
コメント
サインインしてコメントを残してください。