VirtualLab教程特辑

news2024/12/28 5:41:46

目录

  • 前言
  • 一、一些界面上的说明
    • 1、关于软边relative edge width
    • 2、catalog里器件参数改动
    • 3、系统光线分析仪的光线数
    • 4、编程手册从哪看以及哪里可以编程
    • 5、Multiple Light Source
    • 6、多波长与多模式分开显示
    • 7、harmonic fields set-manipulations
    • 8、detector results显示功率小
    • 9、不想显示光场只想要数据结果
    • 10、插值方式
  • 二、一些功能的发现
    • 1、找到焦点
    • 2、Modelling level怎么选
    • 3、如何看logging
    • 4、神奇的Modelling Analyser
    • 5、导出bat文件
    • 6、多个光源的切换
    • 7、编程的API从哪看
    • 8、模组的编写
    • 9、多彩颜色
    • 10、传播算子是怎么选出来的
  • 总结


前言

这一篇可能没有什么章法,想着重跟大家分享一下在上海讯技光电本部两日学习的一些个内容,主要还是很多关于软件的常规操作,是由工程师亲自指导了的,可能能够解答大家很多底层的疑惑把。(注:所有操作均在2021版本下完成)
至于很多代码的内容,那当然还是秘密啦!大家如果都是试用版可能也跟我们一样是暂时操作不了编程的部分的。

一、一些界面上的说明

1、关于软边relative edge width

虽然默认都是10%,但是工程师告诉我们这并不是一个很好的值,一般工程中我们可能更期望设置为5%或者1%。这个软边的存在主要是想表明光在透过边缘的时候那种衍射的存在,当然还有就是它能减小软件内核的计算量。当我们把这个值设置到0%时,会发现仿真明显变慢。
在这里插入图片描述

2、catalog里器件参数改动

之前我一直认为catalog里面的器件参数都是定死的。没有发现这边左下角也是可以去实现一个编辑操作的。比如这边材料库中的N-BK7_Schott_2015材料(N-BK7是当下普及度最高的高品质光学仪器用光学特种玻璃),它的限制的工作波长范围是可以进行修改的,只不过这样修改把范围改大肯定是有问题的,因为原有的折射率曲线上并没有给出更大范围波段下的折射率。
在这里插入图片描述

3、系统光线分析仪的光线数

大家熟知的又一个用到了光线追迹原理的仿真引擎,比单纯的光线追迹引擎要更有趣些,可以看到整个系统的光线传播情况,而不是只能看到探测平面的点列图。在这样的3D显示中,其光线数目也可以在simulation settings中做一个修改。(或者直接在2021版本中点击对应仿真图标右下角的小铅笔)
在这里插入图片描述
你可能发现光源的设置界面中也有ray selection。这里显示的光线数是ray tracing结果的光线数在这里插入图片描述
如果是ray tracing system analyser的2D view的光线数在这里显示。在这里插入图片描述

4、编程手册从哪看以及哪里可以编程

