DOEを製造するためのデータを出したい!

CODE Vでは面に回折特性を設定することができます。
この面を通過する光線は回折特性として設定した位相差が付加されます。
この付加する位相差は多項式で表現します。この位相多項式の係数は最適化することもできます。

一方、回折光学素子の表面はキノフォーム形状(のこぎり形状)やバイナリ形状(ステップ形状、階段形状)、サイン波形状になります。回折効率を向上させるためにキノフォーム形状で製造することが多いと思います。

このとき、CODE Vで設計した回折光学素子(DOE)やホログラフィック光学素子(HOE)を製造するためのサグ量データを製造担当に渡す必要がありますよね?

CODE Vのパラメータである単なる位相多項式の係数では実際にDOEを製造することはできません。DOE、HOEを製造するためにはキノフォーム形状のサグデータが必要です。
サグデータがあれば、その回折光学素子が製造可能かどうか判断できます。

では、
CODE Vで設計したDOE、HOEのサグ量データを取得する方法はないのでしょうか?
また簡単にキノフォーム形状を確認する方法はないのでしょうか?

これが今回、攻略すべき問題点です。

こんなときは、DOEのサグデータを算出するマクロ “DOESAG.seq ”が便利です。

攻略のポイント!

  • DOEやHOEは回転対称ですか?
  • 製造する形状はキノフォームですか?
まず簡単にサンプルとなるモデルを作成してみます。
RES CV_LENS:doublet
DIF S1 DOE; HCT S1 R  
HOR S1 1
! doubletサンプルモデル読み込み
! 第1面に回転対称DOEの回折特性を設定
! 回折次数を1
DOEのパラメータは最適化(AUT)オプションで決めてしまいます。
! 第1面のDOEのR**2、R**4のパラメータを変数化
HCC S1 C1 0; HCC S1 C2 0
AUT; GO      ! 最適化
以下のようなモデルになりました。


※クリックで拡大表示します。

ではさっそくDOESAGマクロを実行してみましょう。

メニューからツール>マクロマネージャから、サンプルマクロの下の回折光学の中で
“C:\CODEV*****\macro\doesag.seq”を選択して実行ボタンを押せば下のような設定画面が現れます。

毎回この作業が面倒に感じる方は“お気に入りに追加”か“ツールバーに指定”、“メニューバーに追加”をすれば、次回からは簡単にこのマクロにアクセスできます。

設定しなければいけないパラメータはHOE/DOE Surface Number、つまり回折特性の設定されている面の番号だけです。今回のモデルであれば1と入力してください。

OKをクリックします。
するとすぐに以下のようなグラフィックが表示されます。

赤のグラフがDOEの位相多項式カーブです。緑が1位相ステップで赤の位相多項式を区切ったカーブです。青がその区切りでサグ量を平面に付加したときのカーブです。(キノフォームの折り返しのところが斜めになっているのは、プロット上だけの問題です。出力される数値データは適切なデータです。)

キノフォームの深さは面特性の回折特性で指定する規格化波長になります。

テキスト出力を見てください。

まずサグ量を計算するための精度に関する情報が表示されています。Steepest radial phase slopeが位相多項式のうち最も大きな傾きの値です。1/4 wave radial sampling incrementはサグ量を計算するサンプリング間隔です。何も指定しない場合は最も大きな傾きのポイントにおいて1/4波長の高さ、つまりSteepest radial phase slopeの逆数の1/4となっています。位相多項式が急激に変化するようなDOEでない限り、ここに注意をはらう必要はありません。この値で不安な場合はマクロを実行するときにRadial Sampling Incrementを小さく調節してください。

次にRadial sampling incrementで高さ(面頂点から放射方向の高さ)をサンプリングしながら、各ポイントでのDOEによって付加される位相差を計算しています。

続いて付加する位相差が規格化波長の整数倍になっているポイントに関する情報です。Phase belowとPhase aboveの間で付加する位相差が規格化波長の整数倍であるPhase crossedになります。さらにInterpolated Rの高さで付加する位相差が規格化波長の整数倍になり、それはPhase belowとPhase aboveの間の割合Frac. of dRのポイントです。

