摘要
NmthvKhH v<,?%(g)7
w&8gA[y*u {a- p/\U 我们最基本的目标之一是为
光学模拟提供最大的通用性。在本
教程中,我们将解释如何使用可编程函数,可以将其认为是一个理想化的组件,作用在一个平面上:工作流程需要在x、y平面上定义一个与位置相关的复数函数,然后将其乘以输入场。我们以一个理想的圆柱形
透镜为例来详细介绍整个过程。
lY
yt8H L&+XFntR 在哪里可以找到可编程函数:目录
w^sM,c5d a.L ?J
hs}nI/# sa36=:5x- 在哪里可以找到可编程函数:光学设置
0%7c?3# E)|fKds
-8X*(7 {aqceg 编写代码
o
/AEp)8 44B)=p7
|d?0ZA:z ,~w)~fMb8 •右边的面板显示了可用的独立
参数列表。
CS"2Sd 1` •波长是一个默认的独立参数,允许用户实现色散的理想元件(函数)。
qd6XKl\5 •折射率是另一个默认的独立参数,用于读取嵌入介质的复数折射率。
;]34l."85 •最后,x和y是最后两个默认的独立参数。它们跨越了定义理想元件(函数)的平面。
BaIH7JLZ8 f'Dl*d 编写代码
Ouc=4'$- ;>{BK,
nyD(G=Q5 ?ntyF-n& •主函数对每个x、y(可能也是
波长)必须返回一个复数值,然后将其乘以输入场。
a938l^@;s8 •使用代码段将代码中的部分代码分组到支持函数中。
%,Xs[[?i •注意,可以在可编程函数的代码中使用导入的参考场和/或堆栈及其相关参数。参考场和堆栈可以在全局参数选项卡中定义。
QXqBb$AXi, _[zO?Div[ 采样
?u{y[pI6 fn>MOD!l
SE&J)Sj] TXD\i Dq •用户必须确保采样(元件后方的场)足够精细,以分辨可编程功能引入的频率。
2JwR?<n{ •为此,请使用采样选项卡。
^$c+r%9k •请注意,采样可能取决于定义的全局参数的实际值。
OV8Y)%t" \^orl9 输出
s|.V:%9e l'n"iQ!G
jk,:IG +K,]#$k •可编程函数在一个平面(在x,y范围)上定义的每个波长上产生一个复值函数。
zL$$G, •在光学设置中,它被乘以输入场。
L l\y2oJ •提示:已经被编程为一个函数的代码段也可以在可编程
光源中使用,反之亦然。
G]X72R?g •该函数可以保存在边界响应目录中,以便以后使用。
7'\<\oT
&$ZJfHD@ 圆柱形透镜函数的编程
9ar+P h@* 圆柱形透镜
gf7%vyMo$ 圆柱形透镜的函数是相位调制的形式:
i7v> 9p7
}t#uSz^ f→
焦距 @eu4W^W k→波数
*U|K~dl]K α→光轴与透镜焦距方向之间的夹角
2'UWPZgE MgyV{` 在哪里可以找到可编程功函数:目录
o5)lTVQ~~ 8`l bKV
9;KQ3.Fa}q h BD .IB 在哪里可以找到可编程函数:光学设置
^u`1W^> *o <S{
[Zc8tE2oN 编程界面:全局参数
HfEU[p7) 77?/e^K\S •打开编辑对话框进入全局参数选项卡。
S) ZcH •在这里,添加和编辑两个全局参数。
P Llad\ - double Angle=0度(0度,360度):表示光轴和对焦方向形成的角度。
hF|N81T - double FocalLength=100 mm(0 m,1 m):表示透镜的焦距。
da<B6! •使用带有小 "注释 "图标的按钮,为你的自定义全局参数添加一些解释。
_{0'3tI7 706-QE^
g93-2k, 1'ts>6b 编程界面:代码段帮助
3BHPD;U OOJg%y*H
},<(VhP \2F{r<A\@ •选项:你可以使用代码段帮助选项卡来编写指令、说明和一些与你的代码段相关联的元数据。
R"%zmA@o= •这个选项对追踪你使用可编程元素的进度非常有帮助。
xe9E</M_ •当可编程序元素以后被移交给其他用户处理时,这个选项特别有用!
4+Aht]$hC !c+,OU[ 编程接口:代码段帮助
u*LMpTnn eU/o I} A
*l\wl @{ 编程界面:编写代码
l12Pj02 w t+7|/GLs2
RN2^=$'. KWwEK] 采样
IqEE.XhaK UqHk2h- •根据入射场的属性和自定义功能,用户必须在采样选项卡中确定适当的采样。
v;_m1UpuW •例如,在我们的圆柱形透镜的情况下,对于轴上准直入射
光束,对于较小焦距的
镜头,采样必须更细(采样点数量更多)。
S~L;oX?(! o3C7JG
NL`}rj vl1`s
^}R 编程界面:使用你的代码
U~h
f,Oxi SLI(;, s
|7XPu \M$e#^g 保存自定义的函数到目录
DAYR=s .tRp
m/M=.\] I?y!d
G 可编程函数的输出
\0bao< Z9S5rPHEL
XR2Gw4] (x)}k&B; 测试代码
::goqajV X8m@xFW}