光学定位与追踪技术_如何为射线光学仿真创建复杂的透镜几何结构

“射线光学模块”扩展了 COMSOL Multiphysics® 软件的建模功能,允许用户引入射线追踪仿真。有了该模块,在集成软件环境中对复杂光学系统的热性能、结构及其他方面进行高阶研究不再是一个难题。创建几何模型是仿真成功的第一步。本文以 Petzval 透镜为例,探讨了如何创建复杂的透镜几何结构。

定义复杂透镜系统的光学指标

一般复杂光学系统的常见示例之一是带平场透镜的 Petzval 透镜。下图展示了焦距为 100 mm,焦比约为 f/2.4 的多元透镜系统。

66b0a04309f0c6d6376e4fc7174fc16b.png
包含平场透镜的 Petzval 透镜。

下表给出了这款摄影机镜头的光学指标(与参考文献 1 一致)。几何结构由两个双合透镜和一个平场透镜组成。射线总共折射穿过八个不同的表面。图片还显示了另外两个表面:孔径光阑和图像平面。

c7610cf90db44a1b312b89645260809c.png

在使用 COMSOL Multiphysics 及其附加的“射线光学模块”进行射线光学仿真之前,我们首先需要创建模型的几何结构。在下面的章节中,我们将讨论一些可用的选项。

创建 Petzval 透镜的几何模型

在 COMSOL Multiphysics 中创建模型几何结构有很多种方法。一种方法是使用内置的几何体素组合,包括球体、圆柱体、多边形和线段。你可以利用布尔、分割、变换和转换运算将这些简单的几何实体组合成更特别的形状。

95772192e1700bf2c71d0dc0f11d7924.png

528a1ff9331b0288ec47d42257fd9d31.png
各种几何体素(上图)以及布尔和分割运算(下图)。

你很快会发现,即便是创建最简单的光学几何结构(比如单透镜),也需要大量的运算。为了创建完整的几何模型,我们需要采用不同的数值多次重复相同的运算序列。举例来说,不同透镜的创建步骤是相同的,但是每个透镜的表面曲率半径各不相同。为了避免连续多次建立相同的几何序列,我们可以定义一些几何零件。这些零件是参数化序列,能够像几何体素一样调用。通过这种方式,我们每次可以使用零件实例节点来重复创建透镜。在此节点中,相关的输入参数均取自光学指标。

下图示例展示了一个用户自定义的几何零件。此例中,此零件为透镜,它具有任意的前后曲率半径,外径、表面直径和通光孔径具有多个不同的定义。

b63ad1d81a29d41267decfe361aad7fb.png
用户自定义几何零件的示例。

“射线光学模块”提供了一组预定义零件,这些零件拥有光学仿真最常用的形状,包括上文提到的透镜。这些零件都可以直接在“零件库”中调用。下节将讨论“射线光学模块”的“零件库”。

使用“射线光学模块”的“零件库”

“射线光学模块”已经创建了各种二维和三维零件。一个更高级的案例是三维普通球面透镜(下图)。此零件可用于创建各种形式的透镜,包括凹凸透镜表面的任意组合。实际上,我们可以灵活地利用它创建所有的 Petzval 透镜和双高斯透镜。下图中还展示了圆形平面环零件。该零件可方便我们创建孔径光阑并定义图像平面。

2984e4a41bc759227f70c687828bc86d.png

5685ecf7c9b589a4b029b73587cc31be.png
“射线光学模块”的“零件库”中的零件示例:三维普通球面透镜(上图)和圆形平面环(下图)。

“射线光学模块”提供的“零件库”中的零件经常包含一个或多个变量。这些变量是为了方便以各种不同的方式使用相同的基本零件。比如,为三维普通球面透镜指定不同的通光孔径或通光孔径分数。其他零件允许指定中心厚度或边缘厚度,以生成各种变量。我们还可以指定有效焦距(和折射率)来替代曲率半径。

将光学指标参数加载到 COMSOL Multiphysics® 中

