Skip to Main Content

      

Ansys博客

December 18, 2023

利用Henyey-Greenstein分布模型在OpticStudio中实现体散射可视化

Henyey-Greenstein模型描述了由小颗粒散射的光所具有的角分布。该模型已应用于多种场景,从生物组织对光的散射到星际尘埃对光的散射等。

我们来了解一下如何使用用户定义的对象(DLL文件)在下面的非序列模型中对Henyey-Greenstein体散射进行建模。

了解Henyey-Greenstein体散射模型

在Henyey-Greenstein模型中,散射光的角分布由以下方程给出:

Henyey Greenstein math equation

Henyey-Greenstein模型

参数g描述分布。g=0时,该模型说明:材料在所有角度上散射概率均匀;当g接近1时,分布会在θ=0度左右时达到高峰值。θ角定义为散射光线与镜面光线的夹角;θ=0度是指沿镜面光线向前散射;而θ=180度则是指沿镜面光线向后散射。

Ansys Zemax OpticStudio安装程序中包含了用户定义的DLL,允许用户将该体散射模型应用于任何非序列体。我们将使用以下示例中的“Henyey-Greenstein-bulk.dll”来展示Henyey-Greenstein模型的角度和功率分布。

检查Henyey-Greenstein模型中的功率分布

让我们来看一个示例,其展示了如何在OpticStudio中实施Henyey-Greenstein模型。该系统包含的源光线以法向入射角向矩形体发射光线,Henyey-Greenstein散射分布已应用到其中。此分布通过指定用户定义的DLL,应用于该矩形体中。 

在OpticStudio中,Object Properties > Volume Physics中的设置可控制应用于矩形体的体散射模型类型。在本示例中,“model”是DLL定义的散射,选定的DLL文件是“Henyey-Greenstein-bulk.dll”。该DLL以及相应的源代码位于“{Zemax}\DLL\BulkScatter”文件夹中。

DLL defined scattering

图1:Henyey-Greenstein-bulk.DLL。

DLL的输入是“透射”(描述了在散射过程中衰减的输入功率)以及上述方程中的参数g。为了测量不同角度散射的光线,已将三个小型探测器布置在与示例系统中的实体保持均匀距离的位置,角度为入射光线角的0度、30度和60度(参见图2)。

Scattered ray angles

图2:在未启用散射的情况下进行的NSC 3D Layout。

注意,图2显示的是未启用散射的NSC 3D Layout工具,因此我们只看到镜面路径。在打开散射分析结果之前,我们可以展开来查看源光线:Object Properties > Source。您会注意到,在图3中,已对系统进行设置,明确规定只为每条入射光线提供一个散射实例。

One instance scattering

图3:显示将体散射更改为一次的位置。

OpticStudio中的默认“Bulk Scatter”设置为“Many”,这意味着光线可能会在介质中散射多次。若选择“Once”,则光线的每个分支只能进行一次体散射。如果光线在散射(例如在散射体的界面)之前发生分割,那每条子射线可能都会散射,因为每条子射线的分支都是第一次散射。如果选择“Never”,则来自该光源的光线就不会出现体散射。

在“Layout Settings”中选中“Scatter NSC Rays”复选框,可以在NSC 3D Layout工具中观察散射(参见图4)。

NSC 3D layout

图4:显示的是可以在NSC 3D Layout工具中观察到的散射。

许多光线错过了探测器,而且这些光线只绘制了很短的距离,以显示其方向。要更改这些光线绘制的距离,请参见图5中System Explorer > Non-Sequential下的“Missed Ray Draw Distance(未命中光线绘制距离)”框。

该参数是绘制错过所有对象的光线段的距离。如果该值为零,OpticStudio将在绘制错过的光线时为该参数选择默认值。

我们可使用过滤字符串,只分析在矩形体中散射并击中探测器矩形的光线。在绘制或显示光线之前,过滤字符串定义了一个光线必须通过的“测试”。过滤字符串语法由命令或标志之间的逻辑运算组成,其可指明光线是否击中对象、未命中对象、从对象反射、折射、散射、衍射或发生鬼影反射。

过滤字符串命令的完整列表,可在OpticStudio帮助文件中获取。

我们将使用以下标志:

  • Bn:显示体散射在对象n内部的光线。
  • HN:显示击中对象n的光线。
  • 我们可以使用以下运算符组合这些过滤字符串:
  • &:逻辑AND。“&”符号任何一侧的两个标志都必须为TRUEAND运算才能返回TRUE
  • |:逻辑OR。如果其中一个标志为TRUEOR将返回TRUE
System explorer

图5:如果未命中光线绘制为零,OpticStudio将在绘制未命中光线时为此参数选择默认值。

因此,要显示矩形体(对象2)内体散射并击中其中一个探测器(对象3、4和5)的光线,我们可以使用过滤字符串“B2 &(H3 | H4 | H5)”。在NSC 3D Layout工具或阴影模型中,该过滤字符串可用于布局光线(参见图6)。

Filter B2

图6:在NSC 3D Layout或阴影模型中,过滤字符串可用来布局光线。

将结果保存至Ray Database时,过滤字符串可在“Ray Trace Control”窗口用于“Analysis Ray”。

Ray trace control

图7:显示如何将过滤字符串用于在“光线追踪控制”过程中“分析光线”。

然后在总功率为1 W(透射系数为1)的情况下,发射5,000,000条分析光线,测量落在每个探测器上的功率分布。g=0.001及g=0.5的结果如下表所示。

Distribution of power

将“Mean Path”设置(平均自由路径)指定为0.0001 mm,这相对于0.1 mm矩形体厚度而言是很小的。测量的OpticStudio值在统计误差范围内再现了从理论模型得出的结果,正如我们针对每条光线只允许散射一次的情况所预测的那样:由于统计原因,不同光线追踪的结果会有所不同,因此您会得到不同、但又非常相似的数字。

如欲试用Ansys Zemax功能,请下载免费试用版

请注意:如果将g=0指定为输入,则计算中所用g的实际值为10-4。这是因为,g=0时,计算中出现了一个奇点。极小的g值所得到的结果与g=0时的预期结果几乎相同,说明这种近似的准确度足够。