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

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

    上一主题 下一主题
    离线infotek
     
    发帖
    5797
    光币
    23137
    光券
    0
    只看楼主 倒序阅读 楼主  发表于: 2021-05-21
    摘要 ^A\(M%*F  
    K7{B !kX4k  
    为您的光学仿真提供最大的多功能性是我们的宗旨之一。 在本教程中,我们将解释如何使用可编程函数。它也可以被认为是在单个平面中起作用的理想化组件:工作流程需要在x,y平面上定义一个位置相关的复值函数,然后将该函数乘到入射场上。 我们以理想的柱面透镜为例来详细介绍整个过程。 x{ `{j'  
    ->IZZ5G<  
    wmR~e  
    P =Q+VIP&  
    可编程函数所在位置:目录 \pI {b9  
    =5^1Bl  
    <9xr? i=  
    jvR(e"  
    可编程函数所在位置:光学设置 H ~fF; I  
    ^  ~1QA  
    S"^'ksL\  
    编写代码
    _ 3>E+9TQ  
     o4yl3o  
    #k &#d9}  
    •右侧面板显示可用的独立参数列表。 y}={S,z%22  
    •波长(Wavelength)是默认的独立参数,允许用户实现色散理想组件(函数)。 |9FrVO$M  
    •折射率(RefractiveIndex)是另一个默认的独立参数,它读取嵌入介质的复值折射率。 Vz-q7*o $S  
    •最后,x和y是最后两个默认的独立参数。 它们在定义理想组件(函数)的平面上。 ='1hvv/  
    •主函数必须返回每x,y(可能还有波长)的复数值,然后将其乘以入射场。 c}),yQ|!:  
    •使用Snippet Body将支持函数中的部分代码分组。 2$t%2>1>@  
    •请注意,可以在可编程函数的代码中使用导入的参考场和/或堆栈及其相关参数。 可以在“全局参数”选项卡中定义参考场和堆栈。 6#jql  
    E|RC|Sz=u  
    s]A8C^;c  
    LN$T.r+  
    提示:全局参数(Global Parameters),代码段帮助(Snippet Help),高级设置选项卡(Advanced Settings tabs)和界面的其他方面与VirtualLab中的其他可编程元素具有等效功能。 ?5};ONjN  
    x)$0Nr62D  
    采样 %`]!atH  
    D(<0tU^[  
    H!"TS-s`  
    •用户必须确保采样(组件后的场)足够精细,以解决可编程函数引入的频率。 <RC%<  
    •为此,请使用“采样”选项卡。 k}}'f A  
    •请注意,采样可能取决于定义的全局参数的实际值。 Q*'OY~  
    %8Y+Df;ax  
    N|"kuRN#  
    @6R6.i5d  
    输出 suWO:]FR  
    hz<TjWXv'  
    j5/|1N  
    •可编程函数对每个波长产生一个定义在平面上的复值函数,用x,y表示。 !OPHS^L  
    •在光学设置中,它与入射场相乘。 %2\Pe 2Z  
    •提示:已编程用于函数的代码段也可用于可编程光源,反之亦然。 VhMVoW  
    •该功能可以保存在边界响应(Boundary Responses)目录中供以后使用。 L0=`1q  
    DMp@B]>  
    C+`V?rp=s  
    *M#L)c;6  
    对柱面透镜函数进行编程 2w+4B4  
    8D?$@!-  
    柱面透镜 4!96k~d}  
    qJonzFp7  
    DVg$rm`  
    柱面透镜的函数是以下形式的纯相位调制: 8*B+@`  
    $txF|Fj]^A  
    7D 3-/_v  
    可编程函数所在位置:目录 ]WcN6|b+  
    fF#Fc&B  
    eMV8`&c'  
    {;u+?uY  
    可编程函数所在位置:光学设置 Pn@DHYP  
    SG0PQ  
    9Nv?j=*$  
    可编程界面:全局参数 kv?DE4=;  
    $XkO\6kh  
    o#z$LT1dY  
    •打开“编辑”对话框后,转到全局参数选项卡。 >YF=6zq.`  
    •在那里,添加和编辑两个全局参数: E&@#*~   
    - 双精度类型角度(double  Angle)= 0度(0度,360度):表示由光轴和聚焦方向形成的角度。 GGhk`z  
    -  双精度类型焦距(double  FocalLength)= 100毫米 q j9q   
    (0米,1米):表示镜头的焦距。 BE~-0g$W  
    •使用带有“注释”图标的小按钮可以为您的自定义全局参数添加一些说明。 @}{uibLD\  
    提示:此处可能有必要添加一些陈述文本以促进其他使用者理解和使用代码段。 9^Web~yi#  
    9pS:#hg  
    bt.3#aj  
    9~a5R]x2  
    可编程界面:代码段帮助(Snippet Help) kG}F/GN?  
    G'dN<Nw6  
    OpIeo+^X*  
    r[GH#vF;7  
    3qH1\  
    •可选功能“Optional”:您可以使用“代码段帮助”选项卡编写指令,说明以及与代码段相关的一些元数据。 vfmY >nr  
    •此选项对于使用可编程元素跟踪进度非常有用。 kFyp;=d:K  
    •当可编程元素被发送给其他用户处理时,它的作用发挥得尤为明显! 4UzXTsjM7  
    [>3dhj[;  
    3kF+wifsz  
    \M0's&1(  
    可编程界面:编写代码 L=C#E0{i  
    ^\J-LU|"B  
    yA_ly <  
    `GCK%evLG  
    采样 jWh)bsqI!  
    Zp<#( OIu  
    X*5N&AJ  
    •根据入射场和自定义函数的属性,用户必须在“采样”选项卡中确定适当的采样。 |68/FJZ,5  
    •例如,对于我们的柱面透镜和轴上准直入射光束,对于较小的镜头焦距,采样必须更精细(更多的采样点)。 0,.|-OZ  
    ?gvu E1  
    B8.}9  
    |m@>AbR5dk  
    可编程界面:使用您的代码段(Snippet) kDM?`(r  
    aU[!*n 4Ux  
    .4$F~!aj9  
    8]1,EE<  
    将自定义函数保存到目录中 ^~@3X[No  
    6uUn  
    qZ@d:u  
    5tLb o  
    提示:如果您使用目录来定义您的自定义界面,系统将会自动提示您将工作保存到目录中。 \$ss  
    oK4xRv8Hd  
    可编程函数的输出 CY[3%7 fv  
    +Kg }R5+  
    X6qgApyE  
    koD}o^U#  
    此表面由代码完全解析定义——完全准确“full accuracy”(已提升到双精度水平) |90X_6(  
    gOah5*Lj  
    测试代码! " *W# z  
    owVks-/  
    ]f U&?z#  
    N`N?1!fM<}  
    文件信息 3#>%_@<  
    DxpJP,wY3  
    D.x8=|;  
    QQ:2987619807 Ld/6{w4ir  
     
    分享到