Petzval 透镜几何模型已经基本成型。接着,我们继续插入一个三维普通球面透镜的实例,然后直接输入光学指标表格中的几何参数(也就是曲率半径、中心厚度和直径)。不过,我们可以通过调整光学指标的格式,使之作为一个整体(比如文本文件)被加载到当前模型的全局定义 节点中,从而简化上述过程。如此一来,以后只要需要调整光学指标,就可以在一处地方完成所有修改。Petzval 透镜的光学指标参数如下图所示。

465bbc267a87c2ae62a7f5d4738a8aef.png
Petzval 透镜模型的光学指标参数。

现在已经从“零件库”中加载了两个几何零件(三维普通球面透镜和圆形平面环零件),现在插入 Petzval 透镜(“透镜 1”)的第一个单元。上文定义的光学指标参数可用作零件实例 节点的输入参数。每个透镜参数都拥有一个唯一的名称(比如 Tc_1、R1_1、R2_1 等),所以这些值可以直接输入到表达式 字段中。我们也可以加载包含每个透镜单元的相关表达式定义的文本文件,从而简化此过程。

59283b0b8fe90be49133c9d463ab42ee.png
Petzval 透镜几何模型的第一个单元(透镜 1)。

需要注意的是,除了允许定义表面通光孔径外,三维普通球面透镜零件还可用于指定每个表面的物理直径和整个透镜直径。这些功能使得我们可以构建出与计划制造的几何结构非常匹配的几何结构。举例来说,可以轻松创建包含透镜及其四周的镜筒上的力学与热效应的高保真模型。

接下来,如下图所示,插入三维普通球面透镜的第二个实例,它的作用是定义“透镜 2”。当然,这个单元必须被置于几何模型内合适的绝对位置上。标准的光学指标通常指定了当前透镜的入射面与前面透镜的出射面之间的距离。因此,三维普通球面透镜零件的定义中包含可定位每个透镜表面的入射和出射顶点的工作平面。之后,根据位于前面透镜的出射顶点上的工作平面来放置每个透镜零件实例。如下所示,“T_1”是透镜 1 的出射面和透镜 2 的入射面之间的距离(在此例中,间隔正好是 0。由此我们成功创建了双合透镜,但是同样的原理适用于任何给定的间隔)。

aab73e2bb507a9055ccfc5332642e8a1.png
Petzval 透镜模型几何结构的第二个单元(透镜 2)。

多物理场耦合:Petzval 透镜的射线追踪

其他表面可与透镜单元一起添加到定义了孔径光阑和图像平面的 Petzval 透镜几何模型中。为了方便起见,我们可以将整个几何模型另存为几何序列,这样就可以将它应用到其他 COMSOL Multiphysics 仿真中。完整模型(忽略了杂光孔径)如下所示。我们可以看到,“射线光学模块”具有对完全划分网格的几何结构进行射线追踪的特殊功能。相同的网格还可用于求解其他物理量,比如透镜几何结构中的温度和结构位移,借此简化双向耦合多物理场模型的创建过程。

121981ba36264ab1041298f201bfbcfb.png
完整的 Petzval 透镜几何模型,图片显示了表面网格单元。

其他特征可以添加到零件的定义中。比如,工作平面还被定义在三维普通球面透镜零件中,可指示透镜前后边的位置。这些工作平面可用于精确定位阻挡杂光的光阑,或者定位机械装配特征。此外,我们通过定义选择来分离各个透镜零件的通光孔径、障碍物和边。这些选择可用于快速定义几何光学仿真需要的各种物理特征,如下图所示。

fe6a3b15270d7ea84e2a196c707f94a6.png

3b2996dba6ac5800deeb8f53ffe5ce4b.png
Petzval 透镜中用于定义通光孔径(上图)和障碍物(下图)的选择。

在这个射线追踪案例中,我们基于栅格的射线轨迹生成了单个波长(550 nm)和视场角(轴上)上的结果。在后处理过程中,为了增加视觉效果,下图所示的结果利用了定制颜色表达式。左图(射线追踪)的颜色表达式基于图像平面上的射线位置。下图(点图)则基于入射光瞳的射线位置。利用不同颜色表达式有利于直观显示入射光瞳的光线对最终图像质量的相对贡献程度。

