一方、回折光学素子の表面はキノフォーム形状(のこぎり形状)やバイナリ形状(ステップ形状、階段形状)、サイン波形状になります。回折効率を向上させるためにキノフォーム形状で製造することが多いと思います。
このとき、CODE Vで設計した回折光学素子(DOE)やホログラフィック光学素子(HOE)を製造するためのサグ量データを製造担当に渡す必要がありますよね?CODE Vのパラメータである単なる位相多項式の係数では実際にDOEを製造することはできません。DOE、HOEを製造するためにはキノフォーム形状のサグデータが必要です。
サグデータがあれば、その回折光学素子が製造可能かどうか判断できます。
こんなときは、DOEのサグデータを算出するマクロ “DOESAG.seq ”が便利です。
RES CV_LENS:doublet DIF S1 DOE; HCT S1 R HOR S1 1 |
! doubletサンプルモデル読み込み ! 第1面に回転対称DOEの回折特性を設定 ! 回折次数を1 |
! 第1面のDOEのR**2、R**4のパラメータを変数化 HCC S1 C1 0; HCC S1 C2 0 AUT; GO ! 最適化 |
設定しなければいけないパラメータはHOE/DOE Surface Number、つまり回折特性の設定されている面の番号だけです。今回のモデルであれば1と入力してください。
OKをクリックします。キノフォームの深さは面特性の回折特性で指定する規格化波長になります。
テキスト出力を見てください。まずサグ量を計算するための精度に関する情報が表示されています。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の閲覧・ダウンロードにはログインアカウントとパスワードが必要です。
ユーザー登録がお済みでない方は、こちらから登録して下さい。
まず、ヘッダー情報と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ループのエンド |
次に面に設定されている位相多項式で傾きが最も大きい高さを検索しています。これはデフォルトのステップ量(位相差が規格化波長の整数倍となっている高さを検出するためのサンプリング間隔)を最も急な傾きの1/4としているためです。このデフォルトのステップ量はほとんどの位相多項式で妥当な値です。この値が大きすぎる場合はRadial Sampling Incrementで調節してください。このとき、検索ポイント数が10000以上となる値を設定した場合、マクロがエラー終了するので注意が必要です。
ここからがマクロのコア部分です。面頂点から放射方向へ位相差を検索していき、バッファに保存します。マクロプログラミングの中身に興味がある方は「機能別セミナー」をお勧めします。