基于交错网格的高精度地震有限差分正演模拟系统
项目介绍
本项目是一个基于 MATLAB 开发的高精度地震波场数值模拟系统。该系统核心采用交错网格有限差分法(Staggered Grid Finite Difference Method)求解二维声波方程。通过将速度场和压力场在空间网格上相互错开平移半个网格点,本系统能够有效提升计算精度并增强数值稳定性,真实还原地震波在地下不同介质交界面处的传播行为。
功能特性
- 高阶数值精度:实现空间 4 阶精度的有限差分算子,相比传统 2 阶算法,能更有效地抑制数值色散现象,提高复杂模型下的波场解析度。
- 完善的边界条件:集成了完全匹配层(PML)吸收边界技术,通过在模型四周设置特殊的衰减层,能够模拟无限空间,消除人工边界产生的反射干扰。
- 灵活的震源加载:程序内置雷克子波(Ricker Wavelet)震源,支持自定义主频、延迟时间及激发位置。
- 实时动态可视化:在数值迭代过程中实时更新波场快照和地震波记录(共炮集),便于研究人员观察波形传播、反射及绕射过程。
系统要求
- 软件环境:MATLAB R2016b 或更高版本。
- 硬件配置:建议 8GB RAM 以上,具备图形显示器以展示实时动画。
使用方法
- 启动 MATLAB 界面。
- 将包含程序代码的文件夹设置为当前工作路径。
- 在命令行窗口输入主函数名称并回车。
- 程序将自动初始化参数并开始迭代,通过弹出的图形窗口展示波场演化过程。
- 模拟结束后,系统会自动生成一份包含最终波场状态、合成地震记录、单道波形以及速度模型的统计报告图。
核心实现逻辑说明
1. 模型参数定义与初始化
程序首先定义了 $400 times 400$ 的空间网格,间距为 10 米。时间步长设置为 1 毫秒以满足稳定性条件。介质模型被初始化为一个双层模型:上层速度为 2500m/s,下层速度为 3500m/s。程序会自动计算 CFL 稳定性条件,验证步长设置是否会导致数值发散。
2. 交错网格与 PML 扩展
为了实现 PML 吸收边界,程序将原始网格向四周扩展了 50 层。在核心算法中,压力分量定义在网格中心,而水平速度和垂直速度则分布在交错的半网格位置。PML 的衰减系数按照二次方分布规律从内向外递增。
3. 核心计算循环
时间迭代采用蛙跳式更新,每个时间步执行以下逻辑:
- 震源激发:在指定位置将雷克子波能量注入到压力场的两个分量(Px 和 Pz)中。
- 速度场更新:利用 4 阶差分系数(9/8 和 -1/24)计算压力梯度的导数,进而在考虑 PML 衰减的情况下更新水平速度 $u$ 和垂直速度 $w$。
- 压力场分量更新:基于更新后的速度场计算散度项,结合介质的体积模量,分别更新分裂后的压力分量 Px 和 Pz。
4. 数据采集与结果展示
在迭代过程中,程序持续从指定的检波器排列位置提取总压力值,构建合成地震记录。最终输出涵盖了:
- 波场快照:展示某一时刻波束在地下传播的整体分布。
- 合成地震记录:模拟地表或井中观测到的地震数据。
- 单道波形图:提取中心检波器的振幅随时间变化曲线。
- 介质模型图:展示地下波速的结构分布。
关键算法实现细节
- 差分系数:采用了经典的高阶差分格式,即 $c1 = 9/8, c2 = -1/24$,这种权重的组合是 4 阶精度交错网格的标准配置。
- 分裂式 PML:针对声波方程采取了压力场分裂技术($P = Px + Pz$),以便在 X 和 Z 方向上应用独立的衰减函数。
- 稳定性检查:通过计算最大波速与时空采样率的关系,强制程序在安全参数范围内运行。