AgentSkillsCN

pygimli

多方法地球物理建模与反演框架。当Claude需要执行以下操作时使用:(1) 开展电法电阻率层析成像(ERT)反演;(2) 运行地震折射层析成像(SRT);(3) 对激发极化(IP)数据进行建模;(4) 模拟探地雷达(GPR)数据;(5) 为地球物理问题构建有限元网格;(6) 对多组数据开展联合反演;(7) 进行地球物理响应的正演模拟;(8) 分析时序监测数据。

SKILL.md
--- frontmatter
name: pygimli
description: |
  Multi-method geophysical modelling and inversion framework. Use when Claude needs to:
  (1) Perform electrical resistivity tomography (ERT) inversion, (2) Run seismic refraction
  tomography (SRT), (3) Model induced polarization (IP) data, (4) Simulate ground penetrating
  radar (GPR), (5) Create finite element meshes for geophysical problems, (6) Perform joint
  inversions of multiple datasets, (7) Forward model geophysical responses, (8) Analyze
  time-lapse monitoring data.

pyGIMLi - Geophysical Inversion

Quick Reference

python
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()

Key Classes

ClassPurpose
pg.MeshFinite element meshes
pg.DataContainerSurvey data and geometry
pg.InversionBase inversion framework
ert.ERTManagerERT processing and inversion
srt.SRTManagerSeismic refraction inversion

Essential Operations

Load and View ERT Data

python
import pygimli as pg
from pygimli.physics import ert

data = ert.load("survey.ohm")
print(f"Measurements: {data.size()}")
ert.showData(data)  # Pseudosection

ERT Inversion

python
from pygimli.physics import ert

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

Seismic Refraction

python
from pygimli.physics import srt

data = srt.load("traveltimes.sgt")
mgr = srt.SRTManager(data)
model = mgr.invert(lam=30, zWeight=0.3)
mgr.showResult()

Create Custom Mesh

python
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 and Export

python
# 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)

Array Types

CodeArray
waWenner-alpha
wbWenner-beta
ddDipole-dipole
pdPole-dipole
ppPole-pole
slmSchlumberger
grGradient

Data Formats

FormatExtensionDescription
BERT/pyGIMLi.ohmUnified data format
Syscal.txtIRIS export
Res2DInv.dat2D inversion format
ABEM.ohmABEM Terrameter
SRT.sgtSeismic traveltimes

Inversion Tips

  1. Start with higher lambda (50-100) and decrease
  2. Check data quality - remove outliers before inversion
  3. Use zWeight < 1 for layered structures
  4. Check coverage - low coverage = poorly resolved
  5. Chi-squared ~ 1 indicates good fit without overfitting

References

Scripts