如何使用米氏散射模型模拟环境中的散射现象

这篇文章描述了如何在OpticStudio中建立DLL米氏散射(Mie scattering)模型。 下方链接的范例文件演示了如何以该模型进行散射的模拟。 范例系统包含了两个不同结构。 结构1模拟了光线入射空气中的水滴后,在散射时达到瑞利极限(Rayleigh limit)的现象。 结构2则模拟了光线在较大的粒子中发生散射时的情形,此时光学现象的讨论由瑞利极限转变为米氏散射的范畴。

作者 Sanjay Gangadhara

附件下载

Article Attachments

简介

根据麦克斯韦方程式,光线入射球型粒子会产生散射的现象,而米氏散射理论为此提供了解析解。 此理论可推广至任意大小的粒子,因此可适用在所有"粒子半径对入射波长比"的情况。 这对于模拟白云中的散射现象1时很有帮助,同时也有助于解释光线入射特定物质,如牛奶和生物组织时所产生的变化。 在OpticStudio的非序列模式中,我们可以用体散射(bulk scattering)的追迹方式建立这类的模型。 此外,Bohren和Huffman的研究为此现象的模拟提供了计算的依据。

这篇文章将说明模型在模拟系统中的表现,同时也会以一个大气中的散射现象作为例子,此模拟将运用到米氏理论的DLL。

参数模拟

为了在非序列模式中的对象上套用米氏散射分布的设定,如下图所示,我们需先开启该物件的属性字段(Object Properties),并在下方的Volume Physics项目中勾选DLL定义散射(DLL Defined Scattering),最后在DLL字段选择MIE.DLL

object properties dialog

为了使这个DLL正常运行,我们需要输入5项参数。

折射系数

我们在这个字段设定散射粒子的折射系数(实数部分),而环境介质的折射系数,则是在材质(Material)栏位设定。 若在粒子与环境有相同折射系数的情况下(或两者的差异在10-6以下),则此时粒子无法自环境中被区分,散射的现象将不会发生。 另外,当粒子的折射系数被设定小于0.0,此时也不会有散射发生,DLL将会被忽略。

尺寸(微米)

此处指的是球型粒子的半径(r)大小。 若数值被设定为≤ 0.0,则不会有散射现象发生,DLL将被忽略。 半径的最大值将取决于标准化的球体大小(x = 2πrn/λ,n为环境的折射率),一般情况下默认为1934。 若数值超过此数值,则散射不会发生。 对于如此大的球体粒子,直接在OpticStudio中模拟球体本身会是一个较理想的方式,不建议使用球体的等效散射分布设定。

密度和平均自由路径

散射粒子在对象中的密度。 若数值小于0.0,则散射不会发生,DLL会被忽略。 若数值大于0.0,则此时程序会将数值搭配散射截面(σs)进行计算,最后求得散射平均自由路径(mean-free path)为λmfp = 1/nsσs。 若密度等于0.0,则此时的平均自由路径会与上方"平均路径(Mean Path)"栏位等值。 而当密度大于0.0时,平均路径的数值将被忽略。 此外,若平均路径的数值为0,则DLL将被忽略。 注意,平均路径字段无法输入负值。

最小阈值

OpticStudio中的散射计算会涉及机率密度函数(Probability density function)的积分(更详尽的内容请参考 "如何创建一个用户自定散射方程" )。 一般而言,在极坐标(polar direction)上积分的范围是由0到π,在方位角(azimuthal direction)上取0到2π。 但对于分布较集中的情形而言,计算积分的过程会涵盖大量机率为零的范围,减低计算过程的效率。 为了解决这样的问题,通过修改最小阈值,我们可以降低极坐标积分的上限。 此上限值是由机率分布峰值中一小部分区域在极坐标空间中的位置所决定。 举例而言,假如我们将最小阈值设定为0.01,则此时极坐标积分的上限就会是机率分布为0.01的位置坐标乘以峰值的机率。 若输入值小于≤0.0或者≥0.5,则数值将会变为预设的0.001。

我们必须审慎看待最小阈值的设定。 一般来说,在粒子较大的案例中,机率分布会更集中。 设计者为了得到更好的结果,可能会将最小阈值设为更大的数值。 但由于散射计算中的角分辨率为定值(0.1度),所以当机率分布更加集中时,相邻角度的机率变化会更加剧烈。 因此在这个案例中,为了确保能有足够的数据点用于积分,降低最小阈值是必要的。

我们可以通过比较模拟结果的方式找到合适的最小阈值。 输入值由0.01开始,并逐次将前一次的数值乘上0.1。 若发现结果产生明显的变化,则继续递减数值直到结果收敛。 当我们得到这个最佳值后,可以发现往后即使再减少最小阈值也无法增加计算的准确性,只是徒然的增加运算时间而已。

透射率

这是一个衰减因子,可降低任何经历散射事件的光线的强度。当射线散射在散射体积内时,其强度乘以此因子。例如,如果传输设置为 0.89,则散射射线的强度将是散射前强度的 0.89 倍。此因子允许用户考虑散射球体中能量的吸收。背景介质中能量的吸收将由卷"材料"列中指定的材料的传输属性(如文章中描述的"OpticStudio 中的拟合数据")确定。

