激光谐振腔光场自洽解数值仿真系统
项目简介
本项目是一个基于MATLAB开发的数值仿真系统,专注于模拟激光器谐振腔内光场从初始噪声状态演化至稳态分布的全过程。系统基于经典的 Fox-Li 迭代法 原理,利用计算机数值计算方法求解菲涅尔-基尔霍夫(Fresnel-Kirchhoff)衍射积分方程。
该工具能够精确模拟光波在谐振腔的前后反射镜之间多次往返传播、反射及孔径衍射的物理行为,是研究激光物理、设计腔型结构以及分析光束质量(TEM模式)的有力辅助工具。
功能特性
- 多腔型支持:通过灵活配置镜面曲率半径,可模拟平行平面腔、共焦腔、同心腔以及任意一般稳定或非稳定腔。
- 物理光场演化:模拟光从随机初始噪声开始,经过多次往返迭代,最终形成自再现模(Self-consistent mode)的过程。
- 孔径衍射模拟:支持圆形(Circle)和矩形(Rect)两种镜面孔径形状,精确计算受限孔径下的衍射效应。
- 高效数值算法:采用快速傅里叶变换(FFT)结合频域传递函数,相比直接数值积分极大提高了计算速度。
- 关键参数计算:自动计算单程/往返衍射损耗、稳态振幅分布、相位分布。
- 可视化系统:
*
实时动态监测:在计算过程中实时刷新光强分布图和损耗收敛曲线。
*
多维结果展示:仿真结束后提供2D/3D光强、相位分布、横截面剖面分析及损耗收敛历史。
系统要求
- 运行环境:MATLAB R2016a 及以上版本
- 工具箱:基础MATLAB环境即可(通过原生
fft2, ifft2 实现,无需额外工具箱) - 内存要求:取决于网格点数(N),默认N=512配置下普通PC即可流畅运行。
---
核心算法与实现逻辑
本系统的核心代码实现了基于标量衍射理论的 Fox-Li 迭代算法。以下是代码中关键逻辑的详细解析:
1. 物理模型初始化
- 参数配置:系统定义了激光波长(如 1064nm)、腔长、镜面孔径尺寸(半径或半宽)以及前后反射镜的曲率半径(R1, R2)。
- 网格构建:建立 $N times N$ 的计算网格。为了防止频域混赫(Aliasing)和边界反射干扰,计算窗口宽度设定为孔径尺寸的多倍(win_scale)。
- 初始光场:代码构造了一个含有微弱随机噪声的均匀平面波作为初始场 $U_0$。引入随机性是为了在迭代初期激发多种模式,通过模式竞争最终筛选出损耗最小的主模(通常为TEM00基模)。
- 预计算相位与传递函数:
*
透镜/相位变换因子:根据薄透镜近似,预先计算了反射镜对波前的二次相位调制因子 $exp[-i k (x^2+y^2)/2R]$。
*
自由空间传递函数:基于菲涅尔近似,在频域预计算了传播算子 $H = exp[-i pi lambda L (f_x^2 + f_y^2)]$,用于后续的FFT卷积计算。
2. Fox-Li 迭代传播 (Diffraction Loop)
仿真主循环模拟了光在谐振腔内的往返过程,单次迭代包含以下步骤:
- 光场调制(M1端):当前光场乘以 M1 镜面的反射相位因子,并应用孔径光阑(Mask)进行截断。
- 正向传播(M1 -> M2):
* 对光场进行二维快速傅里叶变换(FFT2)转换至频域。
* 与预计算的传递函数 $H$ 相乘。
* 进行二维傅里叶逆变换(IFFT2)得到到达 M2 镜面的光场。
- 反射与逆向传播(M2 -> M1):
* 在 M2 端再次乘以反射相位因子及孔径光阑。
* 重复 FFT-传递函数-IFFT 的过程,将光场传回 M1 端,完成一次往返。
3. 损耗计算与归一化
- 能量计算:在每次往返的前后分别计算光场总能量(场幅模的平方和)。
- 衍射损耗:通过比较往返前后的能量比值,计算单次往返的功率衰减因子 $gamma^2$,进而得到衍射损耗 $text{Loss} = 1 - gamma^2$。
- 数值稳定性:为了防止多次迭代后数值溢出或趋于零,每次迭代后都对光场振幅进行归一化处理(保持最大幅值为1或能量守恒)。
4. 收敛判定
系统记录每次迭代的损耗值。当连续两次迭代的损耗差值小于设定的阈值(
convergence_tol,默认 1e-6)且迭代次数满足最少要求时,程序判定系统已达到稳态,自动终止迭代。
---
仿真结果分析
代码执行完成后,会生成包含6个子图的综合分析窗口:
- 二维光强分布:展示稳态光斑的俯视图,使用 Jet 色图表示能量强弱,直观反映模场形状(圆形或矩形对称)。
- 二维相位分布:展示波前的等相位面,对于稳定腔通常呈现同心圆环状。
- 三维光场分布:以 3D Surface 形式展示光强立体分布,便于观察高斯光束的尖峰特性。
- 横截面光强剖面 (y=0):沿着中心轴线的切片曲线,并标记了镜面孔径边缘(红色虚线),清晰展示光束在孔径内的能量集中度及边缘衍射纹。
- 横截面相位剖面 (y=0):展示波前相位随位置的变化,经过相位解包裹处理(Unwrap),可以反映出射光束的波前曲率。
- 往返衍射损耗收敛曲线:记录了从初始噪声震荡到最终稳定值的全过程。曲线平滑趋于常数表明模式竞争结束,形成了稳定的自再现模。
使用方法
- 下载本项目代码。
- 在 MATLAB 中打开包含
main 函数的文件。 - 根据需要修改
System Parameters 区域的变量:
* 修改
R1,
R2 改变腔型(如
R1=inf 为平面镜)。
* 修改
MirrorShape 为
'Rect' 或
'Circle' 切换孔径形状。
* 修改
N 调整计算精度与速度。
- 运行脚本,观察实时绘图窗口。
- 等待迭代结束,分析最终生成的稳态结果图表。