S-Plane チュートリアル(パート A):Cooke Triplet の自動パラメータスキャン
1. はじめに
このチュートリアルでは、OghmaNano の パラメータスキャンツール を用いた レンズ最適化 および 光学設計 の実用的なワークフローを示します。 古典的な Cooke triplet レンズ系 に焦点を当て、表面曲率や要素厚さなどの主要な光学パラメータを 系統的に変化させ、それらが結像性能に与える影響を解析します。 大量の レイトレースシミュレーション を用いて設計空間を探索し、 RMS スポット半径、スポットサイズと重心、スポットの長軸および短軸半径、 スポットの楕円率と方位、包囲エネルギー半径(EE50、EE80、EE90)などの指標により性能を定量化し、 3D レイトレースビューにおける光線経路の視覚的確認も併用します。 このアプローチは、光学系最適化、感度解析、 および公差解析のための再現可能な枠組みを提供し、初期段階のレンズ設計や 実際の光学トレードオフの迅速な評価に直接適用できます。
2. OghmaNano で Cooke triplet シミュレーションを起動する
このチュートリアルでは、あらかじめ設定された Cooke triplet レンズシミュレーションを起動するところから始めます。 まず、Windows のスタートメニューから OghmaNano を起動します。メインウィンドウで New simulation ボタンをクリックしてシミュレーションライブラリを開きます。これは 図 2a–b に示されています。 デバイスカテゴリの一覧から、Ray tracing をダブルクリックします。S-plane 光学デモが表示されたら、Cooke triplet の例を見つけてダブルクリックし、 すぐに実行可能なレンズ系を開きます。
💡 ヒント: 最良の性能を得るには、このシミュレーションを
C:\ のようなローカルドライブに保存してください。このチュートリアルでは、大規模なパラメータスキャンを実行し、レイトレースデータや
3D メッシュファイルを繰り返しディスクへ書き出します。これにより小さな読み書き操作が大量に発生し、
ネットワーク、USB、またはクラウド同期フォルダ
(例:OneDrive)では大きなボトルネックになる可能性があり、シミュレーションが
大幅に遅く なることがあります。
3. Cooke triplet シミュレーションを開き、S-plane エディタで確認する
Cooke triplet シミュレーションを保存すると、OghmaNano のメインウィンドウが開き、 ?? のように表示されるはずです。 3D ビューでは、古典的な triplet 配置、すなわち 緑色 の光源、赤色 の第 1 レンズ要素、 青色 の絞り、橙色 の第 2 レンズ要素、黄色 の第 3 レンズ要素、 そして 紫色 の検出器面を見ることができます。
次に、左側ツールバーの S-plane ボタンをクリックして、S-plane エディタを開きます。これは ?? に示されています。 この表にはレンズ要素とそれらのパラメータ(材料、表面半径、厚さ、直径など)が一覧表示されます。 OghmaNano の他のシミュレーションと同様に、Run(再生)ボタン(または F9)を押してこのモデルを実行し、Output タブで結果を確認できますが、このチュートリアルでは個々のシミュレーションの実行自体は主な対象ではありません。次の手順では、このエディタを使ってどのパラメータをスキャンするかを選択します。
4. 自動化
4.1 スキャンウィンドウを開く
このチュートリアルでは、Automation ツールを使って系統的なパラメータスキャンを実行します。 これらのツールには、メインウィンドウの Automation リボンからアクセスします (?? を参照)。 Parameter scan ボタンをクリックしてパラメータスキャンウィンドウを開きます (?? を参照)。 デフォルトでは new という名前の項目が表示されます。これをダブルクリックすると個別の パラメータスキャンエディタが開きます (?? を参照)。
パラメータスキャンツールの詳細は、マニュアルの parameter scan で説明されています。 このチュートリアルの目的では、パラメータスキャンウィンドウを使うと New ボタンにより複数の独立したスキャンを定義および管理でき、 それぞれが異なる自動化されたパラメータ空間探索に対応することを知っていれば十分です。
最後の図では、すでに 1 つのスキャンが設定されていることが分かります。
変数名 Splane.object.lens1 (b).thickness は、
第 1 レンズ要素の 後面 の厚さをスキャンしていることを示しており、
スキャン値はメートル単位で明示的に指定されています。
4.2 スキャンの編集
この作業では、追加のスキャン行を加えて、複数のレンズ要素に対してパラメータをスキャンします。 パラメータスキャンエディタの プラス ボタンをクリックして、新しいスキャン行を作成します。これは ?? に示されています。 これにより、Parameter to change、Values、Operation の各列を持つ新しい行が表に追加されます。 この 2 行目を使って追加のスキャンを定義し、同じ自動実行の中で複数のレンズパラメータを変化させます。
編集前に正しいスキャン行が選択されていることを確認することは非常に重要です。 新しい行をクリックしてハイライト表示し、その後 三点 ボタンをクリックしてパラメータを選択します。 これにより、?? に示す パラメータ選択ダイアログが開きます。 object → Lens 2 (b) とたどり、Thickness を選択します。これは 第 2 レンズ要素の後面厚さに対応します。選択したら OK をクリックします。
両方のスキャン行を設定した後、パラメータスキャンウィンドウは ?? に示す最終設定のようになるはずです。 この時点で、スキャンは自動実行中に 2 つの異なるレンズ要素の厚さを同時に変化させるよう設定されています。
💡 ヒント: OghmaNano のオブジェクトは、三次元光学ワールド の一部として存在します。 S-plane は、この 3D ジオメトリの 一次元・光学専用表現 です。 ?? に示されたパラメータツリーは、 光学パラメータを選択してスキャンするための便利な方法を提供しますが、これらの S-plane 値は 最上位の data ツリーで定義された基礎となる 3D オブジェクトから 導出 されています。
?? に示すように パラメータスキャンが設定できたら、Run ボタンをクリックします。 これにより、スキャンで定義されたすべてのシミュレーションが実行されます。 この場合、OghmaNano はスキャンパラメータのすべての組み合わせを実行します。すなわち、 第 1 スキャン行の各値に対して、第 2 スキャン行で定義されたすべての値を実行します。その結果、 光学系のすべてのパラメータ組合せを完全に探索することになります。
スキャンが終了したら、?? に示す
Output タブに切り替えます。
出力は、スキャンされたパラメータを反映したディレクトリツリーとして整理されています。
最上位では、1.1e-2、1.2e-2、
1.3e-2、および 1e-2 とラベル付けされたフォルダが、
最初にスキャンした第 1 パラメータの値に対応します。これらのディレクトリの 1 つに入ると、
?? に示すように、
第 2 スキャンパラメータの値に対応するサブディレクトリが現れます。
各末端ディレクトリは、手動で 1 回実行した単一シミュレーションに相当する個別の
シミュレーション実行を表します。これらのディレクトリ内には、device.csv のようなファイルがあり、
これには光学系の三角形分割された 3D ジオメトリが含まれています。また、ray_trace
出力には、その特定のパラメータ組合せに対する追跡済み光線が保存されています。
これらは、?? および
?? に示すように、
直接可視化できます。
これにより、スキャンされたパラメータ空間内の特定点に対応する個々のシミュレーションの挙動を
確認し、解析することができます。
4.3 マルチプロットファイル
主スキャン出力ディレクトリ(??)には、multiple-curves の付いた
カラフルなアイコンがいくつかあることに気付くでしょう。
これらはスキャン生成ファイルの特別な種類を表しています。単一のデータファイルではなく、
パラメータスキャンツリー全体で生成されたデータへのリンク集合です。
たとえば、all_triangles.csv は全スキャン点で生成されたすべての三角形メッシュにリンクし、
ray_trace はスキャン中に生成されたすべてのレイトレース出力にリンクします。
all_triangles.csv をダブルクリックすると、メッシュビューアが開きます
(?? を参照)。
ウィンドウ下部のスライダを使うと、生成された個々のシミュレーションを順に切り替えることができます。
スライダを動かすと、レンズジオメトリは現在のパラメータ組合せを反映して更新され、
アクティブなシミュレーションパスがウィンドウ下部に表示されます。
図の例では、パスは
1.2e-2 / 1.4e-2 というパラメータ組合せを示しており、
これは 2 つのスキャンされたレンズ厚さ値(メートル単位)に対応します。
同様に、ray_trace をダブルクリックすると、レイトレースビューアが開きます
(?? を参照)。
このビューアには通常 2 つのスライダがあります。上側のスライダはスキャンツリー内の異なるシミュレーションを切り替え、
下側のスライダは波長を切り替えます。
これにより、パラメータ空間と波長の両方にわたって光線経路がどのように変化するかを確認できます。
?? に示す
2 つ目の例では、異なる波長範囲で見た同じスキャンを示しています。
最初に何も表示されない場合は、プロットテーブルの プラス ボタンをクリックして
プロットするファイルを追加する必要があるかもしれません。
all_triangles.csv の表示:パラメータスキャン全体で生成された三角形メッシュを順に切り替える。
これらのスキャンメタファイルのさらなる例として、detector0 出力フォルダに移動してそれをダブルクリックします
(?? を参照)。
ここでも、異なる検出器出力に対応する multiple-curves 項目が表示されます。もし
detector_efficiency0.csv をダブルクリックすると、OghmaNano は
?? に示す
プロットを開きます。
このプロットは、スキャン中に探索された各レンズジオメトリについて 1 本の曲線を用いて、
系がどれだけの光を透過するか(百分率)を波長の関数として示します。
この例では光学メッシュ点が 3 点しかないため、各曲線には 3 つの波長サンプルしか含まれないことに注意してください。
detector0 出力フォルダ。
detector_efficiency0.csv:スキャンで探索された各レンズジオメトリにつき 1 本の曲線。
この節では、OghmaNano が multiplot メタファイルを用いて パラメータスキャンの結果をどのように整理するかを見てきました。これは、 データを複製することなく大規模なシミュレーション集合を探索するための構造化された方法を提供します。 少数の対話的ビューアを用いてメッシュ、レイトレース、および検出器出力を順に切り替えることで、 パラメータ空間全体にわたるジオメトリ、波長、 および光学性能の変化を効率的に確認できます。このアプローチにより、大規模スキャン研究が 扱いやすくなり、多数の設計バリエーションにわたる光学挙動の 定性的確認と定量的比較の両方が可能になります。
5. オプティマイザ
前節では、パラメータスキャンツールを使って多数のシミュレーションを総当たりで生成し、 光線経路、ジオメトリ、および検出器出力を見ることで直接確認しました。 これは物理的直観を養ううえで非常に有用ですが、一方で大量のファイルを生成し、 かなりのディスク容量を消費し、シミュレーション全体のワークフローを遅くします。 多くの場合、完全な出力データよりも定量的性能指標に注目した、 パラメータ空間の高速スイープが必要になります。
そのために optimizer を使用します。パラメータスキャンエディタに戻り (?? を参照)、 Fast optimizer ボタンをクリックします。 このモードでは、詳細な出力ファイル(レイトレース、メッシュなど)の生成が無効化されますが、 基礎となるシミュレーションは引き続き実行され、統計的な指標が収集されます。 重要なのは、以前のスキャンで生成された出力ファイルには手が加えられず、引き続き確認できることです。 オプティマイザは単に新しい出力ファイルの作成を避けるだけです。
Fast optimizer を有効にした後、シミュレーションを再実行します。完了したら Output タブを開きます
(?? を参照)。
すると optimizer_output.csv という新しいファイルが表示されます。
完全スキャンとは異なり、新しいディレクトリツリーは作成されません。オプティマイザの主な結果は、
集約された性能データを含むこの単一の CSV ファイルです。
optimizer_output.csv ファイル。
optimizer_output.csv をダブルクリックし、好みの表計算ソフト
(Excel、LibreOffice、または CSV を読める任意のツール)で開きます。内容は
?? に示されています。
最初の列にはスキャンされたパラメータ(この場合は S-plane レンズ厚さ)が並び、
その後に各シミュレーションから抽出されたさまざまな定量的性能指標が続きます。
これらの指標には、x および y におけるスポット位置の標準偏差、 スポット半径の標準偏差(r_std)、スポット分布の長軸および短軸 (sigma_major、sigma_minor)、スポットの方位角 (spot_theta)、包囲エネルギー半径(例:EE50、EE80、EE90)、 および関連する良さの尺度が含まれます。 これらを組み合わせることで、スキャンされたパラメータ空間内のあらゆる点に対する 光学性能の簡潔な定量要約が得られます。
optimizer_output.csv の内容。
データは表形式なので、簡単に並べ替えやフィルタリングを行って最適設計を特定できます。
たとえば、?? では
表計算シートがスポット半径の標準偏差である r_std によって並べ替えられています。
これにより、どのレンズ厚さの組合せが最小スポットを生むかがすぐに分かります。
この場合、第 1 レンズ厚さ 0.013、第 2 レンズ厚さ
0.0106 です。
6. オプティマイザの結果を調べる
系統的なパラメータスキャンとオプティマイザの両方を実行したので、結果をより詳細に調べることができます。 オプティマイザを使うと、パラメータ空間の有望な領域をすばやく特定でき、 完全スキャンを使うと、対応するシミュレーションをより物理的かつ視覚的な方法で確認できます。
最初の手順として、レイトレース出力に戻り、 オプティマイザが特定した最小スポットサイズ解に対応するシミュレーションを見つけることができます。これは ?? に示されています。 レイトレースビューアのセレクタバーを使うと、最小スポットを生んだパラメータ組合せに到達するまで、 シミュレーションツリー内を移動できます。
その後、シミュレーションツリーをさらに掘り下げて、異なるパラメータ選択に対して 光学系がどのように振る舞うかを比較できます。たとえば、 ?? は準最適設計に対応する比較的小さく良好に集光したスポットを示し、一方で ?? はスキャンされたパラメータ空間内の別の点によって生じた、より大きく最適性の低いスポットを示しています。
これらを合わせると、典型的なワークフローが示されます。まずオプティマイザを実行して パラメータ空間をすばやく探索し、有望な領域を特定します。その後、オプティマイザを無効にして、 関心領域で完全スキャンを実行します。これにより、物理的に確認できる詳細な出力 ― レイトレース、ジオメトリ、検出器画像 ― を生成し、 解が期待通りに振る舞い、設計目標を満たしていることを確認できます。
7. 代替ビーム形状を用いたシミュレーション高速化
前節では、パラメータスキャンとオプティマイザの両方を実行するために square ビームを用いました。 これは妥当なデフォルトですが、square ビームには多数の光線が含まれるため、 シミュレーションが大幅に遅くなることがあります。多くの場合、系の挙動を理解するのに 完全な square ビームプロファイルは不要であり、より単純なビーム形状で十分です。
ビーム形状を変更するには、?? に示すように 3D ビュー内の光源を右クリックし、 Edit object を選択します。光源エディタで Configure タブに移動し (?? を参照)、 Beam shape を Square から Star に変更します。 得られる光線パターンは ?? に示されています。
この状態でオプティマイザを再実行すると、シミュレーションがより短時間で完了することに気付くでしょう。 これは、star ビームが完全な square ビームよりはるかに少ない光線で、 それでも光学系を効果的にサンプリングできるためです。 また、Cross ビーム形状を使用するオプションもあり、これは 2 つの主軸に沿った非点収差を独立に調べるのに有用で、計算コストをさらに低減します。 したがって、これらの代替ビーム形状は探索的スキャンや 最適化実行を高速化するための実用的な方法です。
8. まとめ
このチュートリアルでは、OghmaNano の S-plane 光学ワークフローを用いて、 古典的な Cooke triplet レンズ系を系統的に調べ、最適化する方法を見てきました。 事前定義された例から開始し、S-plane エディタが 完全な三次元光学系をコンパクトかつレイ光学に適した形で表示し、 すべての S-plane パラメータが基礎となる 3D ジオメトリから 一貫して導出されることを学びました。
次に、parameter scan ツールを用いて、複数のレンズパラメータを同時に変化させ、 得られる光学系のすべての組合せを実行することで、レンズ設計空間の総当たり探索を行いました。 これにより、個々のシミュレーションを詳細に確認し、光線経路やジオメトリを可視化し、 レンズ厚さや間隔の変化が系の性能にどのように影響するかについて 物理的直観を得ることができました。
より高速な探索を可能にするため、fast optimizer を導入しました。これは 重い出力生成を無効化する一方で、定量的性能指標を 1 つの CSV ファイルに集約します。RMS スポットサイズ、包囲エネルギー、スポット 楕円率などの指標を解析することで、最適なパラメータ組合せを効率的に特定し、 それらを特定のレンズジオメトリに結び付けることができました。
最後に、代替ビーム形状(star および cross)が、 主要な光学挙動を捉えつつ計算コストを大幅に削減できることを示しました。 そのため、これらは最適化および探索的スキャンに非常に適しています。
これらのツールを組み合わせることで、実用的かつ再現可能な最適化ループが形成されます。すなわち、 オプティマイザを用いてパラメータ空間内の有望な領域を特定し、その後 詳細出力付きの完全パラメータスキャンに切り替えて光線挙動を確認し、 物理性能を検証します。このワークフローは、単純なレンズ系からより複雑な光学設計へと 自然に拡張でき、OghmaNano における系統的レンズ最適化のための 強固な基盤を提供します。
💡 次のステップ: このチュートリアルを終えたら、OghmaNano の他の 光学系ワークフローも試してみるとよいでしょう。たとえば、 Cooke triplet レンズチュートリアル、 200 mm 単焦点レンズの例、 または マイクロレンズおよび光学フィルタリングのデモ を参照し、同じ最適化および解析ツールが異なる光学系にどのように適用されるかを確認してください。