ZEMAX | 使用 ZPL 宏進(jìn)行優(yōu)化:ZPLM 操作數(shù)

本文介紹了如何通過使用 ZPLM 優(yōu)化操作數(shù)在評價函數(shù)編輯器 (Merit Function Editor )中使用 ZPL 宏定義復(fù)雜的優(yōu)化目標(biāo)。本文介紹了如何使用 ZPLM 約束系統(tǒng)的質(zhì)心,以確保其能正確地平衡。(聯(lián)系我們獲取文章附件)


簡介


OpticStudio 中有將近400個操作數(shù),幾乎可以將任何感興趣的值作為目標(biāo),包括SINE,PROD,SQRT 等數(shù)學(xué)操作數(shù),可以定義詳盡的評價函數(shù)。有時所需的值需要進(jìn)行復(fù)雜的計(jì)算,但是無法在評價函數(shù)編輯器中執(zhí)行。在這種情況下,可以使用優(yōu)化操作數(shù) ZPLM 執(zhí)行宏來確定操作數(shù)的值。運(yùn)行宏,并使用 OPTRETURN 關(guān)鍵字將值返回給評價函數(shù)。


ZPLM 操作數(shù)


ZPLM 操作數(shù)包含六個參數(shù): Mac#, Data, Hx, Hy, Px, Py

· Mac# 是 OpticStudio 應(yīng)該執(zhí)行的宏的編號。應(yīng)將與 ZPLM 操作數(shù)一起使用的宏另存為 ZPLnn.zpl,其中,00 ≤ nn ≤ 99。

例如,ZPLM 調(diào)用宏 ZPL03.zpl 時,Mac# 應(yīng)該為3。

· Data 是由宏計(jì)算出來的數(shù)據(jù)值。單個宏中最多可以計(jì)算51個數(shù)據(jù)值 (0 ≤ Data ≤ 50)。為了提高效率,僅當(dāng) Data = 0 時才執(zhí)行宏;否則,將使用來自先前宏調(diào)用的數(shù)據(jù)(即 Data = 0,至少需要調(diào)用一次)。

· Hx, Hy, Px, 和 Py 是可以傳遞給宏以用于計(jì)算的值,它們不一定必須是歸一化的視場/光瞳坐標(biāo):


下面的示例將說明與 ZPLM 優(yōu)化操作數(shù)一起使用的宏的定義。


ZPLM 示例:質(zhì)心約束


在某些光學(xué)系統(tǒng)(瞄準(zhǔn)鏡,雙筒望遠(yuǎn)鏡,安裝在三腳架上的照相機(jī)等)中,質(zhì)心是要考慮的重要的機(jī)械因素。假設(shè)我們正在設(shè)計(jì)瞄準(zhǔn)鏡,其中一個約束條件是使系統(tǒng)平衡。這意味著,質(zhì)心(CM)應(yīng)該位于前組元件和后組元件之間的中間位置。 加載示例文件:\Zemax\Samples\Sequential\Afocal\Afocal Riflescope.zmx


出于本示例的目的,將做出一些簡化示例的假設(shè):

· 所有透鏡均旋轉(zhuǎn)對稱

· 所有材料為均勻介質(zhì)

· 每個透鏡的質(zhì)心都位于頂點(diǎn)的中間(嚴(yán)格來說,這僅適用于曲率相等且符號相反的透鏡)

表面1是全局坐標(biāo)參考(GCRS)

要限制質(zhì)心的位置需要有以下參數(shù):

· 每個元件的全局位置

· 每個元件的質(zhì)量

· 系統(tǒng)總長(前透鏡至后透鏡)

因此,將使用以下 ZPL 函數(shù)和關(guān)鍵字:

· GLCZ() 函數(shù)返回表面的全局 z 坐標(biāo)

· OPEV() 函數(shù)使用 TMAS 優(yōu)化操作數(shù)提取元件的質(zhì)量

· GETSYSTEMDATA 關(guān)鍵字返回總光路長度(表面1到像面)

· OPTRETURN 關(guān)鍵字將數(shù)據(jù)返回到宏


ZPLM 宏代碼


文章附件中“質(zhì)心”宏,如下所示:(聯(lián)系我們獲取文章附件)



將宏另存為:ZPL01.ZPL,以便可以使用 Mac#= 1調(diào)用它。


評價函數(shù)中的 ZPLM


在評價函數(shù)中,添加 Mac#= 1,Data= 0 的 ZPLM 操作數(shù),這將運(yùn)行宏并返回系統(tǒng)的質(zhì)心。



此處僅返回一個值,要返回其他值,只需在宏中添加額外的 OPTRETURN 行:

OPTRETURN data_number, value

在此示例中,不進(jìn)行優(yōu)化,但是,操作過程與其他操作數(shù)相同(即設(shè)置所需的目標(biāo)值和非零權(quán)重)。請注意,宏返回的值的單位可以是任意的,因此需要考慮ZPLM操作數(shù)的權(quán)重,以準(zhǔn)確地表達(dá)此目標(biāo)值相對于評價函數(shù)中列出的其他目標(biāo)值的重要性。特別是,此宏需要非常小的權(quán)重才能使ZPLM與其他針對系統(tǒng)性能的操作數(shù)保持平衡。

如前所述,ZPLM 可以使用最多四個值(Hx,Hy,Px,Py)將數(shù)據(jù)傳遞到宏。可以使用 PVHX(), PVHY(), PVPX(), PVPY() 數(shù)值函數(shù)在宏中訪問傳遞的值。在此示例中,可以將鏡筒質(zhì)心的位置和質(zhì)量傳遞給宏,以說明鏡筒和透鏡組合的質(zhì)心。

· Hx = 鏡筒質(zhì)心到系統(tǒng)中心的距離

· Hy = 鏡筒質(zhì)量 按照下圖修改宏,并將修改后的宏另存為ZPL02.zpl。



在評價函數(shù)中,將 Mac#設(shè)置為2,輸入鏡筒質(zhì)心位置(Hx)和質(zhì)量(Hy)的值,并注意報告的數(shù)據(jù)值的變化:



切記:僅當(dāng) Data = 0 時才執(zhí)行宏,以提高評價函數(shù)的評估速度。