087777051b4643d4cde3862f125e501c.png

1492aac7875e0c6180d76af6c2c4214f.png
Petzval 透镜的射线追踪(上图)和点图(下图)。

后续操作

上文的案例展示了如何在进行射线追踪仿真之前创建光学几何结构。点击下方按钮尝试操作此模型。进入“案例下载”页面后,如果您拥有 COMSOL Access 账号和有效的软件许可证,你可以下载 MPH 文件。

Petzval 透镜​cn.comsol.com
ca007ff84b7cdd0c2599c59a02465e50.png

学习更多关于透镜建模的知识

  • 查看另一个透镜案例:
双高斯透镜​cn.comsol.com
7ab4e92459573859354252fce9f84293.png
  • 阅读相关的博客文章:
利用射线追踪仿真分析白瞳中阶梯光栅光谱仪​cn.comsol.com
86236fde9ea06d11f43ed09ef3ff48a2.png
萨格纳克干涉仪和环形激光陀螺仪的射线光学仿真​cn.comsol.com
cd12d1a41f56d36e42c6b119f39c0bdb.png

参考文献

  1. M.J. Kidger, Fundamental Optical Design, SPIE Press, 2001.

经授权转载自cn.comsol.com/blogs,原作者Stuart Barnes

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

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

相关文章

琥珀ai_琥珀项目:Java的未来暴露

琥珀ai如果一切按计划进行(我们正在研究Jigsaw项目),那么Java 9将在不到100天的时间内启动。 您可以在此处加入倒计时以发布它。 它将包含一长串新功能和升级功能,其中一些我们迫不及待想要看到实际应用。 但是,有些功…

MySQL的存储过程和函数简单写法

什么是存储过程 简单的说,就是一组SQL语句集,功能强大,可以实现一些比较复杂的逻辑功能,类似于JAVA语言中的方法; ps:存储过程跟触发器有点类似,都是一组SQL集,但是存储过程是主动调用的&#…

python对excel求和_Python 两个Excel文件对应位置求和并存储

最近~老板给我的工作一直都有对大量的Excel的操作比如两Excel对应位置求和,并存储。(两Excel表格的第一列和第一行是一毛一样的,不需要求和,原样保存!)本着能躺着就不坐着的原则,只想快点躺着,果断放弃了手…

zdal配置文件_Autofac的基本使用---4、使用Config配置

准备使用的表是Student,创建相关的IDAL、DAL、IBLL、BLL层。使用EF,创建一个Model层,存放edmx文件。创建一个Infrastructure层,基础设施项目,使用泛型类型。普通类型的使用1.APP.Config 配置信息此处有个需要注意的地方…

判断选择语句switch...case

