用途
pyGIMLi 是一个多方法地球物理建模与反演框架,主要用于近地表地球物理反演,包括电法电阻率层析成像(ERT)、地震折射层析成像(SRT)以及 IP 等方法。当任务涉及 ERT 反演或运行地震折射反演时,可使用该框架。
主要能力
框架的核心类包括:
- pg.Mesh:有限元网格
- pg.DataContainer:测量数据与几何
- pg.Inversion:基础反演框架
- ert.ERTManager:ERT 处理与反演
- srt.SRTManager:地震折射反演
支持的数组类型包括:wa(Wenner-alpha)、wb(Wenner-beta)、dd(偶极-偶极)、pd(单极-偶极)、pp(单极-单极)、slm(Schlumberger)、gr(梯度)。
支持的数据格式包括:.ohm(BERT/pyGIMLi 统一数据格式、ABEM Terrameter)、.txt(Syscal / IRIS 导出)、.dat(Res2DInv 2D 反演格式)、.sgt(SRT 地震走时)。
使用方式
加载与查看 ERT 数据:
import pygimli as pg
from pygimli.physics import ert
data = ert.load("survey.ohm")
print(f"Measurements: {data.size()}")
ert.showData(data) # Pseudosection
ERT 反演:
from pygimli.physics import ert
mgr = ert.ERTManager(data)
model = mgr.invert(
lam=20, # Regularization
verbose=True
)
mgr.showResult()
resistivity = mgr.model
地震折射:
from pygimli.physics import srt
data = srt.load("traveltimes.sgt")
mgr = srt.SRTManager(data)
model = mgr.invert(lam=30, zWeight=0.3)
mgr.showResult()
创建自定义网格:
import pygimli as pg
from pygimli.physics import ert
data = ert.load("survey.ohm")
mesh = pg.meshtools.createParaMesh(
data.sensors(),
quality=34.0,
paraMaxCellSize=5,
boundary=2
)
pg.show(mesh)
保存与导出:
# Save mesh and model
mgr.mesh.save("result_mesh.bms")
pg.save(model, "resistivity_model.vector")
# Export to VTK for ParaView
mgr.mesh.exportVTK("result", mgr.model)
适用场景
- 使用常见数组的标准 ERT 反演:pyGIMLi 提供最简单的 API 与内置数组类型。
- 地震折射层析成像(SRT):pyGIMLi 提供集成的 SRT 管理器。
- 基于有限元的地球物理建模:pyGIMLi 原生支持 FEM 网格。
- 当你需要近地表地球物理反演(ERT、SRT、IP)并希望以最少代码完成时,适合选择 pyGIMLi:其管理器类(ERTManager、SRTManager)在几行代码内处理从数据加载到反演再到可视化的完整工作流。
限制与替代方案
- 多方法反演(DC、磁法、重力、EM):SimPEG 覆盖更广的方法。
- 需要商业级报告流程的 ERT 处理:Res2DInv 是行业标准、基于 GUI。
- 自定义正演算子或研究灵活性:SimPEG 设计更模块化。
当需要超出近地表范围的方法时(使用 SimPEG),或需要商业级报告流水线时,应避免使用 pyGIMLi。
常见工作流与反演提示
ERT 数据反演与可视化流程:
- 使用 ert.load("survey.ohm") 加载 ERT 数据文件
- 检查数据:使用 data.size() 查看测量数量,绘制伪剖面
- 移除异常值或坏数据点
- 使用数据创建 ERTManager
- 运行反演:mgr.invert(lam=20)(从较高的 lambda 开始)
- 检查卡方值(目标约为 1)
- 使用 mgr.showResult() 可视化结果
- 导出网格与模型到 VTK(供 ParaView 使用):mgr.mesh.exportVTK()
- 如需要,调整 lambda 和 zWeight 后重新反演
反演提示:从较高的 lambda(50-100)开始并逐步降低;检查数据质量,在反演前移除异常值;对分层结构使用 zWeight < 1;检查覆盖度,低覆盖度意味着分辨率不佳;卡方值约为 1 表示拟合良好且未过拟合。
脚本
scripts/ert_inversion.py - 完整的 ERT 反演工作流。
参考资料
- Geophysical Methods - 支持的方法与工作流
- Mesh Generation - 网格创建与质量控制