
1. 为什么“Tesseral 建立地震模型”是老物探人的基本功先说结论Tesseral 正演模拟软件在石油物探圈子里一直是“做模型、看波场、验观测系统”的主力工具。它不是用来做最终偏移成像的商业软件而是让你在真正上机器跑叠前深度偏移之前先看清楚地下的波到底怎么传播的。之所以想写这篇文章是因为我见过太多新人在拿到工区资料后第一反应就是“赶紧建模、赶紧正演、赶紧出图”结果建出来的模型要么速度值瞎填要么边界反射淹没了目标层要么子波参数和实际资料完全对不上。最后反演出来的结果根本没参考价值时间白花了硬盘倒是多了几十 GB 的垃圾文件。这里说的“建立地震模型”通俗讲就是把地下介质的几何结构、速度、密度等信息用一种规范的方式在计算机里搭出来然后用 Tesseral 做波场正演模拟得到合成地震记录。这套东西能帮你解决很多实际问题采集观测系统怎么设计覆盖次数更均匀、排列长度够不够、不同构造成像需要多宽的方位角以及后续处理中的去多次波、速度分析、偏移归位等流程能不能在你预设的模型上真实跑通。顺便提一句最近网上常有人把“扩散模型”和地震数据放在一起聊主要是 AI 领域在尝试用生成模型补全缺失道或者插值。这类方法确实热门但在我看来它更多是锦上添花。真正要研究观测系统合理性、要理解波场特征你还是需要 Tesseral 这类物理正演工具来打基础。如果你正准备接触 Tesseral或者正在为工区建模参数头疼这篇内容可以当成一份实战笔记从建模前想清楚哪些事、到网格怎么定、速度怎么填、断层怎么处理再到正演参数怎么配、结果怎么分析最后再聊聊我这些年踩过的一些坑。全程用最直白的大白话讲不整那些虚头巴脑的理论推导。2. 建模前先想清楚这四件事否则后面全是无用功2.1 建模的用途决定模型精度很多人拿到工区就急着把构造图塞进软件里跑正演这个思路其实有问题。Tesseral 建模型前必须问自己一句我建这个模型到底要干什么如果是做观测系统设计比如横向覆盖范围、道距、炮间距的选择那模型做到“横向介质宏观速度趋势对、构造形态大致对”就够了没必要追求每一个薄互层的细节。因为这个场景下你关心的是波的运动学特征——反射波到达时差、多次波周期、绕射波位置而不是振幅绝对精度。如果是做 AVO 正演模拟研究亮点或含气性响应那模型就得精细到每个目的层段的纵波速度、横波速度、密度而且要保证入射角范围足够覆盖目标层。这种情况下地层参数填错 5%响应特征就可能面目全非。如果是验证叠前深度偏移速度建模流程那模型里的速度场必须平滑到和实际处理用的速度场一致而不是把地质上的岩性突变速度直接扔进去。因为偏移算法对速度梯度非常敏感模型里的“硬边界”如果保留得太多偏移结果会带出大量虚假构造。我见过不少项目组明明目的是做观测系统覆盖次数验证却花了两周时间精细雕刻一口井的分层速度和密度。最后正演出来的剖面确实漂亮但对于采集设计结论来说和用简化模型做出来的结果几乎没有差别。这就是典型的用途没想清楚、白费工。2.2 工区范围与计算量必须提前估算Tesseral 虽然是正演软件但计算资源消耗一点都不比偏移小。尤其是三维模型网格稍密一点内存和硬盘都会吃紧。所以在建模前你最好先估一个大概的计算规模避免模型建到一半发现机器跑不动。估算公式其实很简单网格数等于横向长度除以网格步长再乘纵向长度除以网格步长。假设你的模型横向 5 公里纵向 3 公里横向网格 10 米、纵向网格 5 米那就是 500 乘 600 等于 30 万个网格点。看起来不多但 Tesseral 正演要存波场快照、要输出地震道集再加上有限差分多步递推的中间变量实际内存占用往往是网格数的几十倍甚至上百倍。一个更稳妥的做法是先跑一个二维测线试试波场传播时间记录机器的运行时间再换算三维的倍数关系。这样不用等三维跑完就能预估是不是要抽稀网格、缩小工区或者增加硬件配置。2.3 速度信息来源要分清主次建模时最头疼的就是速度怎么填。Tesseral 不会自动帮你“弄出一个速度模型”它需要你给定每个网格点的速度值。而这个速度值来源有三个层次第一层次是钻井数据。这是最可靠的硬数据但只有井点附近有意义建层状模型时以井的分层、测井速度为主。第二层次是地震处理得到的速度谱或层速度场。覆盖面广但分辨率低尤其是深层速度谱能量团发散严重很容易把低速异常体“抹平”。第三层次是区域地质认识比如这个凹陷从浅到深大概是从 2500 米每秒逐渐增加到 4500 米每秒。这种宏观趋势建模只适合做区域尺度的正演。实际项目中我通常的做法是“浅层用处理速度、目的层用井约束插值、深层用区域趋势外推”每一层都标好数据来源。这样模型出问题的时候你能很快定位到是哪一层、哪一个来源造成的偏差。2.4 选二维还是三维建模这是个老生常谈但总有人犯糊涂的问题。如果目标层构造简单、横向变化平缓二维测线正演足矣。但如果存在断块、裂缝带或者横向强非均质性二维模型的波场只在一个平面内传播绕射和侧向反射根本表现不出来观测系统验证的结果会和实际三维采集差距很大。三维建模的另一个优势是可以切任意方向的测线做正演对比。比如你要检查一条沿构造倾向的测线一条沿走向的测线看看不同方位上的反射特征差异这在二维模型里做不到。但三维建模的麻烦也显而易见断层组合关系、复杂尖灭体、盐丘侧翼这些构造在三维空间里很难手工雕刻得干净利落。Tesseral 本身提供了结构化网格方式但建复杂构造时你需要配合外部建模工具或者通过插值算法做辅助。我的建议是构造简单先用二维摸规律确定关键参数后再升级做三维验证。不要一上来就开三维除非你有明确的目标层和成熟的构造图件。3. 手把手搭建地震地质模型关键参数和实操步骤3.1 网格步长怎么定才合理网格步长直接决定正演精度和计算效率。Tesseral 的有限差分算法对网格步长有两个硬性要求一是满足稳定性条件即时间步长和空间网格步长要满足 CFL 条件。实际中你不需要记公式软件会给出默认值但你要明白背后的逻辑网格越细、时间步长就越小模拟真实物理时间 3 秒波场传播的计算步数就越多耗时越长。二是满足频散抑制条件要求每个最小波长至少要有 5 到 10 个网格点覆盖。换句话说网格步长不能大于最高有效频率对应的波长的十分之一。若你用的是 30 赫兹主频的雷克子波地层速度 3000 米每秒那么波长是 100 米网格步长取 10 米就够用。如果你硬把网格步长放大到 25 米高频成分会发生严重数值频散剖面上会看到一团团“毛刺波”那还分析个锤子。实际操作中我会先确认子波参数再算波长然后定网格步长。如果网格步长因为计算量限制没法达到频散要求那就降低子波主频不要硬扛。3.2 从构造图到模型分层与插值有了网格框架接下来就是把地质分层填进去。Tesseral 建模思路分为两个流派原始界面法和网格赋值法。原始界面法更适合构造比较简单的情况。你把每层界面的深度、倾向、倾角输入进去或者在图形界面里直接用鼠标拉出层面的起伏。每一层之间用“从顶到底”的顺序赋值速度软件自动把速度均匀填充到整个网格里。网格赋值法更适合复杂构造。此时你从解释系统导出每个层的深度点文件经过插值网格化处理后再导入 Tesseral 中作为界面的深度。这里的插值必须是“符合地质规律的插值”——比如断层两侧要断开不能跨断层平滑。之前有个实习生直接把断层两侧的层位放在一起做克里金插值结果断层位置的层位被“抹成”了一个平滑的斜坡正演出来的反射波同相轴完全不对。所以建模时断层作为一个独立的几何元素必须优先建立然后再让层面以断层为边界进行切分。3.3 断层建模的常见误区Tesseral 里建断层有两种方式垂直断层和倾斜断层。垂直断层好理解直接在网格里把两侧区域断开用不同的速度填充。倾斜断层的处理相对麻烦需要把断层当成一个倾斜的界面来处理断层面两侧的层位要分别定义。常见的误区是直接把断层面用一层极低速度填充来模拟断层破碎带。这样的做法有一定道理能产生续至波和散射但速度差设置要合理。你若把断层速度设置为围岩的一半正演结果是会看到明显反射但实际地层中很多断层没有这么大的速度差这种反射是假的。断层面速度一般设置为围岩速度的 80% 到 95% 之间具体要靠实际测井和地质认识来约束。另一个常见问题是断层刺穿层位的上下盘关系。建模前必须弄清楚上盘和下盘的运动学关系不要让断裂面两侧的层位发生颠倒。我在做复杂断块模型时会先用二维剖面图检查每一层在断层两翼的对应关系确认无误后再灌入速度模型。3.4 参数表一张可以直接抄作业的建模参数清单这里给一张我在不同场景下常用的参数表供参考。注意这些参数是起点不是终点每个工区要微调。参数名称常规二维建模高精度单目标建模三维建模横向网格10-15 米5-8 米10-25 米纵向网格5-10 米2-4 米5-10 米子波类型雷克子波雷克或最小相位子波雷克子波子波主频25-35 Hz40-50 Hz25-30 Hz模型边界吸收边界完美匹配层完美匹配层目标层速度精度宏观趋势逐层精细宏观趋势为主最大记录时间3-4 秒2-3 秒4-6 秒采样间隔2 毫秒1 毫秒2 毫秒上面这套参数中子波类型和主频是最被低估的环节。Tesseral 提供多种子波雷克子波是最常用的因为它和实际震源子波形态接近主频可调。实际野外采集时震源子波往往不是零相位此时你如果用零相位雷克子波正演结果和实际资料进行波对比时会有系统性的相位差异让人误以为模型错了。所以有条件的话尽量用实际采集记录中提取的远场子波来驱动正演效果会好得多。4. 正演模拟中的核心设置子波、边界、吸收、自由表面4.1 子波主频的“骗局”很多人为了让模拟的合成记录更好看把子波主频调得比实际资料高很多。结果正演剖面上薄层分得清清楚楚、分辨率极高但一到实际资料对比完全不是一回事。正演模拟的分辨率应当和实际采集资料的有效频带一致而不是一味求高。我之前做过一个潜山内幕的模型实际采集资料的有效频率只有 20 到 35 赫兹。刚开始建模时用 50 赫兹雷克子波正演出来的内幕反射清晰得不得了项目组高兴坏了觉得这个采集系统没问题。结果拿实际资料一验证潜山内幕反射信号弱得几乎看不见。后来把子波主频调到 25 赫兹正演结果才和实际匹配这时候才发现内幕反射被上覆地层强反射遮挡原设计的炮检距根本不够。这就是典型的“子波骗局”。4.2 边界条件的选择逻辑Tesseral 的边界条件主要有吸收边界和完美匹配层。吸收边界实现简单、计算快但边界反射不能完全消除尤其在大角度入射时会有残留。完美匹配层效果更好但内存消耗大、计算时间更长。实际项目中判断边界条件是否合适的标准很简单看目标层离边界有多远。如果目标层离边界超过 500 米普通吸收边界完全够用如果模型宽度小、目标层靠近边界或者你要做绕射波、多次波分析那就必须用完美匹配层否则边界反射会以假多次波的形式出现在你的合成记录上干扰判断。4.3 自由表面和海底界面做多次波研究时务必打开Tesseral 默认上边界可能设置为吸收边界用来模拟没有自由表面的半空间。但如果你的目标是研究海上多次波那必须把自由表面打开让能量在海面和海底之间来回反射产生多次波。否则你正演出来的数据里根本没有多次波后续的去多次波流程验证也就无从谈起。同样陆上资料中的面波、折射波只有在自由表面打开时才能正演出来。有些刚入门的朋友模拟陆地模型时上边界用吸收边界结果看不到一点面波还以为是模型错了。其实没有自由表面就没有面波这是最基本的物理逻辑。5. 常见问题与排查技巧实录5.1 模型跑出来的剖面全是斜纹状噪声这种情况九成是因为网格步长太大不满足频散抑制条件。你看到的高频毛刺其实就是数值频散的产物不是真实地质反射。排查方法很简单将网格步长减半重新跑同一个模型如果斜纹噪声明显减少那就是网格步长问题。减半网格后仍能看到斜纹那就要检查速度模型中是否出现了过于剧烈的速度突变比如紧挨着的两个网格点速度从 2000 直接飙到 6000 米每秒这样的速度不连续会产生假绕射。5.2 记录上出现明显水平强轴但模型里没有这个界面这基本是边界反射。如果使用的是普通吸收边界边界附近的阻抗差会产生强反射尤其在模型边界刚好处于一个地层界面深度时反射会特别强。解决办法是加宽模型的边界区域让边界处的介质速度保持连续或者均匀或者直接改用完美匹配层。另一个笨办法在模型两侧加一圈“牺牲区”正演完成后从记录上切掉相应时间的道段只保留中间目标区。5.3 正演结果和实际地震剖面对比不上这是最让人头疼的问题。先看构造形态对不对再看反射同相轴的相对关系最后才看频率和相位。形态对、关系对、但频率对不上考虑子波主频问题相位对不上考虑子波相位和震源子波差异什么都对不上那要怀疑你速度模型的宏观趋势是否有偏差。此时最快的排查方法是用测井曲线制作合成地震记录标定实际资料的层位之后再到 Tesseral 里检查你模型中的界面深度和地震剖面上的反射时间是否一致。如果差百分之十以上就要重新审视线速度模型的分层深度。很多时候就是你建模型时井分层深度填成了斜深而不是垂直深度导致时间差异。5.4 多次波在模型里表现得过于干净多次波在正演模拟里往往振幅强、周期稳定非常好识别但实际资料的多次波要复杂得多因为野外激发子波经过地层吸收衰减后高频损失严重多次波的波形变得比较“软”。如果你的正演目的之一是要标定多次波特征建议不要用单一雷克子波而是用带一定衰减因子的子波或者在模型中加一点随机噪声背景这样模拟出的多次波才更接近实际。5.5 正演计算异常缓慢的排查思路第一步看是不是时间采样间隔太小。记录时间 4 秒采样间隔 1 毫秒就是 4000 个时间样点有限差分要在每个样点更新整个模型空间计算量巨大。如果你的目标只是构造形态采样间隔放宽到 2 毫秒甚至 4 毫秒计算时间能缩短一半以上。第二步看是不是三维模型网格过密。三维正演的计算复杂度随网格数呈线性增长但随频率提升呈三次方增长。对三维模型优先保横向网格牺牲垂向网格的精细程度因为垂向网格直接和时间步长绑定垂向网格减一半、时间步长差不多也能放宽一倍代价相对较低。6. 结合扩散模型热点的延展思考最近“扩散模型 地震数据”成了网络热词很多人问我是不是传统正演建模会被取代。我的看法是扩散模型在地震数据插值重建、缺失道补全、去噪这些数据驱动的任务上确实有潜力但它并不能取代 Tesseral 这类正演工具。扩散模型的本质是从大量数据中学习数据分布然后用噪声逐步“扩散”再“逆扩散”生成新样本。对于地震数据它可以学出工区内正常地震道集的统计特征从而把缺道补上。但问题在于学习结果是概率性的它并不知道物理规律。在地质条件复杂的区域模型生成的数据可能“看着像地震剖面”但波场的运动学关系是错的。而 Tesseral 正演模拟能从物理规律出发给定速度模型和观测系统算出严格按照波动方程传播的波场。这个概念完全不同于数据驱动的插值。用正演结果去训练扩散模型一定程度上能增强数据集的多样性但反过来扩散模型的生成结果永远替代不了正演模拟。我个人的实践经验是把两者结合才是未来方向用 Tesseral 生成大量带标签的合成数据作为扩散模型训练集让扩散模型学会在繁杂噪声中提取有效反射模式然后再把训练好的模型用在实际资料补全上。这条路子上正演和 AI 不是非此即彼的关系而是互补关系。7. 写在最后一些经验和建议Tesseral 建地震模型这件事说白了就是一场“把地质认识翻译成数值网格”的修行。模型建得好不好不取决于你会不会点鼠标而取决于你对工区地质、对波动理论、对采集处理流程的理解深度。给你几个实用建议第一建模时每一步都要留痕。每层的速度来源是什么网格步长为什么选这个数子波参数是谁定的都要记录下来。不然三个月后回头查问题根本想不起来当时的参数怎么来的。第二先跑通再优化。不要一开始就追求网格极细、边界极好、子波极准。先快速跑出一个粗糙结果看整体波场特征是否合理再逐步加大精度。一次跑通再迭代节省大量排错时间。第三正演结果一定要记得和实际资料做对比。正演做得再漂亮如果和实际观测对不上那就是自嗨。从一个小小的模型偏差开始反复调参、反复验证这个过程虽然枯燥但会让你对地震数据形成很强的直觉。对于刚入行的人来说我强烈建议你把 Tesseral 正演当成一门必修课甚至先于专业处理软件去掌握。它帮你建立的波场传播直觉会伴随你整个物探生涯。如果你自己建过一个从建模到正演再到对比实际资料的完整流程你会发现所谓的“采集观测系统评价”“处理流程验证”“地质异常体识别”本质上都是这一套思路在不同场景下的应用。希望这篇内容能帮你少走一些弯路早点把模型建到合理可用。