切换到宽版
  • 广告投放
  • 稿件投递
  • 繁體中文
    • 1793阅读
    • 0回复

    [分享]如何使用可编程函数及示例(柱面透镜) [复制链接]

    上一主题 下一主题
    离线infotek
     
    发帖
    7172
    光币
    30001
    光券
    0
    只看楼主 倒序阅读 楼主  发表于: 2021-05-21
    摘要 do9@6[{Sv  
    b:nHcxDU<  
    为您的光学仿真提供最大的多功能性是我们的宗旨之一。 在本教程中,我们将解释如何使用可编程函数。它也可以被认为是在单个平面中起作用的理想化组件:工作流程需要在x,y平面上定义一个位置相关的复值函数,然后将该函数乘到入射场上。 我们以理想的柱面透镜为例来详细介绍整个过程。 1wl8  
    .h2K$(/  
    q8 ;WHfGf  
    o5\nqw^  
    可编程函数所在位置:目录 gNO<`9q  
    UNJ]$x0  
    ~/6m|k  
    k 4+F  
    可编程函数所在位置:光学设置 b<B|p|  
    D^Bd>Ey4  
    |:s 4#3  
    编写代码
    37wm[ Z  
    aUN!Sd2,  
    J}qk:xGL  
    •右侧面板显示可用的独立参数列表。 tdn[]|=  
    •波长(Wavelength)是默认的独立参数,允许用户实现色散理想组件(函数)。 =!'gV:M  
    •折射率(RefractiveIndex)是另一个默认的独立参数,它读取嵌入介质的复值折射率。 2bS)|#v<_t  
    •最后,x和y是最后两个默认的独立参数。 它们在定义理想组件(函数)的平面上。 \$2E  
    •主函数必须返回每x,y(可能还有波长)的复数值,然后将其乘以入射场。 n)w@\ Uy c  
    •使用Snippet Body将支持函数中的部分代码分组。 h*f=  
    •请注意,可以在可编程函数的代码中使用导入的参考场和/或堆栈及其相关参数。 可以在“全局参数”选项卡中定义参考场和堆栈。 /s>ZT8vaAs  
    qTnfiYG}  
    vIrLG1EK  
    1\q2;5  
    提示:全局参数(Global Parameters),代码段帮助(Snippet Help),高级设置选项卡(Advanced Settings tabs)和界面的其他方面与VirtualLab中的其他可编程元素具有等效功能。 \Clz#k8l1  
    Lnnl++8Y  
    采样 '!64_OMj'  
    sT9P  
    t+k"$zR  
    •用户必须确保采样(组件后的场)足够精细,以解决可编程函数引入的频率。 ,>n 4 `A  
    •为此,请使用“采样”选项卡。 ip4:px-  
    •请注意,采样可能取决于定义的全局参数的实际值。 >+=)Q,|R  
    R/M:~h~F!  
    )p>BN|L  
    Cd.pMoS  
    输出 nJF"[w,?  
    `?PZvGi  
    UK2Y<\vD  
    •可编程函数对每个波长产生一个定义在平面上的复值函数,用x,y表示。 |lIkmW{  
    •在光学设置中,它与入射场相乘。 kDJ5x8Q#  
    •提示:已编程用于函数的代码段也可用于可编程光源,反之亦然。 h[%`'(  
    •该功能可以保存在边界响应(Boundary Responses)目录中供以后使用。 P8e1J0A  
    K3&v6 #]  
     gM20n^  
    gEtD qq~y@  
    对柱面透镜函数进行编程 uAR!JJ  
    HH3WZ^0>  
    柱面透镜  B&#TbKp  
    mCe,(/>l+  
    AZxx%6  
    柱面透镜的函数是以下形式的纯相位调制: b5 YE4h8%  
    Deq~"  
    {j[[E/8N!y  
    可编程函数所在位置:目录 5.#r\' Z#  
    to^ &:  
    &F[/@  
    Y4}!9x  
    可编程函数所在位置:光学设置 I@a7AuOw  
    f3s0.G#l  
    |cJyP9}n  
    可编程界面:全局参数 C<2vuZD  
    H=z@!rJc.  
    g1L$+xD^  
    •打开“编辑”对话框后,转到全局参数选项卡。 %xf6U>T  
    •在那里,添加和编辑两个全局参数: XRKL;|cd  
    - 双精度类型角度(double  Angle)= 0度(0度,360度):表示由光轴和聚焦方向形成的角度。 s2iR  }<  
    -  双精度类型焦距(double  FocalLength)= 100毫米 qr$=oCqa  
    (0米,1米):表示镜头的焦距。 BV$lMLD{r  
    •使用带有“注释”图标的小按钮可以为您的自定义全局参数添加一些说明。 m>$+sMZE  
    提示:此处可能有必要添加一些陈述文本以促进其他使用者理解和使用代码段。 KP[ax2!x  
    ~qLbyzHaB  
    vL{~?vq6  
    |:`f#H  
    可编程界面:代码段帮助(Snippet Help) -]R7[5C:  
    T.GY  
    ]|( (&Y rl  
    q/Ba#?sen  
    Y.3]vno?X  
    •可选功能“Optional”:您可以使用“代码段帮助”选项卡编写指令,说明以及与代码段相关的一些元数据。 ]<A|GY0q1  
    •此选项对于使用可编程元素跟踪进度非常有用。 z)=D&\HX  
    •当可编程元素被发送给其他用户处理时,它的作用发挥得尤为明显! tX cc#!'4C  
    0K`3BuBs  
    `&b 8wF  
    2J^6(vk  
    可编程界面:编写代码 41mg:xW(J  
    ~K 8eRT  
    {7[^L1  
    #QQ\xj  
    采样 sAfSI<L_  
    #IA[erf:  
    uI@:\Rss  
    •根据入射场和自定义函数的属性,用户必须在“采样”选项卡中确定适当的采样。 m'XzZmI  
    •例如,对于我们的柱面透镜和轴上准直入射光束,对于较小的镜头焦距,采样必须更精细(更多的采样点)。 7m{ 'V`F  
    nM34zVy  
    Z$kff-Y4  
    Xz4!#,z/  
    可编程界面:使用您的代码段(Snippet) 4Z"D F)+}  
    j?29_Az  
    mm'n#%\G  
    WmP"u7I4  
    将自定义函数保存到目录中 LpeQx\  
    ^IOf%  
    \/la`D  
    G$}\~dD  
    提示:如果您使用目录来定义您的自定义界面,系统将会自动提示您将工作保存到目录中。 }H!c9Y  
    'W3>lAPx!  
    可编程函数的输出 9xyj,;P>  
    ?P ,z^  
    )7Gm<r  
    UGj!I  
    此表面由代码完全解析定义——完全准确“full accuracy”(已提升到双精度水平) r@f8-!{s2h  
    cjHo?m'  
    测试代码! c^><^LGb  
    E#v}//  
    SGre[+m~m  
    G`9Ud  
    文件信息 !JzM<hyg3  
    G)]'>m<y  
    b4ZZyw  
    QQ:2987619807 A&jkc'  
     
    分享到