
做光学系统仿真的人早晚都会卡在光源这一步。单色平面波确实能解决很多衍射、干涉问题可一旦你开始处理真实光源——白光LED、多模激光二极管、宽谱超连续谱——就会发现结果怎么都对不上实验干涉条纹宽度不对、对比度偏大、色散效应完全看不到。复合光源仿真简单说就是把波长构成、带宽、空间模式、偏振和相干性这些要素一起放进仿真模型里得到更接近真实系统的结果。VirtualLab Fusion是我这几年用得比较顺手的物理光学仿真工具。它的核心概念是谐波场和场追迹对多波长、多模式光源的处理方式跟传统Zemax那套几何光路思路不一样更贴近物理光学本质。这篇东西适合正在做光学设计、激光系统仿真、光通信或成像系统评估的工程师也适合课题组里刚接手光源建模任务的研究生。你会看到我踩过的那些坑也能照着一套完整的流程把复合光源仿真跑起来。1. 复合光源仿真到底在解决什么问题1.1 单色平面波为什么不够用单色平面波是光学仿真里最省事的假设一个波长、一个传播方向、无限大横向尺寸电场表达式简单到可以直接手算。很多经典教材里的衍射积分、干涉公式都是从简谐波出发推导的所以刚开始做仿真时平面上一个波打过去、探测器上出一个艾里斑结果挺漂亮。但真实世界里几乎没有这种光源。激光器有纵模间隔和增益谱宽LED有几十纳米的光谱带宽超连续谱光源更是从可见到近红外连成一片。只用中心波长做单色仿真等于把宽带光源的所有频谱信息压成一个点丢掉了两个关键物理效应一是不同波长在同一介质中的折射率差异带来的色散二是不同波长的相干叠加效应。我举个实际例子。做白光干涉仪仿真时如果你只取中心波长550nm的平面波探测器上会看到对比度接近1的正弦干涉条纹周期也清晰得很。但真实白光光源的相干长度只有一两微米条纹只在零光程差点附近出现两侧迅速衰减。这两种结果体现的系统性能完全不同。单色仿真的结论放在真实白光系统里根本没法用。1.2 复合光源的三要素光谱、空间模式、相干性复合光源仿真要抓到位的我总结成三个核心要素。第一是光谱构成。光源发射的不是单一频率而是一个谱线集合。仿真里要么用离散谱线近似——比如把一条连续宽带谱面采样成几十个波长通道——要么针对激光器只取几条主要纵模。每条谱线有自己的中心波长和相对功率权重。第二是空间模式。激光二极管输出的是椭圆高斯光束多模光纤出射的光斑带有大量高阶模式的结构LED则近似于一个朗伯体扩展光源。这些空间特征直接决定光束进入系统的发散角和强度分布。第三是相干性。包括时间相干性和空间相干性。时间相干性由光谱线宽决定线宽越窄、相干时间越长空间相干性由光源横向尺寸和传播距离决定扩展光源的空间相干度往往很弱。复合光源仿真里相干和非相干不是二选一而是一个可以量化的权重关系。这三个要素会在系统里发生耦合。比如宽带光源通过色散元件后不同波长的空间分布被拉开再比如部分相干光经过小孔衍射后相干性会被空间滤波改善。只有把三个要素全部建模才能在仿真里复现这些现象。1.3 VirtualLab Fusion的建模框架为什么适合这件事VirtualLab Fusion跟传统光线追迹工具最大的差异在于它跑的是场追迹而不是纯光线追迹。一个光学系统里的每个光学元件、每个传播距离都被描述成对电磁场施加的数学操作符。场在操作符间穿行时始终带着完整的幅度、相位、偏振和波长信息。这种框架天生适合复合光源建模。因为VirtualLab里的光源不是一个静态的光线集合而是一组谐波场。谐波场这个概念可以理解成一套有明确频率、偏振、传播方向和空间分布的电磁场基底。多个谐波场可以同时存在于同一个模型里彼此独立传播最后在探测面上按你要的规则叠加。更关键的是VirtualLab对叠加规则的处理很有讲究如果两个谐波场来自同一条谱线且相位关系确定就相干叠加如果来自不同谱线或不同空间模式通常做非相干加权叠加。你在探测器上看到的光强是所有模式贡献的总和这一点跟真实探测器物理完全一致。对于光源模式数量很大的情况VirtualLab的探测器评估也做了优化可以逐模式传播、逐模式累加光强不会在内存里同时塞下所有场的复振幅数据。实际用下来几百个模式的复合光源仿真在普通工作站上是可以跑的。2. 动手之前把光源建模方案想清楚2.1 先回答三个问题再开软件每次接到一个光源建模任务我都先问自己三个问题不搞清楚不动手。第一个问题光源的谱段有多宽这决定了我要用多少个波长通道来近似。单模激光器的线宽可以窄到MHz甚至kHz量级在光学仿真里一个波长通道就够LED的FWHM可能有20到50纳米我通常按2到5纳米的间隔采样成十几个通道如果是超连续谱或白光间隔可以放宽到10纳米左右但通道数可能直逼上百。第二个问题光源的空间尺寸和发散特性是什么高斯光束需要给束腰半径和M²因子扩展光源需要给发光面尺寸和角度辐射分布。这两种情况在VirtualLab里的建模路径完全不同。第三个问题系统里的相干效应能不能忽略如果系统里有干涉仪、衍射元件、相干成像那必须把时间相干性量化进去用多波长模式的相干叠加来计算条纹对比度。如果只是照明均匀性、杂散光分析那所有模式非相干叠加就够了计算量还能小不少。回答完这三个问题光源建模的总体方案基本就定下来了。不要一上来就在软件里瞎点方案清晰了后面每一步都是执行问题。2.2 两种建模路径模式叠加与部分相干场我在实际项目里用的复合光源建模路径主要有两条。路径一模式叠加法。就是把复合光源拆成若干个谐波场模式每个模式都有明确的波长、功率权重、空间分布和偏振状态。仿真时每个模式单独传播光强结果按权重累加。如果模式之间是相干的就先叠加复振幅再取模平方如果不是相干的直接叠加光强。这条通道的好处是物理意义清楚、调试方便。我想看某个特定波长对焦斑的影响单独看那个模式的传播结果就行。代价是模式一多计算时间线性增长。路径二部分相干光场法。适用于光源结构特别复杂、模式数量巨大的场景比如LED光源或大片热辐射体。这时候在软件里逐个定义几百个模式不现实更合理的做法是直接定义光源的空间相干度和时间相干度用一个等效的光场统计模型来代表整个光源。这条路的好处是计算量可控但代价是你在物理细节上做出的牺牲更大。只能得到统计平均的结果看不到单个模式的具体行为。两条路径不是互斥的实际项目中经常混用。激光系统我基本走模式叠加照明系统偏向部分相干光场。判断依据很简单你需要的是确定性信息还是统计性信息。2.3 采样定理和内存预算是第一道坎复合光源仿真最容易在采样上翻车而且是那种你跑半天才发现结果根本不可信的翻车。对于场追迹仿真计算网格必须同时满足横向采样和纵向传播的精度要求。横向采样的底线是奈奎斯特条件网格间距要小于等于 λ / (2 NA)NA是系统数值孔径。举个例子500nm波长、NA 0.5的系统网格间距上限是500nm。如果你的光束口径是2mm单方向需要至少4000个采样点二维网格就是1600万个点。这只是单个模式单次传播的需求。如果你有40个波长模式每个模式都要在这样规模的网格上做一次传播内存和计算量会迅速膨胀。我自己的经验是建模前先做一个粗略的内存估算把网格点数和模式数乘起来如果总规模超过工作站内存能承受的极限就得提前做降采样或分段传播的规划。VirtualLab里还有一些降低资源消耗的功能比如对称性利用、高斯光束的解析传播替代数值积分还有针对不同传播距离自动切换算法的机制。这些功能能用就尽量用别硬跑全数值网格。3. 实操复合光源仿真完整流程3.1 步骤一创建光源并设定波长谱线在VirtualLab Fusion里建复合光源第一步是在光源编辑器中定义基础光束类型。对激光光源通常选高斯波设置束腰半径和束腰位置对LED或扩展光源会用平面波加上孔径限制或者直接定义空间光场分布。设好光束类型后紧接着设定波长谱线。这里有一个很容易忽略的细节每条谱线除了波长值还要给相对权重。相对权重对应的是光源光谱的功率密度分布直接影响最终叠加结果中各个波长的贡献比例。对于连续的宽谱光源我习惯用波长表的形式给出离散采样。比如模拟白光LED我会取400到700纳米范围、每隔10纳米采一个点共31个波长通道功率权重按LED相对光谱强度曲线赋值。这些数据光源厂商的数据手册里一般都有随手就能查到。如果是多纵模激光光源波长间隔就是纵横模间隔 Δν c / 2LL是激光谐振腔长。每条纵模的权重可以由增益曲线估算。实际仿真里不用把每条纵模都建出来取中心附近的几条主要纵模就够了具体取多少条可以先做一组对比实验来确定收敛性。3.2 步骤二设置空间模式与偏振状态空间模式的设置要跟光源类型匹配。高斯光束的核心参数是束腰半径和M²因子。注意M²因子直接影响远场发散角不是可有可无的装饰参数。如果你不设M²因子VirtualLab默认按理想高斯光处理那跟实际激光器的输出特性会有明显偏差尤其是多模激光器。多模激光器的空间模式不能只靠一个高斯波近似。我在仿真多模VCSEL或高功率激光二极管时会定义多个横向模式比如TEM00、TEM10、TEM01每个模式赋予不同的功率权重。这些模式在传播过程中各自演化产生近场和远场不同的光斑形态。偏振方面复合光源的每个模式都可以独立设置偏振态。最常用的两种做法是线性偏振和圆偏振。如果系统里有偏振分光元件比如偏振分束器或波片那每个模式的偏振态必须设准确。如果系统对偏振不敏感直接用线偏振也能得到合理结果。这里提个醒对于非偏振或随机偏振的光源比如LED和卤素灯简单仿真可以用两个正交偏振模式各分一半功率来处理结果取光强之和。更精确的做法是要用空间相干矩阵模型不过大多数工程问题里前面那个近似就够用了。3.3 步骤三指定相干性模型这一步是复合光源仿真有别于单色仿真的关键。你要决定模式之间在探测器上如何叠加。如果多个波长模式来自同一个相干光源比如一个锁模激光器发出的不同纵模之间存在确定的相位关系那叠加时必须保留复振幅信息在探测器上先做复振幅求和再取模平方得到光强。这样得到的干涉条纹会包含各波长成分之间的拍频效应。对于真实LED、灯源这类低相干光源不同波长之间没有固定相位关系。仿真时每个波长模式独立传播光强结果直接加权相加。这也是VirtualLab里模式叠加最常用的评估方式。我在仿真中遇到最多的问题是相干长度怎么设定其实在VirtualLab的多模式框架里你不需要直接输入一个相干长度值而是通过谱线宽度和谱线分布来隐含定义时间相干性。谱线越密集、包络越宽等效相干长度越短。空间相干性则通过光源的横向尺寸和角谱分布来体现。有一回我仿真宽谱干涉系统一开始用了20个均匀间隔的波长模式结果探测器上出现了周期性的次峰怎么看都不对。后来才意识到这20个离散波长构成的频谱是周期性的等效相干长度被这个周期拉长了产生虚假的干涉次峰。解决办法是增加波长模式数量或者采用非均匀间隔让频谱分布更接近真实的连续光谱。3.4 步骤四设计光学系统与探测器光源定义好之后接下来就是把光场送入光学系统。VirtualLab里的光学系统由界面、元件和传播区段组成。你可以依次插入透镜、光阑、衍射元件或波导结构每个元件之间的自由空间传播会通过场追迹算法完成。透镜这类折射元件可以用VirtualLab的界面模型来定义面型和材料。对球面透镜关键参数是曲率半径、厚度和玻璃材料。材料折射率的色散特性非常重要特别是宽带复合光源仿真。不同波长的折射率差异会导致焦点位置偏移这在单色仿真里完全看不到。探测器设置在你要观测的平面上。它不一定是最后一个面可以放在系统的任意位置。我通常会在光源出射面放一个探测器记录初始光场在关键中间面放探测器监测光束演化在最终焦平面放探测器评估光斑质量和功率分布。探测器需要设置的参数包括采样网格大小、采样点数、评估内容和输出格式。评估内容除了光强分布还可以选择相位、振幅、偏振状态以及光束参数比如束宽和M²。如果你关心复合光源对系统性能的综合影响光强分布和斯特列尔比是最常用的两个指标。3.5 步骤五计算、后处理与指标解读所有模式和探测器设置完成后就可以运行计算。VirtualLab会对每个波长模式依次执行传播和探测评估最后汇总。计算结果出来之后第一件事不是看光斑好不好看而是做合理性校验。我会先用已知的解析解做一个简单对照比如单波长模式经过理想透镜聚焦焦斑尺寸是否跟衍射极限公式吻合双波长模式相干叠加条纹间距是否等于 λ² / Δλ 对应的周期性。这些校验往往能在几分钟内暴露建模错误。对于复合光源的最终评价我常用的指标有三个。第一个是光强分布看焦斑形状、旁瓣水平和能量集中度。第二个是斯特列尔比即实际焦点峰值光强与理想衍射极限焦点峰值光强之比判断系统波前质量。第三个是色散引起的焦点偏移量即不同波长焦点的轴向和横向位移这直接反映系统的色差水平。这三个指标结合起来基本能判断一个光学系统在真实光源照射下的成像或聚焦性能。如果只做单色仿真你根本得不到色散偏移的数据也就无法对系统做出全面评价。3.6 案例双谱线光源经衍射透镜聚焦我在一个半导体晶圆检测项目里需要评估一个工作在405nm和532nm双波长的聚焦系统。传统做法是两个波长分别仿真、分别评估但那样做忽略了两个波长的相干叠加效应也看不出共聚焦时两个焦斑之间的相对位置关系。我用VirtualLab建立了复合光源包含405nm和532nm两条谱线权重分别对应实际激光器的输出功率。每个波长都设为TEM00高斯模式束腰半径相同系统由一枚衍射透镜和一段自由空间组成。仿真结果出来后我立刻看到了单色仿真预料不到的东西两个波长的焦平面位置轴向差了差不多8微米横向也偏移了1.2微米。这意味着在同一个探测器平面上两个波长的光斑不会完全重合系统对双波长工作模式存在明显的色差。这个现象在几何光学追迹里也能算出来但VirtualLab的场追迹直接把焦斑形貌和干涉效应一起给了出来省去了很多中间步骤。后来我把这组参数带回实验室实测用CCD在同一个焦平面上拍到的双波长光斑位置偏移跟仿真结果对得上误差在测量精度范围内。那次之后复合光源仿真成了我所有多波长系统设计流程中的必备一环。4. 十几条排查经验和性能优化窍门4.1 干涉条纹不对大概率是相干长度错配这个问题我在前面提到过这里展开说。如果你用复合光源仿真干涉系统结果里出现了实验中看不到的远距离次峰或额外条纹先回头审视波长模式的数量和间隔。离散波长模式的频谱是以模式间隔为周期的梳状谱这种周期结构会产生以相干长度 Lc ≈ λ² / Δλ 为周期的干涉重现。你别以为增加几个波长模式就能解决如果模式间隔还是均匀的频谱的周期性还在。非得让频谱尽量接近连续或者采用伪随机间隔打破周期才能抑制掉这些虚假重现峰。另外检查你的探测器光程差范围是否远超等效相干长度。如果系统里两臂光程差大于相干长度真实物理中条纹对比度会降到接近零但仿真里如果相干性设错了条纹可能还在那里活蹦乱跳。4.2 光斑轮廓出现锯齿先查采样网格复合光源的短波长模式对采样网格要求最高。你在建模时如果以中心波长来定采样间隔短波长一侧可能已经欠采样了。表现就是光斑边缘出现规律的锯齿形、或者干涉环变成多边形而不是圆形。这个问题的排查方法很直接把最短波长对应的采样要求算出来检查网格间距是否满足 λ_min / (2 NA)。如果差一点要么把全局网格加密要么把最短波长的分量单独提出来用更细的网格传播最后再统一插值到探测器网格上。我个人的习惯是网格间距给到理论要求的0.7倍左右留一点裕量。太密也没必要计算量会指数上涨。4.3 模式数太多导致内存耗尽复合光源通道数多到一定程度内存就扛不住了。我遇到过一次做白光照明仿真设了80个波长模式每个模式在千万级网格上传播跑到第30个模式就内存爆掉。后来总结出三条对策。第一条使用VirtualLab的探测器累加模式即逐模式传播、逐模式累加光强跑完一个模式就把它的复振幅场从内存里释放掉。第二条把仿真分成多个子任务每个子任务跑一部分波长模式最后把结果文件汇总。第三条如果某条谱线的权重特别小、对最终结果影响可忽略就别加进来。建模时先看一眼光谱权重曲线把低于峰值5%的边带直接砍掉。另外提一句VirtualLab的GPU加速选项能显著缩短多模式传播时间。我的工作站用的是普通游戏显卡加速效果也很明显强烈建议有条件就开。4.4 结果评估指标选错白费功夫复合光源仿真跑完很多人只盯着光强分布图看。但如果你的系统是多波长系统光强分布图只能说明亮度分布不能说明色散特性、相干性变化、偏振演化这些关键行为。正确做法是根据评估目标选指标。想量化色差看每个波长的焦点位置和光斑质心偏移想评估光束质量看M²因子和斯特列尔比想做干涉分析看条纹对比度和相干度分布。VirtualLab的探测器里可以一次性输出多种数据你建立探测器时就把需要的指标都勾上免得跑完了才发现少采了一个量又得重算一遍。4.5 加快收敛的一个实用技巧复合光源仿真结果的收敛性通常可以用增加模式数观察关键指标是否稳定来判断。我在多模式激光器仿真中先取3条主要模式算一遍再逐步加到5条、7条、9条观察焦斑峰值和光强分布的RMS变化。当模式数再翻倍而结果变化小于1%时我就认为收敛了。这种逐步加密的方法既避免了无脑堆模式数导致的计算浪费又给结果提供了置信度依据。写报告或论文时你也可以直接引用模式数增加到N后指标变化小于1%审稿人很难挑毛病。5. 个人做复合光源仿真的一点体会搞了这么多年的光源仿真我最大的心得是复合光源仿真不是把一个光源拆成几个波长然后分别跑一遍那么机械它真正考验的是你对光源物理的理解。你得清楚哪些模式之间要相干叠加、哪些要非相干叠加哪种情况下部分相干模型就够用、哪种情况必须逐模式追迹。这些判断没有捷径只能靠对具体系统的物理本质做分析。在VirtualLab Fusion里做复合光源仿真我认为是目前比较顺手的路径因为它把谐波场模式的概念贯彻得很彻底让你从物理思考无缝过渡到仿真实施。但工具只是工具前期的物理建模和参数取舍才是决定仿真质量的关键。最后分享一个小技巧建模第一步先在探测器上设一个理想传播的对照组也就是不经过任何光学元件直接看光源本身的场分布。这个对照结果能帮你确认光源建模是否正确。很多光源参数上的低级错误在系统复杂化以后会被各种现象掩盖但在这个对照组里一眼就能看出来。我吃过这个亏也靠这个习惯救回过不少项目。