虽然散射粒子折射指数的假想成分会影响吸收——这可以以传输输入 DLL 为特征——该组件也会影响散射的概率分布。但是,只有当假想组件的大小为 +10-2 或更大,对应于高度吸收粒子时,概率分布才会受到影响。因此在模拟米氏散射时,我们可以先忽略折射系数虚部造成的影响。

额外考量

最后,DLL中不会使用到"角度"这个参数,但如果将这个参数值设为≤ 0.0或> 180.0,则散射的现象不会发生(DLL将被忽略)。

米氏散射的分布主要由两个无因次的参数所描述: 散射粒子和背景介质的折射率比值(m =nparticle /nbackground)以及归一化的球体尺寸(x =2πrnbackground/λ)。 米氏散射的分布会以每一对(m, x)为目标进行计算,一旦完成这些计算的过程,且结果储存在内存中之后,则任意数量的光线就可被用于追迹。 DLL至多可储存10,000对的(m, x)值。 一旦超过这个上限,则系统不会再储存任何的米氏散射数据,其余的(m, x)输入将不会产生散射的现象。 对于大多数的用户而言,10,000的输入上限值是非常足够的。

范例: 大气中的散射现象

接下来我们会使用一个简单的范例验证米氏散射的程序,示例可于文章顶端的链接下载。

在范例中,我们使用一个椭圆光源(Source Ellipse)模拟太阳,光源的光谱分布由它的黑体温度决定(更多相关信息可参考这篇文章"如何使用有色和三原色的光源")。

NSCE

如上图,我们将温度设为5780 K以模拟太阳的表面。

同时使用矩形对象代表大气环境,我们可以发现大气的颜色是由颜色探测器(Detector Color object)所决定(更多相关信息可参考这篇文章"如何量测并优化颜色信息")。 我们使用另一个颜色探测器观察太阳的光谱信息。 注意,这个示例的结果并未按比例尺绘制,只是单纯的展示如何将米氏散射的程序于系统中进行模拟。

范例中的系统包含了两个不同的结构,在结构1中,对象的参数是依据瑞利极限(Rayleigh limit)的条件进行设定的,确保DLL可以产生符合预期的散射现象(此时归一化的球体尺寸<< 1)。

object_2_properties

在粒子折射率方面,我们以1.33表示水的折射系数。 此外,我们将矩形对象的材质字段留白,代表该物件可视为空气。 由此,我们建立了光线因空气中的水滴而发生散射的等效模型。

每个水滴的大小为7 nm。 对可见光波长(介于0.4至0.7之间)而言,因此归一化的球体大小介于0.063和0.11之间(<< 1,符合瑞利极限的条件)。 而粒子密度方面,我们需要设定适当的数值,使系统的平均自由路径可保持约几毫米长(这项数据并不会显示在结果中,但会受到程序变更的影响)。

在追迹1,000万条光线后,我们可以发现大气显现的结果为蓝色,这是因为瑞利极限中散射的现象与入射波长(1/λ4)有很强的关联性所致(更多信息可参考这篇文章"以瑞利模型模拟体散射")。

Detector_viewer

此处的颜色可根据色坐标进行定义,如下图我们可在优化函数中选择NSDE操作数来达成目的。

Merit_function_editor

将结果产生的数值与优化函数中的太阳光谱(上图的第7、8行)进行比较,我们可以轻易的观察到瑞利散射发生时颜色产生的位移。

在结构2中,散射粒子的尺寸明显增加了,在这样的情况下讨论的范畴将由瑞利极限变更至米氏散射的领域。

Volume_Physics为了使散射的平均自由路径与结构1相似(几毫米长),粒子的密度必须降低。 而这项数据同样不会显现在结果中,但仍会受到程序的影响。 同时,最小阈值也必须降低,确保在粒子尺寸如此大的情况下,机率分布仍能够充分的被采样。 完成1,000万条光线的追迹后,我们可以发现显现的颜色结果和光源的光谱是十分接近的。

Detector_viewer_2

在优化函数部分,我们同样加入NSDE操作数使结果能更明确的表示:

Merit_function_editor_2

最后得到的结果显示,在米氏散射的条件下,散射的分布与入射波长的关联性极低,这个结果与文献的结论是一致的4。 这样的现象解释了为何太阳周围的光线看起来是白色的,和太阳本身的颜色一样。 同时,这也解释了天空中的云为什么看起来同样是白色的。 这是因为构成白云的水滴尺寸远大于大气中的粒子(在本范例中,我们以液态水代表这些粒子,但实际上这些粒子多半是氮气和氧气分子)。 因此,我们可以观察到当阳光在白云周围产生散射时,并不会有颜色的偏移,但当光线在大气中散射时却是有的。

参考资料

  1. Wikipedia. 2019. Mie scattering. Feb 6. en.wikipedia.org/wiki/Mie_theory.
  2. Bohren, Craig F.; Huffman, Donald R. 1983. "Absorption and Scattering of Light by Small Particles." p. 82-129, 477-482. John Wiley & Sons.
  3. Wikipedia. 2019. Sun. Feb 4. en.wikipedia.org/wiki/Sun.
  4. Nave, Carl R. 2017. Blue Sky. http://hyperphysics.phy-astr.gsu.edu/hbase/atmos/blusky.html.

KA-01682

这篇文章有帮助吗?
1 人中有 1 人觉得有帮助

评论

0 条评论

登录写评论。