新闻详情

新闻详情

首页 / 资讯中心 / 详情

飞秒激光与半导体相互作用模拟:动态载流子密度下的双温方程建模

发布时间:2026/9/11 14:26:43来源:尧图网络
飞秒激光与半导体相互作用模拟:动态载流子密度下的双温方程建模
搞超快激光与半导体材料相互作用的模拟最容易被低估的一件事就是材料的“光学参数一直在变”。很多人拿到一个双温方程模型习惯性照搬金属那套做法把反射率、吸收系数、热容这些参数当成常数扔进方程算完发现表面温度和实验对不上——差一个量级都不奇怪。问题就出在载流子密度上飞秒激光一打上去半导体价带电子被大量激发到导带载流子密度瞬间从本征的10^10量级涨到10^20甚至更高折射率、吸收系数、电子热容、电子-晶格耦合系数全都在变。这就是一个典型的强非线性系统。所以我搭这套带载流子密度变化的双温方程COMSOL-Matlab计算模型目的很明确把激光参数、瞬态载流子分布、温升演化、材料响应这条链路完整定量地算出来COMSOL负责偏微分方程组的求解Matlab负责光学参数的迭代更新和批量工况管理。这篇文章主要写给正在做飞秒激光加工、激光退火、光电器件瞬态响应仿真的朋友尤其是卡在“方程怎么写”“耦合怎么稳”“参数怎么给”这三关上的人。1. 经典双温方程的失效边界载流子密度为何非加不可1.1 金属能用半导体不能用差别在自由电子池经典双温方程Two-Temperature Model, TTM最早就是为金属准备的。金属里天然有10^22 cm^-3量级的自由电子飞秒激光打上去相当于直接加热一个已经存在的电子池。电子温度Te瞬间上升晶格温度Tl几乎不动两个子系统之间靠电子-声子耦合系数G交换能量方程是∂(Ce·Te)/∂t ∇·(ke·∇Te) − G(Te − Tl) S(x,t) Cl·∂Tl/∂t ∇·(kl·∇Tl) G(Te − Tl)金属里这套方程成立的前提是自由电子密度足够大且基本不变所以激光吸收系数可以取常数电子热容Ce可以用γ·Te描述耦合系数G也不用随电子密度动态修正。也就是说经典TTM是一个光参数恒定的线性吸收模型对金属足够用因为金属的光学性质对激光激发的响应确实不敏感。但半导体完全不是这个情况。本征硅室温下载流子浓度大约10^10 cm^-3比金属少了12个数量级。飞秒激光的光子能量如果大于带隙直接发生带间吸收价带电子被强行拉到导带载流子密度在几百飞秒内暴涨。更麻烦的是这批新产生的非平衡载流子才是后续吸收激光能量的主力它们越多材料对激光的吸收越强温度升得越快反过来又产生更多载流子。这个正反馈回路不建模双温方程就算得毫无意义。1.2 载流子密度通过三条路径反馈到温度场第一条路径是光学参数。自由载流子对光的响应可以用Drude模型近似描述介电常数修正项和载流子密度N直接相关ε(ω, N) ε(ω, 0) − (N·e²)/(ε0·m*·ω²) · 1/(1 i/(ω·τ_c))N增大之后折射率n和消光系数k一起变反射率R和吸收系数α全部跟着变。这就是为什么激光在材料内部的能量沉积不能再用常数α去算源项必须实时依赖N。第二条路径是热物性参数。半导体被强激发后电子热容Ce不再是一个固定小量它随载流子密度增长经典极限下近似Ce ≈ 3Nk_B/2。电子-晶格耦合系数G也不是常数用能量弛豫时间模型的话G ≈ 3Nk_B/(2τ_E)τ_E是电子能量弛豫时间大概在皮秒量级。N从10^18变到10^21Ce和G可以变化三个数量级当作常量处理必然出错。第三条路径是载流子本身的热输运和复合放热。载流子会向深处扩散把能量带到更远的地方同时在复合过程中释放热量这些都会改变晶格的温度场分布。所以载流子连续性方程不是“可选项”而是能量平衡的必经环节。1.3 最终采用的耦合方程组与参数清单我们最终计算用的是一套三方程系统。电子能量方程、晶格能量方程、载流子连续性方程分别如下∂(Ce·Te)/∂t ∇·(ke·∇Te) − G(Te − Tl) S(x,t) Cl·∂Tl/∂t ∇·(kl·∇Tl) G(Te − Tl) (N/τ_rec)·hν_c ∂N/∂t (α·I(t)·(1−R(N)))/(hν·δ) − N/τ_rec − γ_A·N³ ∇·(D_N·∇N)第三个方程里的激光源项我写成了“单位体积内被吸收的光子数”第一项对应带间激发产生载流子第二项是一阶复合第三项是俄歇复合三体复合正比于N³第四项是载流子扩散。晶格能量方程多加了一项N/τ_rec·hν_c表示载流子复合时把能量交给晶格。这里hν_c不一定是激光光子能量而是复合过程中释放的热量通常在带隙能量附近。实际计算时用到的典型参数我整理了一个表基本对应晶体硅符号物理含义典型量级说明Ce电子热容3Nk_B/2强依赖载流子密度NCl晶格热容1.6×10^6 J/(m³K)硅的常规值ke电子热导率100~300 W/(mK)随Te/Tl比值变化kl晶格热导率150 W/(mK)高温时下降G电子-晶格耦合系数10^16~10^17 W/(m³K)依赖N和τ_Eτ_rec载流子寿命1~100 ns与材料缺陷、表面复合相关γ_A俄歇复合系数10^-42~10^-40 m^6/sSi和GaAs常见量级D_N载流子扩散系数10~30 cm²/s依赖温度和掺杂这里提醒一句不同文献给出来的G和γ_A能差好几倍不要直接拿一篇文章的参数就开跑至少用两组文献参数做对照测试。我们最初就是因为G取了一个金属的量级导致半导体的Te下降过快表面温度严重偏低。2. 把“图3理论模型”翻译成方程组一张示意图的拆解套路2.1 模型示意图里其实藏着三类不同性质的信息很多仿真新手拿到文献里的理论模型示意图第一反应是照着图里的几何形状去画COMSOL几何这个习惯非常坑。理论模型示意图通常是“物理域”“子系统”“信息流”三者混在一起画的你需要先在脑子里把它们拆开。以这类激光照射半导体的模型图为例通常能识别出三类要素。第一类是物理域比如样品的一个剖面、分层的结构、表面的位置这些对应COMSOL里的求解域和边界。第二类是子系统比如“电子系统”“晶格系统”“载流子系统”三个方框它们不一定对应真实空间区域而是方程中的因变量。第三类是信息流比如电子与晶格之间的箭头激光入射的箭头这些对应的是耦合项或源项。这三类信息混在同一张图里直接照画几何等于把方程耦合项当成几何边界模型自然建不对。正确做法是在原图上用不同颜色笔分别圈出物理域、子系统和信息流然后再逐项映射到方程组里。2.2 五个步骤从图到可计算模型具体操作我建议按五步走每一步都对应明确的产出物。第一步确定求解域的维度和范围。模型图里如果画的是一个大块材料被激光垂直照射通常可以先做一维模型沿深度方向求解。一维跑通、确定物理过程无误之后再扩展成二维轴对称考虑高斯光斑的横向分布。第二步清点因变量。图里出现几个子系统就有几个因变量。我们的模型有三个电子温度Te、晶格温度Tl、载流子密度N。如果图里还画了应力或形变那就还得增加结构力学变量。第三步把图中的每条箭头翻译成数学项。电子-晶格之间的双向箭头翻译成G(Te−Tl)激光入射箭头翻译成源项S(x,t)载流子复合箭头翻译成−N/τ_rec和−γ_A·N³。箭头翻译不出来的地方通常就是模型图的“宣传成分”可以先不管。第四步列出边界条件和初始条件。图的表面如果标了反射率R那激光源项就要乘(1−R)底部和侧面如果是环境温度就设固定温度边界和平衡载流子浓度。初始条件一般取T0300KNN0平衡载流子浓度TeTlT0。第五步把缺的参数制作成一张参数清单表。模型示意图不会把所有参数标全这张表就是你后续补参数的依据每个参数都要有“数值来源适用条件”。2.3 缺失参数怎么补文献优先、模型次之、敏感性分析兜底模型图中没标出来的参数通常才是最花时间的部分。光学参数n(N)、k(N)最好直接引用飞秒泵浦-探测实验数据这类文献不少比如硅和砷化镓的非平衡载流子光学响应数据能找到就优先用插值表而不要自己从头推导微观模型。查不到实验数据时再用Drude模型配合有效质量m*和碰撞时间τ_c估算并明确标注这是估算值。估算值不能直接用完了事我习惯对最不确定的参数做敏感性分析。具体做法很简单把某个参数在正负50%范围内扫描看输出结果比如表面峰值温度、熔融深度的变化幅度。如果变化超过20%这个参数就是“敏感参数”必须花力气去查更可靠的文献如果变化小于5%说明当前工况下它对结果影响不大取一个合理值即可。这套流程能帮你把时间花在刀刃上而不是对着一个无关紧要的系数纠结一天。还有一个容易被忽略的点模型示意图里有些子系统可能只画了一个方框但没有给出子系统内部的控制方程。这时候不能脑补一个方程塞进去要看作者在正文里用了什么模型如果正文也没写那就默认它在当前时间尺度下是准平衡的用代数关系描述即可。我们当初就见过有些模型图把“缺陷态”画了个方框但正文没有任何输运方程这种就别硬做了。3. COMSOL和Matlab的分工逻辑为什么是这对组合交集在哪里3.1 COMSOL的强项把非标准偏微分方程组变成稳定数值解COMSOL Multiphysics最值钱的点不在于它内置了多少物理场接口而在于PDE模块给了你一个自由度极高的“方程输入区”。双温方程加载流子连续性方程这套系统COMSOL没有现成接口我也不会建议你用固体传热模块去硬凑——传热模块背后的内部变量、通量定义、参考温度这些机制会和自定义的载流子方程互相干扰调试起来极其痛苦。直接用PDE模块自己定义因变量和方程一劳永逸。COMSOL的另一大优势是网格控制和求解器配置都在图形界面里完成。尤其是边界层网格Boundary Layer对激光与材料相互作用这类“表面效应极强”的问题几乎是必需的激光能量主要沉积在材料表面几十纳米到几微米的薄层内这里的网格密度直接决定计算的精度和稳定性。在COMSOL里加边界层网格比在Matlab里自己写自适应网格容易得多。3.2 Matlab的强项光学参数引擎和批量工况的管理员Matlab在这个项目里不负责解偏微分方程它做三件事算光学参数、控制迭代循环、做后处理对比。光学参数这块载流子密度N和温度T变化之后折射率n、消光系数k、反射率R、吸收系数α都需要重新计算。我在Matlab里写了一个接口函数输入N和T输出R和α内部可以是实验数据插值也可以是Drude模型解析式。COMSOL求解过程中每个时间步都会回调这个函数更新光学参数相当于把材料的光学响应作为一个动态模块接入了多物理场模型。批量工况管理就更体现Matlab的优势了。激光加工很少只算一条工况往往要扫脉冲能量、脉宽、光斑半径。我最初在COMSOL图形界面里做参数化扫描模型复杂之后界面操作容易卡顿也不好精细控制单个工况失败之后的处理逻辑。改用Matlab的循环体之后扫描逻辑变成了几行清晰的控制流每一步还能随时判断N是否超出物理阈值发现发散直接终止当前工况记个日志继续跑下一组。3.3 LiveLink for MATLAB还是文件交互两条路线的取舍COMSOL和Matlab的数据交互有两条主流路线一是安装LiveLink for MATLAB在Matlab命令行直接创建、操纵COMSOL模型对象二是文件交互COMSOL导出结果Matlab处理后写回参数。方案易用程度单次仿真耗时批量扫描性能适用场景LiveLink for MATLAB高短快进程内通信日常开发、参数扫描、实时回调文件交互中额外IO开销慢磁盘写入占大头跨平台、集群并行、不方便装LiveLink我实测算过单次求解时间少于10秒时文件交互的磁盘IO开销极其明显200组参数扫描能跑3天。换成LiveLink之后同样的量4小时跑完。能装LiveLink就装LiveLink这是我在这个项目里最强烈的建议。要注意的一点是LiveLink for MATLAB的每一次模型求解都会占用一个COMSOL license批量扫描如果用了parfor并行每个worker都会启动独立的COMSOL会话license数量不够时会直接报错。我的做法是先用普通for循环跑通确认无误后再考虑并行并行时限定最大worker进程数避免license冲突。4. 把方程组塞进COMSOL系数映射、耦合策略和网格设置4.1 Coefficient Form PDE的系数映射表COMSOL的PDE模块里Coefficient Form PDE接口的标准形式是ea·∂²u/∂t² da·∂u/∂t ∇·(−c∇u − αu γ) β·∇u au f对大多数传热类问题ea、α、γ、β都不用管重点填da、c、a和f。把三个主方程逐项映射进去得到下面这张表因变量uda系数c系数f源项TeCe(Te,N)ke(Te,Tl,N)−G(Te−Tl) S(x,t)TlClkl(Tl)G(Te−Tl) (N/τ_rec)·hν_cN1D_N(N,T)αI(1−R)/(hν) − N/τ_rec − γ_A·N³这里有一个非常容易踩的坑COMSOL的c系数对应的是−∇·(c·∇u)如果你映射传热方程时把符号填反方程就变成了反向扩散解出来直接发散。我初学时在这里吃过亏后来养成了习惯——每个系数填进去之后先关闭其他源项做纯扩散测试看能量是否守恒符号对不对一目了然。还有单位问题。COMSOL默认使用国际单位制但很多激光文献给的是“mJ/cm²”“ps”这类习惯单位。Matlab函数里如果按习惯单位算光学参数COMSOL里又用国际单位去调用结果会错得离谱且很难查。我后来统一规范所有物理量在进入COMSOL之前转换成国际单位Matlab回调函数返回的R和α也是国际单位制问题迎刃而解。4.2 分离迭代为什么比全耦合更稳这套方程组的刚性很强。电子温度在皮秒量级就能升到很高晶格温度在纳秒量级还在慢慢涨载流子扩散的时间尺度又在中间三个因变量的特征时间相差三四个数量级。如果直接用全耦合Newton求解雅可比矩阵的条件数非常差COMSOL默认求解器会反复缩减步长甚至直接崩溃。我的经验是先做解耦迭代分两步第一步固定N和Tl不变只更新Te方程。因为此时激光源项和光学参数都是确定的Te方程本质上是一个非线性热传导方程COMSOL处理这种问题非常稳。第二步固定Te不变更新Tl和N。晶格方程和载流子连续性方程的时间常数比较接近可以放一个组里用分离步Segregated去解。在COMSOL求解器配置里把因变量拆成两组{Te}和{Tl, N}用Segregated solver分步求解组内用Newton迭代组外做交替更新。每组迭代的容差设置成相对误差1e-4、绝对误差1e-6实测收敛速度和稳定性都远好于全耦合。等解耦迭代能稳定跑完整个时间窗口了再尝试切换全耦合加速。期间我还在Matlab外层加了一个固定点迭代循环当N场更新前后的相对变化大于1%时重新求解Te方程。实际跑下来一个时间步内通常两三轮就收敛比一次性全耦合省很多时间。4.3 时间窗口、时间步长和网格的尺度匹配激光脉冲的时间尺度决定了时间步长脉冲越短步长就得越小。我用的是100 fs脉宽、800 nm波长外推到典型工况脉冲期间最大时间步长取脉宽的1/10也就是10 fs。脉冲结束后逐步放开先从1 ps起步过了100 ps之后可以放大到10 ps甚至1 ns前提是每个时间窗结束时解已经平稳。边界条件方面对飞秒激光来说最需要控制的是吸收深度δ和网格尺寸的关系。激光的穿透深度有时只有几十纳米有时到几十微米具体取决于波长和材料状态计算前务必用光学参数库确认你这一工况下的吸收深度。网格在吸收层内部至少要放5个节点表面用边界层网格首层厚度取δ/5到δ/10增长因子1.2。这样既能保证表面温度梯度不糊掉也不会让总网格数爆炸。计算域的整体长度取热扩散长度L√(D_th·t_max)的3~5倍就行。比如t_max是1微秒硅的扩散系数约0.9 cm²/s热扩散长度约300 nm计算域取1.5微米就够。再往外直接给固定环境温度边界基本不会影响表面结果。这里补充一个经验启动时间最好比激光脉冲峰值提前20 ps左右再算。别小看这段“预热”它能让初始数值噪声在激光到来之前充分衰减否则激光源项一开数值解容易出现振荡你还以为是物理发散。5. 实测中的稳定性问题和性能调试五个绕不开的坑5.1 表面温度出现非物理负值怎么办第一次跑通模型时我遇到过Te在脉冲峰值附近剧烈震荡甚至出现负值的情况。排查了半天根因在电子热容Ce上Ce在低温端趋近于零能量方程的时间项退化雅可比矩阵奇异数值解自然失去物理意义。解决办法是给Ce设一个下限保护。我直接把Ce的表达式改成max(3Nk_B/2, Ce_min)其中Ce_min取室温对应载流子浓度下的值确保数学上不会出现零热容的退化情况。同时对Te施加软化下限不让它跌破环境温度这里可以用一个光滑截断函数避免硬截断引入新的数值不连续。这个补丁加上之后Te振荡立刻消失。5.2 载流子浓度瞬间爆表和俄歇项的刚性另一个熟悉的问题是N在某些局部直接涨到10^28 cm^-3超过材料原子密度一个数量级一看就是数值爆炸而非真实物理。两个原因一是俄歇复合项γ_A·N³在大N时刚性极强显式处理必炸二是激光源项里光学参数依赖N产生了正反馈放大效应。处理方式分两层。数值层面把求解器强制切到隐式BDF格式阶数设为2最大步长控制住物理层面给N加一个饱和上限比如10^22 cm^-3这是固体中被认为合理的载流子浓度上界超过这个值材料基本上已经发生不可逆损伤双温方程本身也不再适用。我在代码里加了一个判断N超过上限就打印警告并终止当前工况避免浪费后面的算力。如果俄歇项导致收敛困难还可以先把它暂时关闭跑通再分档加回来确认它对结果的贡献量级。5.3 分离迭代的“假收敛”和能量守恒校验分离式迭代最常见的坑是“假收敛”外层循环判断N的相对变化小于1%认为收敛了但Te场其实还在缓慢漂移。我遇到过一次晶格温度在两轮迭代之间持续下降表面看N不变实际能量已经泄漏。单看N作为收敛判据不够后来改成把Te、Tl、N向量拼接成一个综合状态向量用二范数的相对变化作为收敛标准阈值1e-4。这还不够我还加了一道能量守恒校验把激光入射总能量、电子内能增量、晶格内能增量、载流子复合释放能量、边界流出的能量全部积分出来检验式子∫S_total dt ΔE_e ΔE_l E_boundary E_recomb误差超过2%就提示“时间步长过粗或网格分辨率不足”。这道校验在我后续换网格、换时间窗口时帮了大忙很多潜在问题在影响结果之前就被识别出来了。5.4 从一维扩展二维轴对称之后的性能优化模型从一维扩展到二维轴对称后自由度从几千涨到几十万求解时间从分钟级涨到小时级。优化手段优先做三件事关掉COMSOL的后处理绘图实时刷新每10个时间步才记录一次解只在关键时间点存储变量而不是每个步长都存网格剖分只做一次循环扫描时禁止重新剖分。还有一个优化细节藏在参数扫描逻辑里。Matlab循环每次修改激光能量密度参数时如果用model.param.set()改参数后重新求解COMSOL会自动判断是否需要重新组装矩阵。但如果设置的参数影响的是系数型PDE的源项矩阵需要每次组装耗时大增。能通过解析表达式把参数写进f系数里的就不要用参数表去驱动这样可以在扫描循环中复用组装好的矩阵性能提升明显。我们最终用这套优化方案把200组二维轴对称参数扫描从预估的6天压缩到了不到20小时。5.5 光学参数剧烈跳变带来的求解中断最后一个问题是光学参数在特定载流子密度区间出现剧烈跳变。我最初用实验数据直接插值数据点在N10^19附近有陡峭变化插值函数的一阶导数不连续COMSOL的Newton迭代在跳变点附近反复震荡。解决方式很简单对插值函数做平滑处理或者改用分段低阶多项式拟合。我推荐后者因为拟合函数可以保证连续可导数值稳定性大大提升。实在要用原始数据给数据做一次移动平均或其他平滑滤波也行但要记录清楚平滑窗口大小避免把真实物理拐点也抹掉了。结尾最后聊一下我自己的体会。做这类强耦合仿真最害怕的其实不是模型不够复杂而是复杂到你没法判断哪个物理机制在起作用。我把这套带载流子密度变化的双温方程模型从零搭到稳定运行前后折腾了差不多两个月最后总结出一条经验每次只增加一个物理效应跑通之后看它对结果的影响如果某项的贡献不超过1%在当前参数域内就把它删掉。这样既控制了计算成本写论文的时候也能理直气壮地说“本模型只保留主控机制”。我也建议你拿到模型图之后先把图里所有耦合关系列成一张表再逐一判断哪些是必要的、哪些是示意性的。填参数、调网格、压迭代这些事情都是给这张表服务的。希望这些踩坑记录能帮你少走几个弯路尤其是那些参数和收敛问题能复现别人的经验比自己从头试错快太多。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

