mini项目(完结):透明材料的折射率、二、三、四色散计算器

近期有一求助,“收集/列表在临近1微米波长处,空气、水、石英玻璃,K9玻璃、Sapphire的2、3、4阶色散系数和n2值?(一张4 X4的色散和非线性参数对比表)”

我有2个番茄的截止时间,拿到这个问题去问了各路gpt大神:

模型回答评价
Bing AI非常抱歉,我无法提供您所需的信息。我只能回答一些常见问题和提供有限的帮助。如果您有其他问题,我会尽力回答。拒绝回答
智谱清言很抱歉,根据我的知识截止日期,我无法直接为您提供所要求的具体数据。然而,我可以提供这四种材料的一般性质和它们在色散和非线性参数方面的行为差异。空气、水、石英玻璃和K9玻璃在光学性能上有着本质的不同,这些差异会影响它们在色散和非线性参数上的表现。给点不痛不痒的常识
Google Gemini

Unfortunately, I don't have direct access to comprehensive databases containing optical material properties like dispersion coefficients and n2 values. However, I can help you find this information through various online resources. Here are some suggestions:

1. Online Databases:。。。。

给我列了几个可能去找的数据库和公司网站等

此轮下来,Google Gemini完胜。

根据Gemini的提示,我发现直接去找太难。因为材料+波长+二、三、四阶这几个限定词,需要搜索量过大。几个关键词合并,几乎搜索不出来。但是在查找肖特玻璃参数库的时候,发现其实好搜的是标准玻璃各种系数,再用sellmeier方程去自己算。翻出来大学的红宝书,终于找到了sellmeier色散方程,及如何推导二阶、三阶、四阶色散的方程。故下一步就是自己编程算。

编程计算透明材料折射率、二、三、四阶色散公式

Prompt撰写:

1,“请帮我写出来计算折射率的sellmeier方程的数学表达式和python代码”

2,'''创造一个函数及其测试用例,使得输入入射波长lamda和sellmeier系数B1、B2、B3、C1、C2、C3计算材料的折射率、二、三、四阶色散。在计算过程中,建议在入射波长两端各扩充100个数,以用数值微分的方法获得目标波长的n,b_1、b_2、b_3和b_4'''

#输入的波长单位是um,输入的单位是ps2,ps3,ps4

#折射率公式为:n=sqrt(1+B1*lamda^2/(lamda^2-C1)+B2*lamda^2/(lamda^2-C2)+B3*lamda^2/(lamda^2-C3))

#beta=n*2*pi*/lamda,omega=2*pi/lamda

#将beta对omega求一阶导数得b_1

#将beta对omega求二阶导数得b_2

#将beta对omega求三阶导数得b_3

#将beta对omege求四阶导数得b_4

#输出n,b_1,b_2,b_3,b_4,以上结果保留六位有效数字。

#测试用例信息:带入BK7玻璃在800nm时的量,输入波长lamda=0.8,B1=1.03961212,B2=0.231792344,B3=1.010469450,C1=0.006000699,C2=0.0200179144,C3=103.560653。期望输出的b_2=446,b_3=321。

##重点:在和chatgpt交谈过程中,发现Gemini还是很好用的。即欲求微分,先画出两个微分对象的曲线,再调用函数。而且,数值计算从数据出发,直接绕过大量的二、三、四阶推导公式,又快又好。如此得到了解决这个问题的思路。###

一、波长数组——将输入波长,前后扩充100个数,共201个,变成波长数组,输入波长序号为数组第[100]。

二、折射率数组n——通过sellmeier方程,算出折射率数组。(折射率数组曲线是重中之重,是所有后续计算的核心。无论是sellmeier公式、还是其他折射率解析式,或者实验测量出来的折射率数组)

频率数组omega——通过波长/频率转换公式,算出频率数组。

波数数组beta——通过折射率和频率数组,算出波数数组。

三、beta数组和omega数组利用微分库函数做微分,得到beta_1数组。beta_1 = np.gradient(beta);beta_1和omega做微分,得到beta_2数组;beta_2和omega做微分,得到beta_3数组;beta_3和omega做微分,得到beta_4数组。

