基于分步傅里叶法的光纤激光器脉冲传输演化模拟系统
项目简介
本项目是一个基于MATLAB开发的高精度数值仿真系统,核心采用分步傅里叶法(Split-Step Fourier Method, SSFM)求解非线性薛定谔方程(NLSE)。该系统旨在模拟超短光脉冲在单模光纤中的传输过程,能够精确描述光脉冲在群速度色散(GVD)、三阶色散(TOD)、自相位调制(SPM)以及线性损耗共同作用下的时频域演化规律。
通过该模拟程序,用户可以观测到脉冲展宽、压缩、频谱分裂以及非线性相移积累等物理现象,适用于光纤激光器设计、光通信链路仿真及非线性光学研究。
功能特性
- 多物理效应融合:综合考虑了光纤传输中的多种机制,包括线性损耗(Loss)、二阶群速度色散(GVD)、三阶色散(TOD/High-order Dispersion)以及克尔非线性效应(SPM)。
- 多种初始脉冲源:程序内置了两种常见的初始脉冲激发出射:
* 双曲正割脉冲(Sech Pulse):典型锁模激光器输出波形。
* 高斯脉冲(Gaussian Pulse):常规激光脉冲波形。
* 支持自定义初始脉冲的峰值功率、脉宽、中心波长及初始啁啾(C_chirp)。
- 高精度数值算法:采用对称分步傅里叶法(Symmetric SSFM),将传输步长一分为二,通过“半步线性+全步非线性+半步线性”的算子顺序提升计算精度。
- 动态演化监测:
* 支持时域和频域的演化全过程记录。
* 实时追踪脉冲峰值功率和脉冲宽度的变化轨迹。
* 通过降采样策略(Save_Frames)优化长距离传输仿真的内存占用。
* 计算输出脉冲的瞬时相位、啁啾(Chirp)及频率偏移。
* 提供时域演化瀑布图(Waterfall Plot),直观展示脉冲随传输距离的形态变化。
系统要求
- 软件环境:MATLAB R2016a及以上版本(需支持基本的FFT/IFFT函数及图形绘制)。
- 工具箱:无需额外工具箱,基于MATLAB基础函数库开发。
算法实现与核心逻辑
本程序完全基于
main.m 文件中的逻辑构建,以下是对代码内部实现细节的深度解析:
1. 物理参数与单位标准化
为了确保数值计算的稳定性,程序首先将工程单位转换为计算所需的自洽单位体系:
- 时间:皮秒 (ps)
- 功率:瓦特 (W)
- 距离:千米 (km) / 米 (m)
- 频率:太赫兹 (THz)
程序根据光纤总长
L 和设定的步数
Step_num 自动计算空间步长
h,并根据时间窗口
TimeWindow 和采样点数
N(2048点)构建时间与频率的精细网格。
2. 初始场构建
代码根据
input_pulse_type 选择构建初始光场
A(0,t):
- Sech模型:引入相位因子
exp(-0.5i * C * (t/T0)^2) 以模拟线性啁啾。 - Gaussian模型:使用复高斯函数形式,同样包含啁啾参数。
初始场构建完成后,立即计算并在内存中记录初始时刻的频谱作为仿真的起点。
3. 对称分步傅里叶法(Symmetric SSFM)核心引擎
这是仿真器的核心部分,具体实现逻辑如下:
定义了色散算子 $D$,包含损耗向 $-alpha/2$、二阶色散项 $ibeta_2omega^2/2$ 和三阶色散项 $ibeta_3omega^3/6$。代码预计算了半步长的线性传输算子
Half_Linear_Step_Freq,以提高迭代效率。
定义了非线性算子 $N$,仅包含自相位调制项 $igamma|A|^2$。代码直接利用当前场的瞬时功率计算非线性相移,并乘以空间步长叠加到光场上。
代码采用了严格的对称分步算法以降低局部误差至 $O(h^3)$:
1.
预处理:在进入循环前,光场先经过一次半步长的线性色散传输(频域乘法)。
2.
主循环:
*
非线性步:在时域进行全步长的非线性相位调制。
*
线性步:对于中间步骤,执行全步长的线性色散传输(通过将
Half_Linear_Step_Freq 平方实现)。
*
数据记录:在指定的
save_interval 间隔,记录当前光场的强度分布用于后续绘图。
3.
收尾:在循环的最后一步,仅执行半步长的线性传输,从而闭合对称结构。
4. 关键指标计算
代码包含辅助函数
calculate_pulse_metrics(在循环中调用),用于实时计算:
- 峰值功率:当前传输距离下的脉冲最大强度。
- 脉冲宽度:基于二阶矩或半高全宽方法的脉宽估算。
5. 结果后处理
仿真结束后,程序对最终输出脉冲进行详尽的物理量提取:
- 相位解包裹:使用
unwrap 函数处理相位跳变。 - 啁啾计算:通过对相位求导(
gradient)计算频率啁啾(Frequency Chirp),并换算为 GHz 单位。 - 坐标轴转换:将角频率轴 $omega$ 转换为物理波长轴 $lambda$ (nm),便于光学领域的分析。
6. 可视化输出
代码最后部分实现了三维瀑布图的绘制逻辑,利用
waterfall 函数生成
(时间, 传输距离, 功率) 的三维曲面,并通过
shading interp 和
colormap jet 进行美化,直观呈现脉冲在光纤中传输时的展宽或压缩过程。
使用说明
由于所有参数均硬编码在代码开头,使用时需直接修改
main.m 脚本顶部的参数部分:
- 修改初始脉冲:
* 调整
P0 改变峰值功率。
* 调整
T0 改变初始脉宽。
* 设置
input_pulse_type 选择脉冲形状。
* 设置
C_chirp 引入初始啁啾。
- 修改光纤参数:
*
L:光纤长度。
*
beta2:色散特性(负值对应反常色散区)。
*
gamma:非线性系数。
- 运行仿真:
直接运行脚本,程序将在控制台打印进度,计算完成后自动弹出可视化的图形窗口。