在这里插入图片描述
软件右上角的问号直接点是help文档,点小箭头下面可以看到有编程参考文档。
(虽然试用版应该操作不了)比如我们现在想编一个光源,我们需要用到programmable light source-spatial parameter-edit。
在这里插入图片描述
注意灰色的区域都是改不了的。
在这里插入图片描述
添加变量从上面source code隔壁的global parameter添加就好,这样代码里就可以用了。
编好之后在最下面可以检查代码的正确与否。(再具体的细节也暂时是不能多说,咳咳其实确实也是不知道

在这里插入图片描述
如果我们编程的时候发现有两个代码片。比如如下的detector function里面分别对应了等间距采样与非等间距采样,要注意仿真出来的效果也存在对应关系,如果改正了equidistant(等间距采样),就相当于仿真引擎要用经典场追迹,如果改正了non-equidistant(非等间距采样),就相当于仿真引擎要用光线追迹,那如果用场追迹,该怎么办呢,最好是两个代码片都改了(有时候只改等间距采样的代码片也有用,但有时候则会出错,以防万一,两个都改)。
在这里插入图片描述
举个例子,我们的programmable detection里面的两个代码里有这样一句,RayTracingResult.ResolveSmartHandlingOfFieldValues();如果非等间距采样里少了这句RayTracingResult.ResolveSmartHandlingOfFieldValues();最终会影响field tracing 的结果图,使得其没有外围一圈衍射,但是如果这时依然用classic field tracing,对结果图是没有影响的,依然会保留外围一圈衍射。
在这里插入图片描述
当然如果非等间距少了这句,我们用level 3而不用level 1依然可以得到带有衍射圈的结果。这是我们后面会讲到的为什么总要去选level 3。
在这里插入图片描述
但是如果没有经过传输距离(探测器的距离设置),它依然会停留在光线追迹,没有用到FFT,依然会停留在非等间距采样,又没有衍射环了。在这里插入图片描述
再举个例子,我们在下面的代码(非等间距采样)里删掉一些东西。
在这里插入图片描述
当我们把这一行在下面这个snippet注掉后,再用level 1会报错,当然用3或者level 2的话就一切正常,这是因为用1的话,还是会涉及到非等间距采样,用level 2和level 3的话就用了FFT,用了等间距采样,所以不会调用下面这个代码片,而是调用上面的snippet,所以不会出错。

5、Multiple Light Source

在这里插入图片描述
可以让不同的光源以相干或者非相干的状态同时工作,可以解决下面“二、6”的光源无法同时工作的问题。但是会发现这边要想导入都必须得是catalog里的光源,所以如果自己做了一个光源就应该放到catalog里才能在这边调用。或者也可以直接从catalog这里的接口programmable light source的接口进行customized的光源的制作。
在这里插入图片描述
当然上面也说到可以直接制作光源,但这也离不开catalog,需要进入到light sources里的programmable light source(definition type在templates面板下)然后进行相应的编程。在这里插入图片描述
编好之后,你制作的光源会出现在user defined面板下面。
在这里插入图片描述
PS:virtualLab做部分相干光的时候都通过模式叠加来作。

6、多波长与多模式分开显示

在这里插入图片描述
之前可能大家看到的多波长显示都是二维的,今天看个三维的,用ray tracing system analyser看3d view,在左上角我们可以把wavelengths前面勾掉,一个波长一个波长的看,类似地,多模式分开看也是可以的。比如我们现在用scanning source。进行如下的设定。
在这里插入图片描述
还是在左上角,把incoherent mode前面勾掉,就可以一一显示了。在这里插入图片描述
(你可能发现你的颜色比较单调,为了方便显示,我们可以选择将它变成五彩斑斓的颜色,我们在下面会说到颜色显示的问题)

7、harmonic fields set-manipulations

plane wave下设了3个波长,所以现在有3个图。
在这里插入图片描述
这时进入manipulations界面会看到2021面板下有很多新的操作。
在这里插入图片描述
member harmonic fields这里可以做数据处理。
在这里插入图片描述
extract field可以提取出单色光的场。
在这里插入图片描述
提取数据阵列后会丢失掉之前的一些场信息。比如把三个场多波长的数据合到一起,这样的转化中会丢失掉颜色信息。
PS:编程的时候还要注意针对不同的数据类型所用的语句可能也会有差异

8、detector results显示功率小

VirtualLab里面光源的功率通常都很小。有一个改大的方法。

在这里插入图片描述
比如我们可以plane wave 里面weight做大。
在这里插入图片描述

9、不想显示光场只想要数据结果

这样仿真后不显示光场,只显示下面的detector results。
在这里插入图片描述

10、插值方式

之前一直可能也是插值方式选不明白,所以多数时候我们软件探测器默认的插值方式都是还不错的。那关于几个常用的插值方式这边也给大家比较看看效果。
在这里插入图片描述
在这里插入图片描述
通常情况下cubic 6p的效果是相当不错的。

二、一些功能的发现

1、找到焦点

对于一个搭建好的系统来说,找到焦点还是挺必要的。这样可以把探测器放到对应的位置上去,软件中的这个位置可以帮我们找到系统的焦点位置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、Modelling level怎么选

在2021版的optical setup中非常贴心的设置了modelling level的几个选择方式。首先需要明确这些levels的选择当然都是在仿真引擎为field tracing的情况下。level 1当然简单粗暴,不考虑所有的衍射,显然这也是和真实情况相差最远的情况,但是计算也会最快;level 2仅考虑了在焦点区域的衍射;level 3则可以看成是考虑了所有的衍射的纯纯的物理光学仿真;另外还有自定义的设置。一般的建议都是在不熟悉系统的情况下首选level 3,虽然其计算量也最大,有时用2代之也可。
在这里插入图片描述
如果是特别熟悉系统的,当然用自定义可能更符合需求。这时需要明确一个知识点,等间距采样与非等间距采样同PFT与FFT的对应关系。等间距采样对应FFT,非等间距采样对应PFT。元件尺寸大的时候用PFT和FFT其实差不多,但是FFT的计算量始终是会比较慢的,如果不考虑时间代价,用FFT当然肯定是最好的。
选1、2、3的时候,软件会默认帮忙选好,自定义的部分是灰色的,没有被激活;选自定义的时候可以再手动在simulation settings里去选PFT或者FFT,刚才灰色的区域被激活。
在这里插入图片描述
在这里插入图片描述
选了自定义后,也可以去到对应元件设置面板的fourier transform中激活自定义设置进行PFT/FFT选取。
在这里插入图片描述

但是如果选用的有具体的level而非自定义的话,比如选2的时候只考虑聚焦面附近的衍射,也就是说对于一个简单的透镜聚焦系统来说,从光源到透镜系统之间用的都是PFT,但是探测器面上用的还是FFT,这些软件都负责帮忙选好了,再去元件面板中进行相关的customized设置也是没有用的。

PS:有趣的是当用level 1 的时候,左上角会有field property 和ray property 两种,当用level 3时,因为有强制使用FFT在里面,不会再有这样的两种选择。

3、如何看logging

日志有时候还是挺重要的,能帮我们看到采样点数,看到在每个界面上用了什么算法,你也可以根据日志推测一次仿真在运行到哪一步也即到哪个界面上软件开始算不动了。
我们在软件右侧的property browser-simulation settings-general下面去让我们的logging能detailed的显示出来。
在这里插入图片描述

在这里插入图片描述

4、神奇的Modelling Analyser

之前也确实是没有使用过这样一个仿真引擎,但是发现它非常有意思,可以观察到一趟仿真下来,软件每一步仿真的结果,而不是只得到最后的结果。
在这里插入图片描述
举个例子来说,平面波经过一个透镜的传输中软件在不同元件的界面上会进行这样不同的操作。从X域到K域反复变换。你也可以在logging中去看这样的每一步,不过modelling analyser可以更清晰的展示出每一步的结果而不是简单的记录下来。K域的传输中用的是P传输因子,X域到K域的转换则涉及到选择的是PFT还是FFT。
在这里插入图片描述
在这里插入图片描述
一共12个分布结果图。
2022新版本里傅里叶变换的采样会更灵活,应该是变成了可以人为去设置采样点数的版本。

5、导出bat文件

在这里插入图片描述
export成batch mode file。
导出到一个文件夹中后会有三个文件。在这里插入图片描述
运行bat文件,得到一个文件夹,得到有ca2文件,是探测器的数据文件。用记事本打开bat文件,把这个去掉。
在这里插入图片描述
把这个删除再去运行不会再得到子文件夹。直接就在刚才的路径之下再生成新的文件。
在这里插入图片描述
如此bat可以和matlab进行交互。
当然这边文件夹中的results.xml文件可以用浏览器打开,里面的结果自然应该同软件里的一致。

6、多个光源的切换

在这里插入图片描述
经常会发现在有多个光源的编辑窗的时候,没法让多个光源接着同一个探测器,可以点击tools下的toggle light source实现光源的强制切换。

7、编程的API从哪看

不多说,直接传送门: 了解如何在 .NET 平台上使用 C# 编程语言编写任何应用程序。
在这里插入图片描述

8、模组的编写

在这里插入图片描述
确实现在这个有点不初学者了,有的朋友可能已经很熟悉软件但还苦于不知道更高端的功能从何探索起。这边可以写C# module。这个模组是一串非常有趣的具有特定功能的程序代码。执行模组可以在更大程度上去帮助我们实现一些操作。下面的模组语句就很直白就是去选择一个我们已经打开了的场文件,没有返回值。
在这里插入图片描述

我们先编译,再运行之后,会得到一个弹窗,弹窗里显示的就是有你现在已经打开了的场文件。
在这里插入图片描述
我们在给我们刚才选中的场打开一下,并起个新的名字。
在这里插入图片描述
有了下面这新的一行,我们可以朝messages 里写一条我们想要的信息。在这里插入图片描述

9、多彩颜色

在这里插入图片描述
有时候可能需要更多种色彩的显示,方便效果图的展示等等,你可能需要在这里添加更多样的颜色。或者在下面的edit color table处去编辑你的color tables。

10、传播算子是怎么选出来的

先用菜单栏下的sources搞一个平面波。打开它的propagations-automatic propagation operator。点一下analyze,分析一下使用不同算子会带来怎样的偏差。

在这里插入图片描述
发现用到菲涅尔传输算子,这是软件自己算好评判选用的。
在这里插入图片描述
但显然在软件界面中操作,是不能四个都不勾选的,但是如果有一个模组的话,我们模组里可以四个都false。(你可能猜到模组很多时候实现的功能软件里可以通过一些界面操作来实现,但是模组又有它的强大之处)

总结

这篇可能不是那种有操作流程的之前的模式了,更多是tips的碎碎念,毕竟是特辑嘛!希望能够或多或少帮到大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43293.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阿尔茨海默病中的人类连接组及它与生物标记物和遗传学的关系

摘要 阿尔茨海默病(AD)损害了大脑的结构和功能网络,导致认知障碍。最近的连接组学研究结果已经将AD中结构和功能网络组织的变化与淀粉样蛋白-β和tau蛋白的积累和扩散模式联系起来,为该疾病的神经生物学机制提供了见解。此外,对基因相关的连接…

如何检索专利技术?

问题一:申请实用新型专利需要提交哪些文件呢? 主要有以下四点: 1、请求书:主要包括实用新型专利的名称、申请人的名称和地址等内容; 2、权利要求书:这里需要交代好每一项要保护的内容; 3、说…

CommonsCollections6利用链分析

目录 (一)利用链 (二)代码分析 0x01 TiedMapEntry 0x02 HashMap (三)POC: (一)利用链 先来看 ysoserial 中的利用链: /*Gadget chain:java.io.ObjectInputStream.readObject()…

[附源码]SSM计算机毕业设计线上图书销售管理系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

三大O(nlogn)算法分析

堆排序 demo 从第一个父节点开始,每一个都调换自己和所有子孙节点的上下层次调换,形成最大堆。然后进行堆分支调整 class Solution {public int[] sortArray(int[] nums) {maxHeap(nums);sort(nums);return nums;}public static void maxHeap(int[] n…

blender hardOps插件

hardOps将一些常用的功能整合在一起,方便调用,例如,平滑,倒角,标记锐边,添加修改器 打开hardOps 方法1:物体模式在舞台左侧选择hardOps图标 推荐用这个 方法2:这个插件的打开方式非…

C++【类型转换】

文章目录一、C语言的类型转换二、C的强制类型转换1.static_cast静态转换2.reinterpret_cast重新诠释3.const_cast小总结4.dynamic_cast动态转换一、C语言的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者…

【PAT】数据结构树和图月考复习1

选择题 2-1 我们用一个有向图来表示航空公司所有航班的航线。下列哪种算法最适合解决找给定两城市间最经济的飞行路线问题? A.深度优先搜索 B.Kruskal算法 C.拓扑排序算法 D.Dijkstra算法 解析: 本题为单源最短路径问题,应选用dijsktra算…

【WMWare 克隆CentOS虚拟机 】解决克隆后 ip 冲突 主机名重复问题

前言: 当我需要搭建数据库主从复制集群时,不想再重新安装一遍 mysql ,于是将安装好 mysql 的虚拟机克隆一份 一、克隆方法 鼠标右击虚拟机 ----> 管理 ----> 克隆 (选择完全克隆,选择好位置,设置好…

python函数使用

目录 一.函数基本概念 1.函数是什么 2.使用函数的好处是: 3.为什么要学习、使用函数 二.函数使用 1.定义方法 2.函数的调用 3.注意事项 4.例子 三.函数中的参数 作用 注意 四.函数中的返回值 1.什么是函数返回值? 2.返回值的应用语法: 注意 五.None类型 一.函数…

Android茶叶进销存

功能描述: 该app主要实现了茶叶的进货、销售、供应商、客户的管理,是一个完整的小型进销存app,适合新手学习sqlite数据库的基本使用。具体功能如下: 一、个人业务管理子系统 1、客户信息登记、修改、注销(客户管理) …

[Linux](15)线程基础,线程控制,线程的互斥与同步

文章目录前言Linux 线程概念线程的优点线程的缺点线程异常线程用途使用pthread_createpthread_join线程退出线程id分离线程线程互斥问题:临界资源访问问题问题解决:互斥锁的使用RAII 风格的加锁方式可重入 & 线程安全死锁的概念线程同步条件变量生产…

[附源码]计算机毕业设计springboot春晓学堂管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

让我们进入面向对象的世界(四)

文章目录前言一. 初始多态1.1 多态是什么1.2 多态是怎么工作1.3多态的向上转型和向下转型二.多态的好处三.总结前言 前面我们讲过了,面向对象继承的特性,下面我们会根据多态来展开讨论,还是用熟悉的方式,让大家去了解这个疯狂的东…

软考证书具体用途--详细介绍

拿到软考证书的前提是对你自己今后的职业发展有帮助,用得到才能对你而言发挥它最大的好处。 软考证书的具体用途: 1.纳入我国高校人才培养和教学体系 目前,软考已经被纳入高校人才培养和教学体系。在很多高校中,软考纳入学分&a…

设置渐变边框色

如上图所示,需设置渐变边框色,左右边框颜色固定,上边框从左到右开始渐变,下边框从右到左开始渐变。 思考了很久,如果看作是一个div,则需要用到 border-image属性设置渐变色。也可以看作是两个div&#xff0…

北大学者发现,经常喝牛奶,增加中国人肝癌和乳腺癌风险

牛奶是生活中常见的饮品。牛奶含有丰富的蛋白质,钙元素等多种营养成分,能为人体提供充足的蛋白质和钙,增强人体的体质,提高免疫力。然而,无论是什么,物极必反,过量饮用也会对身体产生不利的影响…

2022Flink大数据比赛项目-焦点科技大数据编程大赛

文章目录0.数据获取1.需求概要2.数据标准2.1.输入数据格式2.2.输出数据格式2.3.数据主键及关系3.表详细1.order_info2.bill_info3.bill_item4.ord_pay5.ord_pay_log6.pay_method7.pay_bank_card4.开发工具、语言版本、工具版本5.赛题解答数据分流任务1任务2任务3小结附录0.数据…

股票详情接口是怎样开发的?

一般情况下,在量化市场中,投资者使用的辅助炒股软件就包括很多数据接口,特别是股票详情接口系统更为可见,不过在使用之前,也是需要提前了解清楚它的开发原理,以及使用规则等,那么它是怎样开发出…

麦芽糖-链霉亲和素maltose-Streptavidins链霉亲和素-PEG-麦芽糖

麦芽糖-链霉亲和素maltose-Streptavidins链霉亲和素-PEG-麦芽糖 中文名称:麦芽糖-链霉亲和素 英文名称:maltose-Streptavidins 别称:链霉亲和素修饰麦芽糖,链霉亲和素-麦芽糖 提供PEG接枝修饰麦芽糖,麦芽糖-聚…