首页/文章/ 详情

Ansys 2024 R2-Ansys 光学与光子学仿真新功能介绍——Zemax

1月前浏览1199

Zemax新功能介绍

1. 离轴孔径和RSI的公差操作数

OpticStudio 将添加Zernike标准垂度表面作为复合表面,并根据操作数改变一个或多个Zernike项,即:

ISOA→Z4;
ISOB→Z5-Z37;
ISOC→Z11,Z22,Z37,Z56;
ISOD→Z5-Z37。
(ISOA:峰-峰值功率容差;ISOB:峰-谷总的不规则度容差;ISOC:峰-谷旋转对称不规则性容差;ISOD:RMS总的不规则度容差)      
     

2. 表面斜率、表面曲率和相位斜率分析改进

引入新的“模量”数据类型,用于分析最大表面斜率、曲率和相位斜率。并且可通过在优化过程中限制最大斜率或曲率来提高可制造性。
     

3. 3D布局:瞳孔可视化改进

3.1 提高瞳孔可视化的精确度。
3.2 支持使用坐标来中断离轴系统。
3.3 虚线描绘近轴/真实出瞳;实线描绘近轴/真实入瞳。
     

4. MTF操作数:衍射限制MTF

4.1 直接使用衍射限制的MTF值进行更有效的MTF优化。
4.2 改进涵盖三个MTF操作数(MTFS、MTFT、MTFA)。
     

5. TSAG操作数

新的优化操作数可以在离轴系统的任意坐标查看sag值。

1)增强灵活性;
2)方便用于离轴系统;
3)一体化。

6. 光源文件:IES TM-25

6.1 NSC模式下增强的源文件对象现在接受TM-25文件作为光源数据。
6.2 支持将非序列光线追踪中的光线导出到TM-25文件中。
6.3 光源查看器、通量vs.波长以及光源分析现在支持TM-25文件。
     

7. 物理光学传播(POP):支持黑盒

现在可以在包含黑盒的系统中无缝进行POP分析。能确保敏感或专有数据的机密性。应用价值较高,尤其是在光纤耦合器或光子集成电路设计中。
     

8. FFT MTF 多线程

8.1 性能改进:

1)提高CPU资源利用率;

2)针对具有多个字段的系统进行优化;

3)提高多波长分析效率。

8.2 复杂性越高,提升效果越显著。如在4核笔记本电脑上,分析手机摄像机镜头(3个波长、5个视场、近轴光线瞄准、14个表面变形文件、2个热渐变折射率分布),计算时间能从原来的6分钟缩短到3分45秒。
     

9. Lumerical 亚波长模型(LSWM)动态链接:支持曲面上的光栅

         

9.1 利用最新的增强功能可以提升AR设计。

9.2 以前的动态链接仅限于在平面上定义光栅,而更新的插件可以动态定义曲面上的光栅。(曲面包括二元面1、二元面2、二元面2A、全息透镜、透镜阵列1和环形全息图)
9.3 对于波导等AR应用中的衍射元件建模非常有用。

10. 将光学设计导出至Speos的改进

10.1 更新以下序列表面的支持,包括:Biconic、Biconic Zernike、Polynomial、Extended Polynomial、Zernike Standard Sag、Zernike Fringe Sag。
10.2 更新以下非序列物体的支持,包括:Biconic Lens、Biconic Zernike Lens、Extended Polynomial Lens、Extended Polynomial Surface、Zernike Surface、Biconic Zernike Surface。
     

11. 自动安装程序

Ansys自动安装程序提供了一个用于安装Ansys产品的单一窗口,从而简化了安装,并且支持同时下载,使得安装更加便捷,更加高效。
     

12.增加部分学习和支持选项卡

综合资源包括Ansys创新课程、Ansys学习中心和Ansys Zemax学习论坛。
     

- END -



关注更多产品资讯

关注摩尔芯创



摩尔芯创专注于为硅基光电子、电力电子、高科技半导体等行业提供先进的电子设计自动化(EDA)和计算机辅助工程(CAE)协同解决方案;提供从光学、光电子学、电磁场、结构、流体、多物理场耦合等全面的工业软件应用解决方案和咨询服务。


来源:摩尔芯创
电路半导体光学电力电子UMCSTLumerical曲面ZemaxSPEOS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-10-19
最近编辑:1月前
摩尔芯创
光学仿真、光学培训、硅基光电子
获赞 6粉丝 5文章 36课程 0
点赞
收藏
作者推荐

Lumerical Python API (五) - 数据传递