得到代码如下:

import numpy as np
import matplotlib.pyplot as plt
def sellmeier(lamda, B1, B2, B3, C1, C2, C3):
    """
    计算 Sellmeier 公式的折射率、二、三、四阶色散

    Args:
        lamda: 入射波长,单位为 um
        B1, B2, B3, C1, C2, C3: Sellmeier 系数,B没有单位,C的单位是 um2

    Returns:
        n, b_1, b_2, b_3, b_4: 折射率、二、三、四阶色散
    """
    #创建x轴的取值范围,波长单位um
    lamda_range = np.linspace(lamda - 10e-2, lamda + 10e-2, 201)
    # 在目标波长取值范围,计算折射率曲线图。折射率无单位。
    n_range = np.sqrt(1 + B1 * lamda_range ** 2 / (lamda_range ** 2 - C1) + B2 * lamda_range ** 2 / (lamda_range ** 2 - C2) + B3 * lamda_range ** 2 / (lamda_range ** 2 - C3))
    #在目标波长范围内,计算beta曲线图,需要单位转换成m
    beta_range = n_range * 2 * np.pi / (lamda_range*1e-6)
    #在目标波长范围内,计算欧米伽曲线图
    omega_range=2*np.pi*3e8/(lamda_range*1e-6)
    #在目标波长范围内,计算beta_1曲线图,注意是beta对omega的求导,不是对lamda。所以在求导之前需要准备好beta曲线和omega曲线
    b_1 = np.gradient(beta_range, omega_range)  # 使用 np.gradient 计算 b_1 的数组
    # 计算 b_2
    b_2 = np.gradient(b_1, omega_range)  # 使用 np.gradient 计算 b_2 的数组
    # 计算 b_3
    b_3 = np.gradient(b_2, omega_range)
    # 计算 b_4
    b_4 = np.gradient(b_3, omega_range)
    plt.plot(lamda_range,n_range)

    plt.xlabel('SHG')
    plt.ylabel('E_t')
    plt.title('time of the laser pulse')
    plt.show()

    return n_range[100], b_1[100], b_2[100], b_3[100], b_4[100]  # 返回所有色散的第一个值

def test_sellmeier():
  """
  测试 sellmeier 函数,用BK7的参数,在1um下验证。
  """
  #BK7,验证通过
  lamda = 1.03
  B1 = 1.03961212
  B2 = 0.231792344
  B3 = 1.010469450
  C1 = 0.006000699
  C2 = 0.0200179144
  C3 = 103.560653

  # #silica,验证通过
  # lamda = 1.03
  # B1 = 0.6961663
  # B2 = 0.4079426
  # B3 = 0.8974994
  # C1 = 0.004679148
  # C2 = 0.01351206
  # C3 = 97.934002

  #water
  lamda = 1.03
  B1 = 0.75831
  B2 = 0.08495
  B3 = 0
  C1 = 0.01007
  C2 = 8.91337
  C3 = 0

  #Sapphire
  lamda=1.03
  B1 = 1.4313493
  B2 = 0.650547
  B3 = 5.3414
  C1 = 0.0726631**2
  C2 = 0.1193242**2
  C3 = 18.028251**2

  n, b_1, b_2, b_3, b_4 = sellmeier(lamda, B1, B2, B3, C1, C2, C3)
  print(n, b_1*1e13, b_2*1e28, b_3*1e43, b_4*1e58)
  # 检查折射率

  assert np.allclose(n, 1.52502298, atol=1e-6)

  # 检查二阶色散

  assert np.allclose(b_2, 446.429792, atol=1e-6)

  # 检查三阶色散

  assert np.allclose(b_3, 321.020018, atol=1e-6)


if __name__ == "__main__":
  test_sellmeier()

如果是air,将其中的折射率公式改为气体air的公式,得到的计算程序如下:

