7

Python 与光学计算,2021

 3 years ago
source link: https://blog.heysh.xyz/2021/07/21/python-for-optics-in-2021/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

本文是 2019 年同名博文的更新版本。就像在那里说的,光学计算是一个非常宽泛的话题,把所有的库放在一起,倒是具有一种全栈 (full-stack) 工程师的气质,可是好像很容易造成 Stack Overflow

这次,我尝试对这些代码进行简单的分类。因为我不属于光学前端工程师 1,也不属于光学后端工程师 1,而更像是光学系统运维 1,分类得大概并不算准确。

物理光学演示:LightPipes

lightpipes.png

正像我之前说的那样,我使用 opticspy/lightpipes 完成了一部分激光物理过程的模拟,这个库大体上能够满足我当时的要求。但是要注意的是,个人感觉这个库是为了物理实验、教学演示而设计的,揭示原理的部分多于实际计算的部分,而且计算是序列化的。或许把它理解成类似虚拟物理实验室更好?

不过如果能力足够的话,大概能在上面实现一些比较复杂的功能。而且话又说回来,真正有一些严肃需求的人,早就去求助一些商业软件了。

光线追迹(Ray Tracing)

在上次的博文里,在光线追迹方面,我曾经介绍过 Sterncat/opticspyRayOptcihologramas/pyoptools,其中,前两组大概已经停止更新了,反而 pyoptools 看起来处于活跃开发的阶段。另外,这次我还看到了三个新鲜面孔:mjhoptics/ray-opticsmess42/pyratebryancole/raypier_optics2

ray-optics

rayoptics.png

ray-optics 的 Qt 界面

序列化的光线追迹,或成像光学,完成度很高,甚至自带一个类似 Zemax 的界面。在其手册上提到:

Rethink how image forming optical calculations are done absent historical constraints on computer speed and memory.

我学不会光学设计肯定是因为软件历史包袱太重,嗯。

Raypier

非序列的光学追迹,在几何光学传输的基础上增加了一部分高斯光束和衍射效应,并且可以(通过 VTK)生成一些漂亮的三维模型。(之后我一定要想办法成功安装……)

文档在这里。

pyrate

pyrate_in_freecad.png

正在写这篇博文的时候,我发现了这一套代码,似乎可以与 FreeCAD 互动,但是更具体的功能和特性还没有仔细看。毕竟我还没找到文档在哪里……

pyoptools

大概还在紧张地开发之中,等文档写好之后我会再回来看看的。

另:ricktu288/ray-optics

当然不是用 Python 编写的,但是谁不喜欢开箱即用的玩具呢?

光学设计:为望远镜 / 日冕仪准备的 Python

你想学习怎样设计日冕仪吗?

poppy.png

詹姆斯・韦伯空间望远镜的光学设计,来自 poppy

就像所有的专业软件一样,如果你理解了整个物理过程,中间的示意图就并不是那么重要了。这样的库包括:

它们大概都能够计算光学系统的点扩散函数(PSF)、调制传递函数(MTF)、点列图之类的,而优化算法似乎欠奉 4。如果你对上面的一系列名词不大了解的话,建议和我一起补习《光学系统设计》

我逐渐理解一切

这些库的对比可以看这里5 如果你真的想设计日冕仪的话也可以读一读这篇文献,那里对设计方法也有一些介绍。

就我而言,我比较喜欢 HCIPy,至少这里面还包含一些传递过程的内容,不至于直接跳到结论,和上个部分的库们更加接近一些。

电磁场级别的仿真

无论是用 EME 法求解模式的 CAMFR,还是用 FDTD 法计算电磁场的 meep,都远远超出了我的能力,请有识之士自行判断。

激光谐振腔的简单计算

rezonatorsimcav/simcav 等,或许过于简单了,可能 LightPipes 能做的事情还要更多一些。

大气光谱学

请移步这里这里

非线性光学

pyNLO

PyNLO,大概是 SNLO 的某种代替品。

总之祝大家好运吧。如果有条件的话,还是尽量使用商业软件。Seriously.


  1. 据我了解并不存在前两种职业。而运维在哪里都存在。 ↩︎

  2. 感觉这些既会光学又会 Python 的人,在起名字方面都没有什么创意。 ↩︎

  3. A J Eldorado Riggs, Garreth Ruane, Erkin Sidick, Carl Coker, Brian D. Kern, Stuart B. Shaklan, "Fast linearized coronagraph optimizer (FALCO) I: a software toolbox for rapid coronagraphic design and wavefront correction," Proc. SPIE 10698, Space Telescopes and Instrumentation 2018: Optical, Infrared, and Millimeter Wave, 106982V (9 August 2018); https://doi.org/10.1117/12.2313812PDF 文件 ↩︎

  4. 如果尝试优化的话,可以看看 doi:10.1016/j.ijleo.2018.10.073 ↩︎

  5. Ruane, G., “Review of high-contrast imaging systems for current and future ground- and space-based telescopes I: coronagraph design methods and optical performance metrics”, in Space Telescopes and Instrumentation 2018: Optical, Infrared, and Millimeter Wave, 2018, vol. 10698. doi:10.1117/12.2312948. ↩︎


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK