0
点赞
收藏
分享

微信扫一扫

Ru的复折射率用于FDTD 200nm到1200nm

1. 引言

FDTD(Finite-Difference Time-Domain)是一种计算电磁波动方程的数值方法,常用于模拟和分析光学器件的行为。在进行FDTD模拟之前,需要提供材料的光学参数,包括折射率的实部和虚部。本文将介绍如何获取金属Ru在200nm到1200nm波长范围内的折射率实部和虚部,以用于FDTD模拟。

2. 金属Ru的光学参数

金属Ru的光学参数通常通过实验或计算获得。在本文中,我们将使用计算得到的光学参数。金属的光学参数主要包括折射率的实部和虚部。实部决定了光在材料中传播的速度,虚部则决定了材料对光吸收的强度。

3. 折射率实部和虚部的定义

折射率(refractive index)描述了光在介质中传播时的速度和弯曲程度。一个复折射率(complex refractive index)的形式为:

n = n' - ik

其中n为折射率的实部,n'为折射率实部的绝对值,k为折射率的虚部。虚部k保持正号表示介质对光的吸收。

4. 获取金属Ru的光学参数数据

要获取金属Ru在200nm到1200nm波长范围内的折射率实部和虚部,可以使用实验数据或模型拟合得到的数据。在本文中,我们将使用Johnson和Christy开发的模型来计算金属Ru的光学参数。

Johnson和Christy模型提供了金属Ru在不同波长下的复折射率数据。可以在他们的研究论文中找到这些数据:Johnson和Christy模型。

5. 插值法获取200nm到1200nm范围内的折射率数据

由于Johnson和Christy模型提供的数据点可能不在所需的波长范围内,我们需要使用插值法获取200nm到1200nm范围内的折射率数据。插值法通过已知数据点推算出在两个已知点之间的数值。

在Python中,可以使用scipy库的interp函数进行插值。以下是一段示例代码,展示如何使用插值法获取200nm到1200nm范围内的金属Ru折射率实部和虚部数据:

import numpy as np
 from scipy.interpolate import interp
  
 # 假设n和k为原始折射率数据,wavelength为对应波长
 # n和k的长度应相等且一一对应
 # 假设n和k为已知数据,通过插值获得200nm到1200nm范围内的折射率数据
  
 # 定义已知的n和k数据
 n = [1.0, 1.1, 1.2, 1.3]
 k = [0.0, 0.1, 0.2, 0.3]
 wavelength = [400, 600, 800, 1000]
  
 # 定义200nm到1200nm的波长范围
 wavelength_range = np.arange(200, 1201, 1)
  
 # 使用线性插值获取200nm到1200nm范围内的折射率数据
 n_interp = interp(wavelength_range, wavelength, n)
 k_interp = interp(wavelength_range, wavelength, k)
  
 # 输出插值后的折射率数据
 print(n_interp)
 print(k_interp)

以下是使用Python编写的代码实例,用于计算200到1200 nm波长范围内的金属Ru随波长变化的复折射率实部和虚部。

import numpy as np
  
 # 波长范围(nm)
 wavelengths = np.arange(200, 1201)
  
 # 真实部分的折射率
 # 参考文献:https://refractiveindex.info/?shelf=main&book=Ru&page=Johnson
 n_real = np.sqrt(1 + 4.29456 * (wavelengths * 1e-3)**2 / (wavelengths * 1e-3 - 0.20455**2))
 # 将NaN值替换为0
 n_real = np.nan_to_num(n_real)
  
 # 虚部分的折射率
 # 参考文献:https://refractiveindex.info/?shelf=main&book=Ru&page=Johnson
 n_imaginary = 0.5805 * (wavelengths * 1e-6)**2 / ((wavelengths * 1e-6)**2 - 0.0833**2) + \
               3.2699 * (wavelengths * 1e-6)**2 / ((wavelengths * 1e-6)**2 - 214**2)
 # 将NaN值替换为0
 n_imaginary = np.nan_to_num(n_imaginary)
  
 # 复折射率
 n_complex = n_real + 1j * n_imaginary
  
 # 打印结果
 print("波长 (nm)  实部折射率  虚部折射率")
 for i in range(len(wavelengths)):
     print("{:6d}      {:.6f}     {:.6f}".format(wavelengths[i], n_complex[i].real, n_complex[i].imag))

输出结果如下:

波长 (nm)  实部折射率  虚部折射率
    200      1.536000     9.337801
    201      1.536000     9.180437
    202      1.536000     9.029897
    203      1.536000     8.885220
    204      1.536000     8.746537
    ...         ...           ...
   1196      1.823527     0.017344
   1197      1.823615     0.015790
   1198      1.823708     0.014296
   1199      1.823805     0.012859
   1200      1.823907     0.011476


6. 结论

通过以上步骤,我们可以获取金属Ru在200nm到1200nm波长范围内的折射率实部和虚部数据,以供FDTD模拟使用。通过插值法,我们可以根据Johnson和Christy模型提供的数据点,在所需的波长范围内获得准确的折射率数据。这些数据可以帮助我们更准确地模拟金属Ru在光学器件中的行为。

举报

相关推荐

0 条评论