import numpy as np
import matplotlib.pyplot as plt
def air_despersion(lamda,P,T):
    """
    计算 空气的折射率系数

    Args:
        lamda: 入射波长,单位为 um
        P压强,单位millibar,即千分之一大气压。
        T温度,单位K

    Returns:
        n, b_1, b_2, b_3, b_4: 折射率、二、三、四阶色散
    """
    #创建x轴的取值范围,波长单位um
    lamda_range = np.linspace(lamda - 10e-2, lamda + 10e-2, 201)

    """#最核心一行代码: 在目标波长取值范围,计算折射率曲线图。折射率无单位。"""
    n_range =1+(77.6*(1+7.52*1e-3/(lamda_range**2)))*P*1e-6/T

    #在目标波长范围内,计算beta曲线图,需要单位转换成m
    beta_range = n_range * 2 * np.pi / (lamda_range*1e-6)
    #在目标波长范围内,计算欧米伽曲线图
    omega_range=2*np.pi*3e8/(lamda_range*1e-6)
    #在目标波长范围内,计算beta_1曲线图,注意是beta对omega的求导,不是对lamda。所以在求导之前需要准备好beta曲线和omega曲线
    b_1 = np.gradient(beta_range, omega_range)  # 使用 np.gradient 计算 b_1 的数组
    # 计算 b_2
    b_2 = np.gradient(b_1, omega_range)  # 使用 np.gradient 计算 b_2 的数组
    # 计算 b_3
    b_3 = np.gradient(b_2, omega_range)
    # 计算 b_4
    b_4 = np.gradient(b_3, omega_range)
    plt.plot(lamda_range,n_range)

    plt.xlabel('SHG')
    plt.ylabel('E_t')
    plt.title('time of the laser pulse')
    plt.show()

    return n_range[100], b_1[100], b_2[100], b_3[100], b_4[100]  # 返回所有色散的第一个值


if __name__ == "__main__":
  n, b_1, b_2, b_3, b_4 = air_despersion(1.03,1000,293.15)
  print(n, b_1*1e13, b_2*1e28, b_3*1e43, b_4*1e58)

得到结果:

波长材料折射率n

beta_1:

fs/cm

beta_2:

fs^2/cm

beta_3

fs^3/cm

beta_4:

fs^4/cm

非线性折射率n2(cm2/W )[仅供参考]
0.8um(校正)silica1.453348905361.12274.4-114.01
0.8um(校正)BK71.510850888445.9320.35-105.78

0.8um

(校正)

Sapphire

(o-wave)

1.7659385579.6420.4-155.53.0e-16
0.8umWater1.32844757301.0347.5-338.2
1.03umsilica1.4548757189.5410.6-503.42.74e-16
1.03umBK71.50750702250.9454.3-504.63.18e-16
1.03umAir1.000333342.30.2050.11050.01643.01e-19
1.03umWater1.3244466027.31837.06-2136.41.9e-16
1.03um

Sapphire

(o-wave)

1.75559144.0321.5603.7-667.272.9e-16

Ref:

sellmeier 系数查询:

1,https://www.researchgate.net/figure/Sellmeier-Constants-for-silica-and-water-at-a-temperature-of-20-C-10_tbl1_329533657

2,BK7:肖特玻璃白皮书

3,Sapphire:Far-detuned mid-IR wavelength conversion at 4.05 µm in a tellurium oxide rib waveguide pumped at 1550 nm: Design and analysis

非线性系数:1,BK7&silica

BK7:The nonlinear indexes used in all three models are BK-7 glass at 3.18 × 10 −20 m 2 /W

Filamentation and damage in fused silica induced by tightly focused femtosecond laser pulses   A. Couairon, L. Sudrie, M. Franco, B. Prade, and A. Mysyrowicz

Phys. Rev. B 71, 125435 – Published 31 March 2005

silica:(2.74 ± 0.17) × 10-16 cm2/W at 1053 nm,Review and assessment of measured values of the nonlinear refractive-index coefficient of fused silica

2,water :A nonlinear photonic crystal fiber for liquid sensing application with high birefringence and low confinement loss

3,air:Kerr-driven nonlinear refractive index of air at 800 and 400 nm measured through femtosecond laser pulse filamentation | Applied Physics Letters | AIP Publishing

4,Sapphire:papaer——Dispersion of the nonlinear refractive index in sapphire

  • 8
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值