SpringBoot+Vue校园二手交易系统开发实战 2026/9/11 15:08:58

SpringBoot+Vue校园二手交易系统开发实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
秒杀系统测试实战:用Jest和JUnit驱动TDD保障库存与幂等 2026/9/11 15:08:58

秒杀系统测试实战:用Jest和JUnit驱动TDD保障库存与幂等

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
G-Helper 设置失灵怎么办:从一键还原到手动重建配置的排查手册 2026/9/11 15:08:58

G-Helper 设置失灵怎么办:从一键还原到手动重建配置的排查手册

G-Helper 设置失灵怎么办:从一键还原到手动重建配置的排查手册 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zen…

阅读更多 →
粒子群模糊PID论文复现全流程:从参数解读到代码实现与调优 2026/9/11 15:08:58

粒子群模糊PID论文复现全流程:从参数解读到代码实现与调优

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
AlphaFold 蛋白质复合物预测完全教程:多亚基结构建模与置信度解读 2026/9/11 15:08:58

AlphaFold 蛋白质复合物预测完全教程:多亚基结构建模与置信度解读

AlphaFold 蛋白质复合物预测完全教程:多亚基结构建模与置信度解读 【免费下载链接】alphafold Open source code for AlphaFold 2. 项目地址: https://gitcode.com/GitHub_Trending/al/alphafold AlphaFold 是蛋白质结构预测的开源实现,其 multim…

阅读更多 →
二叉树刷题指南:从递归遍历到Hot 100经典题型的核心模板 2026/9/11 15:05:58

二叉树刷题指南:从递归遍历到Hot 100经典题型的核心模板

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