switch(被检测量){ case 常量1: 语句1; break; case 常量2: 语句2; break; ... deault: 语句N; break; }被检测量的数据类型 基本数据类型:byte、short、int、char引用数据类型:String、enum 穿透 int num 2; switch(num){ case 1: System.out.print…

Java与Python:哪一个最适合您? [信息图]

通过从您的应用程序学习企业APM产品,发现更快,更有效的性能监控。 参加AppDynamics APM导览! 在软件开发中,很少有问题比选择编程语言更具分裂性或部落性。 软件开发人员经常以自己选择的工具来强烈地认同自己,将客观…

怎么把php查询到的值显示到下拉框中_RazorSQL for Mac(数据库工具查询)8.5.3

razorsql mac版更新日志变化 查询结果:如果有多个查询结果选项卡,则从查询结果选项卡中选择比较查询结果选项将填充比较工具中的两个查询 漏洞修补 不需要重新启动razorsql才能生效的首选项需要重新启动 自动更新程序不适用于Windows计算机 缺少HBase连接…

docker删除es数据_木杉入门Elasticsearch(4):安装ES

木杉入门本系列的目标是在本地搭建一个Elasticsearch的服务集群,通过在阿里云服务器搭建FRP通道对外提供服务,为小规模应用提供一种高性价比的解决思路。系列内容:木杉入门Elasticsearch(1):ESXI虚拟机安装CentOS木杉入门Elastics…

MySQL数据库常用命令_常用SQL语句及命令_MySQL常用语句

文章目录一、常用的 SQL 语句(一)查看当前登录用户(二)查看当前数据库(三)如何查看全部用户?(四)创建数据库(五)选择要操作的数据库(六…

spock_在扩展Spock时输出给定值

spockSpock是一个Java测试框架,由GradleWare的软件工程师Peter Niederwieser于2008年创建,它可以促进BDD的发展。 利用这个 例如 ,一个故事可以定义为: Story: Returns go to stockAs a store owner In order to keep track of …

将serversocket 写在按钮事件中连接不上_Java服务器的模型—TCP连接/流量优化

本文很长哦,但请给我一点时间。通常,我们的应用程序不需要并行处理成千上万的用户,也不需要在一秒钟内处理成千上万的消息。我们只需要应付数十或数百个并发连接的用户,就可以在内部应用程序或某些微服务应用程序中承受如此大的负…

ios 开发设置左滑退出_苹果铃声怎么设置自己的歌?教你用手机快速搞定!

苹果手机铃声怎么设置为自己喜欢的歌曲?由于iOS系统的封闭性,想要给苹果手机更换铃声不像在安卓手机一样那么方便,看到网上很多教程也是需要使用电脑才能完成铃声的设置,有没有不复杂的方法来直接帮我们更换手机铃声?别…

dp括号匹配 网易面试题_面试题:大括号验证

dp括号匹配 网易面试题这是较容易的编码任务之一,但是您仍然可以在一些初步的技术筛选中达到目标。 问题看起来像这样: 给定仅包含字符( , ) , { , } , [和]的字符串,请确定输入字符串是否有效…

MySQL如何删除有外键约束的数据

在数据库中查看外键是否有效,值为1表示外键有效 mysql> select foreign_key_checks; ---------------------- | foreign_key_checks | ---------------------- | 1 | ---------------------- 1 row in set (0.00 sec)将外键的值设置为0,此时…

python绘制动画示例_Python使用matplotlib绘制动画的方法

本文实例讲述了Python使用matplotlib绘制动画的方法。分享给大家供大家参考。具体分析如下:matplotlib从1.1.0版本以后就开始支持绘制动画下面是几个的示例:第一个例子使用generator,每隔两秒,就运行函数data_gen:# -*…

基于单片机步进电机ppt答辩_基于MCU和DSP的步进电机控制技术分析

来源 | 控制与传动步进电机已经渗透入我们生活的方方面面,本文介绍了一些重要的步进电机相关技术,为开发人员基本了解步进电机的工作原理提供了足够的信息,同时也介绍了用微控制器或数字信号处理器控制步进电机的方法。步进电机也叫步进器&am…

拼图登陆拼图二维码验证_另一个拼图观点

拼图登陆拼图二维码验证在过去的几周中,围绕Java 9即将发布及其最著名的功能:Java平台模块系统JPMS进行了激烈的辩论。 –以其项目名称Jigsaw更为人所知。 模块系统以正式规范过程的形式引入Java生态系统 – JSR –需要由专家组以最终形式批准。 在该专…

【C++】多线程(四)

这是多线程的最后一篇文章。 std::promise promise 的作用很简单,在一个线程t1中保存一个类型typename T的值,可供相绑定的std::future对象在另一线程t2中获取。事实上,它与future基本是成对出现的。来看下面的例子: //声明一个…

广告设计师如何使用python_设计师必看!高效率工具,30分钟完成别人一天的工作!...

原标题:设计师必看!高效率工具,30分钟完成别人一天的工作!世界上只有两种物质:高效率和低效率;世界上只有两种人:高效率的人和低效率的人。—— 萧伯纳今天这篇文章主要想和大家分享一个效率工具…

Linux/MacOS/Mac OS 命令终端/命令行如何查找文件/搜索文件和删除文件

文章目录问题一:我要在当前目录下查找名称中含有“Lib”的文件和目录,注意不要在子目录下查找问题二:在当前目录下如何删除名称中含有“abc”的文件和文件夹问题一:我要在当前目录下查找名称中含有“Lib”的文件和目录&#xff0c…