用Python API启动Lumerical的仿真软件时,建立了两者环境之间的联系,彼此的工作空间不共享,而是在变量传递过程中创建一个相同的副本,根据getv( )和put( )函数中定义的转换类型来进行前传和后传。2020a R4版本将典型传输速率提高至约为300MBs,并将传输数据所需的内存开销减少[1],提高了数据传输的效率,但当数据量传输量非常大的时候,数据传递的规律仍显得很重要。Lumerical和Python中的数据类型对应如下:LumericalPythonStringstringRealfloatComplexnp.arrayMatrixnp.arrayCell arraylistStructdictionaryDatasetdictionary仿真过程中,经常会从监视器中提取各种数据类型的结果,并进一步进行传递、数据处理、作图等操作。接下来针对大家使用Python API进行仿真或提取结果时,常涉及到的数据类型进行总结:1. 原始数据(Raw Data)从运行过的仿真工程中的监视器结果中,可以直接访问原始数据,这些数据在 Lumerical中以矩阵的形式存在,将其传递到Python环境时,将作为numpy数组返回。矩阵各维度的长度将与相关参数的长度一致,与监视器在各个维度上的监测点个数有关。属性:数据集中实际数据,例如,电场分量Ex、Ey、Ez是场分布监视器的属性。参数:数据集的相关位置向量。例如,位置x、y、z和频率f可以是场剖面监视器的参数。用getdata( )函数可以获取监视器的原始数据,注意与getresult( )区分,得到数据后可以用Python的squeeze( )函数,或者Lumerical的pinch( )函数来删除单个元素的维度,调整结果矩阵的形式。以下是一个简单的Python API控制Lumerical FDTD进行仿真,并提取数据回到Python的例子:with lumapi.FDTD() as fdtd: fdtd.addfdtd(dimension="2D", x=0.0e-9, y=0.0e-9, x_span=3.0e-6, y_span=1.0e-6) fdtd.addgaussian(name = 'source', x=0., y=-0.4e-6, injection_axis="y", waist_radius_w0=0.2e-6, wavelength_start=0.5e-6, wavelength_stop=0.6e-6) fdtd.addring( x=0.0e-9, y=0.0e-9, z=0.0e-9, inner_radius=0.1e-6, outer_radius=0.2e-6, index=2.0) fdtd.addmesh(dx=10.0e-9, dy=10.0e-9, x=0., y=0., x_span=0.4e-6, y_span=0.4e-6) fdtd.addtime(name="time", x=0.0e-9, y=0.0e-9) fdtd.addprofile(name="profile", x=0., x_span=3.0e-6, y=0.) # Dict ordering is not guaranteed, so if there properties dependant on other properties an ordered dict is necessary # In this case 'override global monitor settings' must be true before 'frequency points' can be set props = OrderedDict([("name", "power"), ("override global monitor settings", True), ("x", 0.),("y", 0.4e-6),("monitor type", "linear x"), ("frequency points", 10.0)]) fdtd.addpower(properties=props) fdtd.save("fdtd_file.fsp") fdtd.run() #Return raw E field data Ex = fdtd.getdata("profile","Ex") f = fdtd.getdata("profile","f") x = fdtd.getdata("profile","x") y = fdtd.getdata("profile","y")print('Frequency field profile data Ex is type', type(Ex),' with shape', str(Ex.shape ))print('Frequency field profile data f is type', type(f), 'with shape', str(f.shape ))print('Frequency field profile data x is type', type(x), 'with shape', str(x.shape ))print('Frequency field profile data y is type', type(y), 'with shape', str(y.shape ))Python程序设置了光源、环形结构、网格、监视器等,最终返回相应结果的维度,如下图所示,可以直接用Python对数据进行进一步处理、出图。2. 数据集(Datasets)数据集是互相相关的结果,打包在Lumerical中,可以轻松地可视化或访问,主要包含三种直线数据集:其中,Nx, Ny, Nz为坐标向量的长度,Np为参数长度。正如本节之前提到的,如果数据集中参数的维度比较小,例如二维或一维,那么很多个维度的长度将为1,这时就需要使用Lumerical的pinch( )函数来删掉多余的单元素维度。非结构化空间数据集情况类似,但包含了网格点的连通性属性,作为空间属性,广泛用于有限元求解器CHARGE、HEAT、FEEM和DGTD。传递给python环境的空间数据集将被转换为字典,字典中的键(keys)与各种属性和参数相关联。由于属性是矩阵,它们将转换为numpy数组。此外,它们将有一个特殊的元数据标签"Lumerical_dataset",当执行往返传递时,可以保留它们的结构。使用 getresult( )方法获取返回的数据集:with lumapi.FDTD('fdtd_file.fsp') as fdtd: #返回两种维度不同的数据集 T, time = fdtd.getresult("power", "T"), fdtd.getresult("time","E") #创建一个非结构化数据集 fdtd.eval('x = [0;1;2];y = [0;sqrt(3);0];z = [0;0;0];C = [1,3,2];ds = unstructureddataset(x,y,z,C);') ds = fdtd.getv('ds')print('Transmission result T is type', type(T),' with keys', str(T.keys()) )print('Time monitor result E is type', type(time),' with keys', str(time.keys()) )print('Unstructured dataset is type', type(ds),' with keys', str(ds.keys()) )返回结果:[1]https://optics.ansys.com/hc/en-us/articles/360041401434-Passing-Data-Python-API来源:摩尔芯创

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