摘要
;rT'~?q |6JKB'
KHML!f=mu P);s0Y|@H 我们最基本的目标之一是为
光学模拟提供最大的通用性。在本
教程中,我们将解释如何使用可编程函数,可以将其认为是一个理想化的组件,作用在一个平面上:工作流程需要在x、y平面上定义一个与位置相关的复数函数,然后将其乘以输入场。我们以一个理想的圆柱形
透镜为例来详细介绍整个过程。
m6ge
% w~b:9_reY 在哪里可以找到可编程函数:目录
Q^Cm3|ZO Y0 a[Lb0
F tIcA"^N k56Qas+3= 在哪里可以找到可编程函数:光学设置
:S0! iH }-
!Zj]0,^ +M0pmK! 编写代码
~DInd-<5 <#C,66k
PR.3EL UPuoIfuqI •右边的面板显示了可用的独立
参数列表。
4|`>}Nu •波长是一个默认的独立参数,允许用户实现色散的理想元件(函数)。
~V8z%s@ •折射率是另一个默认的独立参数,用于读取嵌入介质的复数折射率。
fZo#:"{/K •最后,x和y是最后两个默认的独立参数。它们跨越了定义理想元件(函数)的平面。
(4+P7Z,Nc XGx[Ny_A2 编写代码
2Cz haO SV>tw`2
nnv|GnQST &W@2n&U.q •主函数对每个x、y(可能也是
波长)必须返回一个复数值,然后将其乘以输入场。
QM0B6F •使用代码段将代码中的部分代码分组到支持函数中。
d&j •注意,可以在可编程函数的代码中使用导入的参考场和/或堆栈及其相关参数。参考场和堆栈可以在全局参数选项卡中定义。
,0W^"f.g{m 6eV#x%z@v' 采样
y!#-[K: oFWb.t9<
LORcf 1X/ Z10Vx2B •用户必须确保采样(元件后方的场)足够精细,以分辨可编程功能引入的频率。
' P?h?w^T •为此,请使用采样选项卡。
>NKJ@4Y •请注意,采样可能取决于定义的全局参数的实际值。
p'K`K\X j<p.#jkT 输出
bC<W7qf]} R/hIXO
m-Eh0Zl>Z Tlw'05\{J •可编程函数在一个平面(在x,y范围)上定义的每个波长上产生一个复值函数。
Du+W7]yCl •在光学设置中,它被乘以输入场。
8<6H2~5< •提示:已经被编程为一个函数的代码段也可以在可编程
光源中使用,反之亦然。
p~$cwbQ! •该函数可以保存在边界响应目录中,以便以后使用。
vgwpuRL5b UHZuH?|@ 圆柱形透镜函数的编程
h[mT4e3c 圆柱形透镜
|THpkfW 圆柱形透镜的函数是相位调制的形式:
%2}fW\%'
R=z]) f→
焦距 |./mPV r k→波数
6zi>Q?] 1 α→光轴与透镜焦距方向之间的夹角
')"+ a^c za_b jE 在哪里可以找到可编程功函数:目录
"n%s>@$ G*CPj^O
<u64)8' c#n
2! 在哪里可以找到可编程函数:光学设置
f<YYo |6E_N5~
SI}s 编程界面:全局参数
n Nt28n@ :7v'[b •打开编辑对话框进入全局参数选项卡。
QUrPV[JQ •在这里,添加和编辑两个全局参数。
|toP86 - double Angle=0度(0度,360度):表示光轴和对焦方向形成的角度。
U2
*ORd - double FocalLength=100 mm(0 m,1 m):表示透镜的焦距。
5;a*Xf%V •使用带有小 "注释 "图标的按钮,为你的自定义全局参数添加一些解释。
b,xZY1a jeC=s~
/I%z7f91O kBo:)Vej4 编程界面:代码段帮助
cLtVj2Wb b#VtPn]
5n@YNaoIb 2Rk}ovtD[ •选项:你可以使用代码段帮助选项卡来编写指令、说明和一些与你的代码段相关联的元数据。
M8/a laoT •这个选项对追踪你使用可编程元素的进度非常有帮助。
}v ZOPTP •当可编程序元素以后被移交给其他用户处理时,这个选项特别有用!
QN:v4,$d n7Ao.b%uk- 编程接口:代码段帮助
'cD?0ou`o "aJHCi~l
QNNURf\[( 编程界面:编写代码
Lljn\5!r< p*
>z:=
Tgdy;? aO' #!k*R 采样
}p)K6!J0 :{7+[LcH7 •根据入射场的属性和自定义功能,用户必须在采样选项卡中确定适当的采样。
s0SzO,Vi •例如,在我们的圆柱形透镜的情况下,对于轴上准直入射
光束,对于较小焦距的
镜头,采样必须更细(采样点数量更多)。
')m!48 1!#N-^qk
/5@YZ?|#2 ]eL# bJ 编程界面:使用你的代码
%8'8XDq^8 m:H^m/g
'a~@q~! A}9Z%U 保存自定义的函数到目录
-C=0Pg]ga sZ `Tv[
IskL$Y ^
:j\7</uu 可编程函数的输出
#ArrQeO 5_ zoq;3a5cqB
t~Q9}+ OH`a3E{e 测试代码
z*.AuEK? ]Ry9{: