3章:光線追跡計算プログラム
作成2016.08.29
- 元のプログラム
(1)使用環境の変化により修正を繰り返しています。
(2)VBA(Visual Basic Application)から呼び出すDLL(ダイナミックリンクライブラリ)
4章:光線追跡計算プログラムのソース公開と修正をベースにしました。
- 光線追跡計算プログラムのダウンロード
光線追跡計算プログラムは以下からダウンロードできます。
ダウンロード後は解凍してから使用してください。
光線追跡計算プログラム]をダウンロードする。
解凍すると「光線追跡」フォルダーがあります。
「光線追跡」フォルダー内に
(1)光線追跡実行ファイルフォルダー
(2)光線追跡.sln
(3)光線追跡フォルダー
(4).vsフォルダー
があります。
注(1)光線追跡.slnを起動して、ビルドすると「光線追跡.VC.db」「光線追跡.VC.VC.opendb」「ipchフォルダー 」「Debugフォルダー 」「Releaseフォルダー 」が生成されますが容量が大きいので削除しました。
注(2)ソースコードは「光線追跡」フォルダーの「光線追跡.cpp」ファイルのみに記載されています。
- 実行ファイル群
「光線追跡実行ファイル 」フォルダー内に以下のファイルがあります。
(1)光線追跡.exe:コンソールアプリ
(2)VBA_C_W10光線追跡.xls:VBAアプリ
(3)flag.txt:コントロールフラグファイル
(4)IN_FM.txt:計算条件ファイル
(4)IN_FM.txt2:計算条件ファイル
(5)OUT_M.xls:計算結果ファイル
注(1) 「光線追跡実行ファイル 」フォルダーの保存場所の制限は無く、任意の場所に保存して実行できます。
- 操作方法
(1)近接露光.exeをダブルクリックします。
(2)コンソールウインドウが表示されます。(文字等の表示はありません。)
(3)VBA_C_W10光線追跡.xlsをダブルクリックします。
注(1) VBA_C_W10光線追跡の操作はかなり複雑であり、使いこなすのは試行錯誤が必要となります。
注(2)条件設定は、光の不思議と応用の26章〜38章を参照する必要があります。
注(3)「IN_FM」と「IN_FM2」は「 IN_FM (演習1)」と「 IN_FM2 (演習1) 」の値がデホルトで設定されています。これは、光の不思議と応用32章の図32-2 タイプA等倍光学系の配置となっています。
(4)「スポットダイアグラム計算実行」ボタンを押します。
(5)スポット要約シートが表示されます。
(6)完全等倍でテレセントリックであることが理解できます。
(7)光線図シートをクリックします。
(8)光線が通過する範囲が理解できます。
(9)シート「スポット図」をクリックします。
(10)シート「球面レンズ作図(連動用)」をクリックします。
(11)「球面レンズ作図実行」ボタンを押します。
(12)シート「作図」が表示されます。
(13)シート「操作」の「波面収差計算実行」ボタンを押します。
(14)シート「OUT_M」に波面収差計算結果が表示されます。
*これから最大収差は波長656.3nmの円周方向に発生することがわかります。
V[0] | Y[NUMB-1] | V[NUMB-1] | AB |
-5.00E-02 | 8.06E-03 | 5.00E-02 | 3.50E-01 |
-4.38E-02 | 7.48E-03 | 4.38E-02 | 2.76E-01 |
-3.75E-02 | 6.75E-03 | 3.75E-02 | 2.08E-01 |
-3.13E-02 | 5.89E-03 | 3.13E-02 | 1.48E-01 |
-2.50E-02 | 4.89E-03 | 2.50E-02 | 9.66E-02 |
-1.88E-02 | 3.78E-03 | 1.88E-02 | 5.52E-02 |
-1.25E-02 | 2.58E-03 | 1.25E-02 | 2.48E-02 |
-6.25E-03 | 1.30E-03 | 6.25E-03 | 6.24E-03 |
0.00E+00 | 0.00E+00 | 0.00E+00 | 8.66E-11 |
6.25E-03 | -1.30E-03 | -6.25E-03 | 6.24E-03 |
1.25E-02 | -2.58E-03 | -1.25E-02 | 2.48E-02 |
1.88E-02 | -3.78E-03 | -1.88E-02 | 5.52E-02 |
2.50E-02 | -4.89E-03 | -2.50E-02 | 9.66E-02 |
3.13E-02 | -5.89E-03 | -3.13E-02 | 1.48E-01 |
3.75E-02 | -6.75E-03 | -3.75E-02 | 2.08E-01 |
4.38E-02 | -7.48E-03 | -4.38E-02 | 2.76E-01 |
5.00E-02 | -8.06E-03 | -5.00E-02 | 3.50E-01 |
0次 | -4.90E-07 |
1次 | -1.65E-16 |
2次 | 4.00E-01 |
3次 | 5.10E-16 |
4次 | -5.56E-02 |
5次 | -3.31E-16 |
6次 | 6.06E-03 |
*上記表は波長656.3nmの円周方向の計算結果です。
*最大収差はNA0.05の位置で0.35λです。
*収差の分析結果は2次の焦点収差で0.4λです。
(15)シート「レンズ間隔最適化計算実行」ボタンを押します。
(16)シート「OUT_M」にレンズ間隔最適化計算結果が表示されます。
N次元Gauss-Newton法によるレンズ間隔(D)最適化計算結果
No | E | Xa | Xs | Ya | Ys | D(0) |
1 | 0.003778 | 8.98482E-07 | 0.00382 | 0 | 0 | 96.247 |
2 | 0.003570 | 5.4499E-07 | 0.00361 | 0 | 0 | 96.259 |
3 | 0.003547 | 4.27119E-07 | 0.00359 | 0 | 0 | 96.263 |
4 | 0.003544 | 3.87847E-07 | 0.00359 | 0 | 0 | 96.264 |
5 | 0.003544 | 3.74764E-07 | 0.00359 | 0 | 0 | 96.265 |
6 | 0.003544 | 3.70416E-07 | 0.00359 | 0 | 0 | 96.265 |
7 | 0.003544 | 3.68953E-07 | 0.00359 | 0 | 0 | 96.265 |
8 | 0.003544 | 3.68492E-07 | 0.00359 | 0 | 0 | 96.265 |
9 | 0.003544 | 3.68358E-07 | 0.00359 | 0 | 0 | 96.265 |
10 | 0.003544 | 3.68282E-07 | 0.00359 | 0 | 0 | 96.265 |
*軸間距離D(0)=96.265mmが最適であることがわかります。
(17)シート「IN_FM」のD18セルの値を96.265に変更します。
(18)シート「操作」 の「スポットダイアグラム計算実行」ボタンを押します。
(19)シート「スポット図」をクリックします。
*スポット範囲が小さくなっているのが確認できます。
(20)シート「操作」の「波面収差計算実行」ボタンを押します。
(21)シート「OUT_M」に波面収差計算結果が表示されます。
*波長656.3nmの円周方向の収差は以下に変化します。
V[0] | Y[NUMB-1] | V[NUMB-1] | AB |
-5.00E-02 | 6.26E-03 | 5.00E-02 | 2.82E-01 |
-4.38E-02 | 5.90E-03 | 4.38E-02 | 2.24E-01 |
-3.75E-02 | 5.40E-03 | 3.75E-02 | 1.70E-01 |
-3.13E-02 | 4.76E-03 | 3.13E-02 | 1.21E-01 |
-2.50E-02 | 3.99E-03 | 2.50E-02 | 7.94E-02 |
-1.88E-02 | 3.11E-03 | 1.88E-02 | 4.55E-02 |
-1.25E-02 | 2.13E-03 | 1.25E-02 | 2.05E-02 |
-6.25E-03 | 1.08E-03 | 6.25E-03 | 5.16E-03 |
0.00E+00 | 0.00E+00 | 0.00E+00 | 8.66E-11 |
6.25E-03 | -1.08E-03 | -6.25E-03 | 5.16E-03 |
1.25E-02 | -2.13E-03 | -1.25E-02 | 2.05E-02 |
1.88E-02 | -3.11E-03 | -1.88E-02 | 4.55E-02 |
2.50E-02 | -3.99E-03 | -2.50E-02 | 7.94E-02 |
3.13E-02 | -4.76E-03 | -3.13E-02 | 1.21E-01 |
3.75E-02 | -5.40E-03 | -3.75E-02 | 1.70E-01 |
4.38E-02 | -5.90E-03 | -4.38E-02 | 2.24E-01 |
5.00E-02 | -6.26E-03 | -5.00E-02 | 2.82E-01 |
0次 | -4.88E-07 |
1次 | -6.03E-16 |
2次 | 3.31E-01 |
3次 | 2.40E-15 |
4次 | -5.55E-02 |
5次 | -1.90E-15 |
6次 | 6.04E-03 |
*上記表は波長656.3nmの円周方向の計算結果です。
*最大収差はNA0.05の位置で0.282λです。
*収差の分析結果は2次の焦点収差で0.331λです。
(22)「コンソール終了」ボタンを押すとflag.txt(コントロールフラグファイル)に文字コード‘Z’が書き込まれます。
(23)文字コード‘Z’を認識して光線追跡.exe(コンソールアプリ)が終了します。
(24)最後にVBA_C_W10光線追跡.xls(VBAアプリ)を終了します。
- 光線追跡プログラムまとめ
(1) Windows10アップグレード後から、VBA(Visual Basic Application)から呼び出すDLL(ダイナミックリンクライブラリ)が動作しなくなりました。
(2)対応策として、 DLL(ダイナミックリンクライブラリ)をコンソールアプリケーションに変更しました。
(3) 「近接露光実行ファイル 」フォルダーの保存場所の制限は無く、任意の場所に保存して実行できます。
(4)コンソールアプリケーションの起動はダブルクリックが必要となります。
(5)コンソールアプリケーションの終了はflag.txt(コントロールフラグファイル)で行うことができます。
(6)光線追跡の計算条件の解説は光の不思議と応用の26章〜38章を参照願います。
*光線追跡プログラムの作成は大変苦労しました。使用方法も難しく、簡単にはうまく説明できません。
*光学条件の最適化は特に難しく、多くのノウハウが必要です。
4章:照度分布計算プログラムに行く。
トップページに戻る。