mcpField
P
pygimli

pygimli

github.com/steadfastasart数据与数据库7361 次安装6 周前更新
代码仓库

关于 pygimli

pygimli 是用于近地表地球物理建模与反演的 Python 工具,适合处理电阻率层析成像和地震折射数据。它提供网格、数据容器及面向具体方法的管理器,并支持结果可视化和导出。

主要功能

  1. 01有限元网格与数据容器
  2. 02电阻率层析成像处理和反演
  3. 03地震折射反演
  4. 04创建自定义网格
  5. 05保存模型并导出 VTK

适用场景

  1. 01反演并查看电阻率测量数据
  2. 02处理地震折射走时数据
  3. 03导出网格和模型供 ParaView 查看

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/steadfastasart/geoscience-skills --skill pygimli

安装后在 Claude Code 中输入/pygimli确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
mesh.md
methods.md
scripts/
ert_inversion.py

详细介绍

pyGIMLi - 地球物理反演

快速参考

import pygimli as pg
from pygimli.physics import ert, srt

# Load ERT data
data = ert.load("survey.ohm")

# Invert
mgr = ert.ERTManager(data)
model = mgr.invert(lam=20, verbose=True)

# View result
mgr.showResult()

主要类

类用途
pg.Mesh有限元网格
pg.DataContainer测量数据与几何信息
pg.Inversion基础反演框架
ert.ERTManagerERT 处理与反演
srt.SRTManager地震折射反演

基本操作

加载和查看 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)

电极排列类型

代码排列
wa温纳-α
wb温纳-β
dd偶极-偶极
pd极-偶极
pp极-极
slm施伦贝谢
gr梯度

数据格式

格式扩展名说明
BERT/pyGIMLi.ohm统一数据格式
Syscal.txtIRIS 导出格式
Res2DInv.dat二维反演格式
ABEM.ohmABEM Terrameter
SRT.sgt地震走时

何时选择 pyGIMLi 而非其他方案

场景建议
使用常见排列进行标准 ERT 反演pyGIMLi - API 最简洁,内置排列类型
地震折射层析成像(SRT)pyGIMLi - 集成 SRT 管理器
多方法反演(直流电、磁法、重力、电磁法)SimPEG - 支持的方法更广泛
商用 ERT 处理与报告生成Res2DInv - 行业标准,基于 GUI
自定义正演算子或需要研究灵活性SimPEG - 设计更模块化
基于 FEM 的地球物理建模pyGIMLi - 原生支持 FEM 网格

选择 pyGIMLi 的情况:需要以极少的代码进行近地表地球物理反演(ERT、SRT、IP)。其管理器类(ERTManager、SRTManager)只需几行代码,即可处理从数据加载、反演到可视化的完整工作流。

避免选择 pyGIMLi 的情况:需要近地表以外的方法(使用 SimPEG),或需要商用级报告流程。

常见工作流

ERT 数据反演与可视化
  • 使用 ert.load("survey.ohm") 加载 ERT 数据文件
  • 检查数据:使用 data.size() 查看测量数量,并绘制伪剖面
  • 删除异常值或错误数据点
  • 使用数据创建 ERTManager
  • 运行反演:mgr.invert(lam=20)(从较大的 lambda 开始)
  • 检查卡方值(目标值约为 1)
  • 使用 mgr.showResult() 可视化结果
  • 将网格和模型导出为 VTK,供 ParaView 使用:mgr.mesh.exportVTK()
  • 根据需要调整 lambda 和 zWeight,然后重新反演

反演技巧

  1. 从较大的 lambda 开始(50-100),再逐渐减小
  2. 检查数据质量——反演前删除异常值
  3. 对于层状结构,使用 zWeight < 1
  4. 检查覆盖范围——覆盖范围低意味着分辨率较差
  5. 卡方值约为 1 表示拟合良好且未过拟合

参考资料

脚本

评论

支持 Markdown