AgentSkillsCN

simpeg

地球物理领域的模拟与参数估计。构建地球物理正演与反演的框架。当Claude需要执行以下操作时使用:(1) 运行地球物理反演(直流电阻率、磁法、重力、电磁法);(2) 为电位场或电磁方法创建正演模型;(3) 构建测线几何与接收器配置;(4) 为模拟设计网格离散化方案;(5) 对反问题应用正则化与优化手段;(6) 从地球物理数据中反演地下物理属性。

SKILL.md
--- frontmatter
name: simpeg
description: |
  Simulation and Parameter Estimation in Geophysics. Framework for geophysical
  forward modeling and inversion. Use when Claude needs to: (1) Run geophysical
  inversions (DC resistivity, magnetics, gravity, EM), (2) Create forward models
  for potential fields or electromagnetic methods, (3) Build survey geometries
  and receiver configurations, (4) Design mesh discretizations for simulations,
  (5) Apply regularization and optimization to inverse problems, (6) Model
  subsurface physical properties from geophysical data.

SimPEG - Geophysical Simulation & Inversion

Quick Reference

python
from discretize import TensorMesh
from simpeg.electromagnetics.static import resistivity as dc
from simpeg import maps, data_misfit, regularization, optimization
from simpeg import inverse_problem, inversion, directives
import numpy as np

# Create mesh
hx, hz = np.ones(100) * 10, np.ones(50) * 5
mesh = TensorMesh([hx, hz], origin='CN')

# Forward model
simulation = dc.Simulation2DNodal(mesh, survey=survey, sigmaMap=maps.ExpMap(mesh))
dpred = simulation.dpred(model)

# Inversion
dmis = data_misfit.L2DataMisfit(data=data, simulation=simulation)
reg = regularization.WeightedLeastSquares(mesh)
opt = optimization.InexactGaussNewton(maxIter=20)
inv_prob = inverse_problem.BaseInvProblem(dmis, reg, opt)
inv = inversion.BaseInversion(inv_prob, directiveList=[...])
mrec = inv.run(m0)

Key Classes

ClassPurpose
TensorMesh, TreeMeshDiscretization (regular grid, adaptive octree)
SurveyData acquisition geometry
SimulationForward modeling engine
DataObserved/predicted data container
InvProblemCombines misfit, regularization, optimization

Essential Operations

Create Mesh

python
from discretize import TensorMesh

# 2D mesh (x, z) - centered in x, top at z=0
hx, hz = np.ones(100) * 20, np.ones(50) * 10
mesh = TensorMesh([hx, hz], origin='CN')

# 3D mesh
mesh = TensorMesh([np.ones(50)*25, np.ones(50)*25, np.ones(30)*10], origin='CCN')

DC Resistivity Survey

python
from simpeg.electromagnetics.static import resistivity as dc

elec_locs = np.c_[np.linspace(-95, 95, 20), np.zeros(20)]
source_list = []
for i in range(17):  # dipole-dipole
    rx = dc.receivers.Dipole(elec_locs[[i+2]], elec_locs[[i+3]])
    src = dc.sources.Dipole([rx], elec_locs[i], elec_locs[i+1])
    source_list.append(src)
survey = dc.Survey(source_list)

Forward Model

python
model = np.ones(mesh.nC) * 100  # 100 ohm-m
simulation = dc.Simulation2DNodal(mesh, survey=survey, sigmaMap=maps.ExpMap(mesh))
dpred = simulation.dpred(np.log(1/model))  # input: log(conductivity)

Inversion

python
from simpeg import data_misfit, regularization, optimization
from simpeg import inverse_problem, inversion, directives, data

obs_data = data.Data(survey, dobs=dobs, standard_deviation=0.05*np.abs(dobs))
dmis = data_misfit.L2DataMisfit(data=obs_data, simulation=simulation)
reg = regularization.WeightedLeastSquares(mesh, alpha_s=1e-4, alpha_x=1, alpha_z=1)
opt = optimization.InexactGaussNewton(maxIter=20)
inv_prob = inverse_problem.BaseInvProblem(dmis, reg, opt)
dir_list = [directives.BetaSchedule(coolingFactor=2), directives.TargetMisfit()]
inv = inversion.BaseInversion(inv_prob, directiveList=dir_list)
mrec = inv.run(m0)

Common Maps

MapDescriptionUse Case
IdentityMapNo transformationSusceptibility, density
ExpMapexp(m)Log-parameterized conductivity
ReciprocalMap1/mResistivity to conductivity
WiresSplit modelJoint inversion

Physical Property Ranges

PropertyTypical RangeUnits
Resistivity1 - 10000ohm-m
Conductivity0.0001 - 1S/m
Susceptibility0 - 0.1SI
Density contrast-1 to 1g/cc

Tips

  1. Use log parameters for positive quantities (resistivity, susceptibility)
  2. Start with coarse mesh and refine after initial tests
  3. Check data fit by plotting observed vs predicted
  4. Tune regularization to balance data fit and model smoothness
  5. Use TreeMesh for 3D problems to improve efficiency

References

  • Survey Types - Survey configurations and receiver types
  • Mesh Types - Mesh discretization and refinement

Scripts