用途:GemPy 用于基于隐式方法的三维构造地质建模,从地表接触点(surface points)和产状(orientations)数据出发,构建包含断层、褶皱和不整合面的地质模型,并可与 Python 工作流集成。
主要能力:通过 gp.create_geomodel 创建模型容器 GeoModel,指定范围 extent 与分辨率 resolution;用 gp.add_surface_points 添加地表点,用 gp.add_orientations 添加产状;用 gp.map_stack_to_surfaces 映射地层堆栈;设置构造关系(ERODE 表示年轻面侵蚀老面即不整合,ONLAP 表示上超,FAULT 表示断层面,INTRUSION 表示侵入体);用 gp.set_interpolator 设置插值器,gp.compute_model 计算模型。结果可通过 sol.raw_arrays.lith_block 获取岩性块并重塑为三维数组。可视化支持 gp.plot_2d 二维剖面和 gp.plot_3d 三维显示(三维需 PyVista)。数据可从 CSV 读取,列包括 X、Y、Z、surface 以及产状的 dip、azimuth。
使用方式:典型流程为定义或加载地表点(每个面至少 2 个点)与产状(每个面至少 1 个),创建 GeoModel,添加数据,映射地层,设置构造关系,设置插值器,计算模型,再用二维剖面验证并三维可视化或导出 VTK。
适用场景:需要从地表接触与产状进行隐式三维地质建模、处理断层与不整合关系、并与 Python 工作流集成时适用;也支持从地质模型进行重力/磁法正演。
限制:复杂褶皱建模建议使用 LoopStructural;商业级储层建模建议使用 SKUA-GOCAD 等专有工具;仅需快速二维剖面时可能过重。常见问题包括模型不计算(检查每个面至少 2 点加 1 产状)、边缘伪影(扩大模型范围)、断层错距错误(检查 pole_vector 方向)、内存错误(降低网格分辨率)。