Python光学玻璃库opticalglass
文章目录
- opticalglass
- 函数调用
opticalglass
【opticalglass】,顾名思义,是Python的一个光学玻璃库,可以帮助方便地获取各种光学玻璃的折射率、色散、阿贝数等参数,支持主流玻璃厂商(如Schott、Ohara、Hoya等)的玻璃数据库。可通过pip或conda安装
pip install opticalglass
conda install opticalglass --channel conda-forge
在安装成功之后,只需在命令行中输入glassmap
,即可弹出光学玻璃窗口,如下图所示。由于需要加载大量数据,所以打开速度稍慢。
上图提供了六家厂商或品牌的产品对比图,分别是CDGM、Hikari、Hoya、Ohara、Schott和Sumita。提供四种对比类型,分别是折射率(Refractive Index)、部分色散(Partial Dispersion)、色散曲线(Dispersion Curve)以及阿贝数(Abbe Number)。
点击图中的点,可以在右下角显示其对应的参数。
函数调用
作为Python库,自然可以进入Python环境后调用,例如,想要画出上面的图,只需下列代码即可
import matplotlib.pyplot as plt
import opticalglass.glassmap as gmgmf = plt.figure(FigureClass=gm.GlassMapFigure,glass_db=gm.GlassMapDB()).plot()
plt.show()
【create_glass】函数,可以创建光学玻璃对象,当其输入参数为型号和厂商时,即可对当前数据库进行查询,例如肖特公司的N-BK7玻璃,即可用下面的代码创建
from opticalglass.glassfactory import create_glass
bk7 = create_glass('N-BK7', 'Schott')
print(bk7)
# Schott N-BK7: 517.642
【rindex】可以计算特定波长下该玻璃的折射率,其输入既可以是波长(nm),也可以是光谱线字符串
bk7.rindex(400)
# np.float64(1.5308485382492993)
bk7.rindex('d')
# np.float64(1.5168000345005885)
其中,d表示氦黄线,波长在587.56nm附近。常用光谱线及其波长如下表
线名 | 波长 | ||
---|---|---|---|
汞紫外线 | i | Hg | 365.01nm |
汞紫线 | h | Hg | 404.66nm |
汞蓝线 | g | Hg | 435.84nm |
镉蓝线 | F′ | Cd | 479.99nm |
氢蓝线 | F | H | 486.13nm |
汞绿线 | e | Hg | 546.07nm |
氦黄线 | d | He | 587.56nm |
钠黄线 | D | Na | 589.29nm |
氦氖激光线 | He-Ne | 632.80nm | |
镉红线 | C′ | Cd | |
氢红线 | C | H | 656.27nm |
氦红线 | r | He | 706.52nm |
铯红线 | s | Cs | 852.11nm |
汞红线 | t | Hg | 1013.98nm |
【glass_data】函数可以获取该玻璃的数据表格,其返回值支持字典索引,通过refractive indices即可返回这些线型的折射率
gd = bk7.glass_data()
gd['refractive indices']
'''
data item
2325.4 1.48921
1970.1 1.49495
1529.6 1.50091
1060.0 1.50669
t 1.50731
s 1.5098
r 1.51289
C 1.51432
C' 1.51472
632.8 1.51509
D 1.51673
d 1.5168
e 1.51872
F 1.52238
F' 1.52283
g 1.52668
h 1.53024
i 1.53627
334.1 1.54272
312.6 1.54862
296.7 NaN
280.4 NaN
248.3 <NA>
Name: N-BK7, dtype: object
'''