Gsm.a 为您的
光学仿真提供最大的多功能性是我们的宗旨之一。 在本
教程中,我们将解释如何使用可编程函数。它也可以被认为是在单个平面中起作用的理想化组件:工作流程需要在x,y平面上定义一个位置相关的复值函数,然后将该函数乘到入射场上。 我们以理想的柱面
透镜为例来详细介绍整个过程。
lx~C{tl2 .+lx}#-#
{9Q**U`w j~9![s! 可编程函数所在位置:目录
HA&hu/mw_ jG#e%`'
,WoV)L'? H>-{.E1bG 可编程函数所在位置:光学设置
Q5 o0!w "412w^5[T
}`76yH^c 编写代码
*d 4A3| l @E
{K| ^7*zi_Q •右侧面板显示可用的独立
参数列表。
6mxzE3?G •波长(Wavelength)是默认的独立参数,允许用户实现色散理想组件(函数)。
(H]NL •折射率(RefractiveIndex)是另一个默认的独立参数,它读取嵌入介质的复值折射率。
CRNt5T>qH •最后,x和y是最后两个默认的独立参数。 它们在定义理想组件(函数)的平面上。
T*(mi{[T •主函数必须返回每x,y(可能还有
波长)的复数值,然后将其乘以入射场。
>LVGNicQ •使用Snippet Body将支持函数中的部分代码分组。
diKl}V#u •请注意,可以在可编程函数的代码中使用导入的参考场和/或堆栈及其相关参数。 可以在“全局参数”选项卡中定义参考场和堆栈。
/f=31<+MtF .lSoC`HE
nH+wU;M I &%
Z*H 提示:全局参数(Global Parameters),代码段帮助(Snippet Help),高级设置选项卡(Advanced Settings tabs)和界面的其他方面与VirtualLab中的其他可编程元素具有等效功能。
g-/ }*ml _.m|Ml,`{ 采样
@)ls+}=Y $L'[_J |2jA4C2L} •用户必须确保采样(组件后的场)足够精细,以解决可编程函数引入的频率。
,"?8 •为此,请使用“采样”选项卡。
A":cS }Ui •请注意,采样可能取决于定义的全局参数的实际值。
b
|ijkys fUq
#mkq}
;2gO( q5)
K 输出
+h1X-K:I
-AB0uMot tU.~7f#+A •可编程函数对每个波长产生一个定义在平面上的复值函数,用x,y表示。
m:9|5W •在光学设置中,它与入射场相乘。
Y7')~C`up^ •提示:已编程用于函数的代码段也可用于可编程
光源,反之亦然。
Xhpcu1nA •该功能可以保存在边界响应(Boundary Responses)目录中供以后使用。
B~YOU3 n3\~H9
3/,}&SX m mH
xPd 对柱面透镜函数进行编程 'sa>G jK{qw 柱面透镜
M>{*PHze0 4(`U]dNcs jq_ i&~S 柱面透镜的函数是以下形式的纯相位调制:
2r@9|}La M'pIAm1p
P<LmCYm 可编程函数所在位置:目录
qsYg%Z vm=d?*cR
wZ_"@j< LMLrH. 可编程函数所在位置:光学设置
UC.kI&A Ggbz
okO\A^F 可编程界面:全局参数
*rYPjk6g[ xO4""/n $3cZS •打开“编辑”对话框后,转到全局参数选项卡。
HNLr}
Y j •在那里,添加和编辑两个全局参数:
!L2!:_ - 双精度类型角度(double Angle)= 0度(0度,360度):表示由光轴和聚焦方向形成的角度。
mH)8A+us - 双精度类型
焦距(double FocalLength)= 100毫米
UMK9[Iy$<M (0米,1米):表示
镜头的焦距。
DbYnd%k*4 •使用带有“注释”图标的小按钮可以为您的自定义全局参数添加一些说明。
bicbCC6kC 提示:此处可能有必要添加一些陈述文本以促进其他使用者理解和使用代码段。
#@E:|^$1y I*n]8c
f @Vd'k< mA^3?yj 可编程界面:代码段帮助(Snippet Help)
#9{2aRCJ 4hkyq>c}
rkz84wDx :G&:v }-Jo9dNs •可选功能“Optional”:您可以使用“代码段帮助”选项卡编写指令,说明以及与代码段相关的一些元数据。
i\x@s>@x} •此选项对于使用可编程元素跟踪进度非常有用。
BQ B<+o' •当可编程元素被发送给其他用户处理时,它的作用发挥得尤为明显!
;(Az Ydyz-
;s+3#Py Af}o/g 可编程界面:编写代码
{4)d i9T<(sdK+
{e0(M*u /L./-92NH4 采样
f*VXg[&\\F (B03f$8}*_ G9@5 !- •根据入射场和自定义函数的属性,用户必须在“采样”选项卡中确定适当的采样。
Q
/t_%vb •例如,对于我们的柱面透镜和轴上准直入射
光束,对于较小的镜头焦距,采样必须更精细(更多的采样点)。
QvJ29 &}\{qFD;
}nSu7)3$B ~(:0&w%e 可编程界面:使用您的代码段(Snippet)
s|X_:3\x _9?v?mL5;
FU;a
{irB 'lOQb) 将自定义函数保存到目录中
n Q{~D5y,, $9u:Ox
2
+{#Z^y6& *w/N>:V0p 提示:如果您使用目录来定义您的自定义界面,
系统将会自动提示您将工作保存到目录中。
3_]QtP3 XD80]@\za 可编程函数的输出
.:e#!~Ki d<E2=WVB6
VKg9^%#b`[ ZvK.X*~s 此表面由代码完全解析定义——完全准确“full accuracy”(已提升到双精度水平)
z0F55<i D}UgC\u 测试代码!
3sDyB-\& f*T}Ov4
$x#qv1