最後にサグ量データの情報が保存されているバッファの番号を出力します。Phase modulo 1 wave is in bufferにキノフォームの位相差データ、Sag for diamond turning is in bufferに面の形状にキノフォームの位相差データを追加した実質のサグ量情報が出力されています。この情報はBUF LISコマンドで内容を確認できますし、BUF EXPコマンドでファイルに出力することができます。マクロパックにあるマクロを利用すれば簡単にExcel上でそのデータを確認することができます。

CODE Vの回折光学素子についてより詳しく知りたい場合、「FAQ」をご覧ください。
FAQの閲覧・ダウンロードにはログインアカウントとパスワードが必要です。
ユーザー登録がお済みでない方は、こちらから登録して下さい。

マクロの中身をちょっと覗いてみませんか?

DOESAGマクロの中身を詳しく見てみると、マクロプログラミングに役立つこともあります。
CODE V のインストールフォルダにある macroフォルダ内の doesag.seq を開いてみてください。

まず、ヘッダー情報とGUIダイアログのための記述があります。次に、変数の宣言、モデルの単位の確認、引数の確認をしています。

このマクロではワークシートバッファを利用して回折特性やサグ量のデータを収集、計算しています。そのためには使用しても問題ない何のデータも入っていない空のバッファが必要になります。「マクロを実行したことで、バッファに保存していた大事なデータがいつの間にか消えてしまった!」とならないためにも、どのバッファが空なのか確認する必要があります。この空のバッファを探す処理はCODE Vが出力するデータを収集するマクロを作るときによく使います。

空のバッファを探す処理は以下のように記述します。
NUM ^b
^b == 1
WHI (BUF.EMP B^b) = 0  
^b = ^b + 1
END WHI
! 空のバッファの番号を格納する数値変数宣言
! 第1バッファから空のバッファを検索
! 第^bバッファが空でないときWHIループを1サイクル回す
! ^bを+1して次のバッファ番号を検索
! WHIループのエンド
このループを抜けたときには^bに空のバッファの番号が収まっているという仕組みです。

DOESAGマクロではこの処理により空のバッファを3つ確保しています。

次に面に設定されている位相多項式で傾きが最も大きい高さを検索しています。これはデフォルトのステップ量(位相差が規格化波長の整数倍となっている高さを検出するためのサンプリング間隔)を最も急な傾きの1/4としているためです。このデフォルトのステップ量はほとんどの位相多項式で妥当な値です。この値が大きすぎる場合はRadial Sampling Incrementで調節してください。このとき、検索ポイント数が10000以上となる値を設定した場合、マクロがエラー終了するので注意が必要です。

ここからがマクロのコア部分です。面頂点から放射方向へ位相差を検索していき、バッファに保存します。

ここでは以下の処理をFORループで繰り返しています。
  1. 検索するポイントの高さを計算
  2. その高さで光線に付加される位相差を計算
  3. 検索ポイント番号と高さ、計算した位相を 1つめのバッファに格納。このとき同時にテキスト出力
次に再度FORループで位相差が規格化波長の整数倍となるポイントを検出し、キノフォームの深さが常に1波長となるように設定します。

具体的には位相差をサグ量として割り当てしながら規格化波長の整数倍となるごとに、サグ量を基準値に戻します。このときの基準値は面頂点で位相多項式が凸の場合 -1、凹の場合 0です。
位相差が規格化波長の整数倍となるポイントでは、そのポイントをさらに詳細に計算しています。そして 1つめのバッファにはプロットのためのデータを、 2つめのバッファには位相多項式から算出されたサグ量を、3つめのバッファには位相多項式のサグ量と面形状のサグ量を足し合わせたものを格納します。

最後に 1つめバッファに格納されているデータを元にしてプロットを生成しています。

マクロプログラミングの中身に興味がある方は「機能別セミナー」をお勧めします。

例えば、こんな使い方できませんか?

DOESAGマクロを応用すれば、下のようなことができます。
  • キノフォーム以外のタイプでサグ量を出力したい!
  • 回転非対称なDOEのサグ量を出力したい!
  • DOEのデータをGDSIIデータで出力したい!
CODE V のマクロ機能を利用すれば、「こんなことできないかなぁ」がほとんど実現できます。
やりたいことはあるけれど、「プログラミングしている時間がない」とか、「プログラムはどうも苦手で・・・」という方は「光学分野エンジニアリングサービス」をご利用ください。

その他の記事