PSDM模型

PSDM模型
下面结合PSDMPre-Stack Depth Migration叠前深度偏移模型从**走时计算Travel Time和迁移计算Migration**两个角度解释这个程序的计算目的、物理意义以及大概流程。由于你没有贴具体代码我先按典型 PSDM 程序类似 FWIY/地震成像程序中的 travel time migration 模块讲解。PSDM 的核心思想是已知地下速度模型通过计算地震波从震源到地下成像点、再返回检波器的传播时间把地表采集到的地震数据重新放回地下真实位置。PSDM 一般包含三个关键部分速度模型Velocity Model走时计算Travel Time Calculation偏移成像Migration Imaging其中走时是迁移的基础走时误差会直接导致地下结构位置错误。(J-STAGE)1. 为什么要计算走时地震采集过程地面Shot S Receiver R * * | | | | ----------------------------------------- 地表 \ / \ / \ / \ / \ / \ / \ / \/ Reflector *震源发射地震波[S \rightarrow 地下反射点 \rightarrow R]仪器记录的是[t_{obs}]也就是波从震源走到地下再返回接收点花费的时间。但是我们真正想知道地下哪里发生反射所以需要反推时间域数据 | | ↓ 空间位置 (x,y,z)这个反推过程就是迁移。2. 走时计算的目的假设地下速度模型Velocity Model z ↓ 0m ---------------- v1500m/s 500m ---------------- v2500m/s 1000m--------------- v4000m/s程序首先计算震源到地下任意点的时间[\tau_s(x,y,z)]例如Source * /| / | / | / | ↓ ↓ P(x,y,z)计算[\tau_s\int \frac{ds}{v(s)}]即沿传播路径[时间\frac{距离}{速度}]同理计算接收点到地下点[\tau_r(x,y,z)]最终得到双程走时[T(x,y,z)\tau_s\tau_r]也就是Source * \ \ \ X 成像点 / / / * Receiver T source到X时间 X到receiver时间程序里面通常会生成Travel Time Table类似shot001_tt.bin x方向 0 1 2 3 z0 0 1 2 3 z1 2 3 4 5 z2 5 6 7 8 每个位置保存 τ(x,y,z)后面迁移直接查表。3. PSDM迁移计算目的走时计算完成以后程序知道某个地下点P 对应地震数据中的哪个时间例如地下点P *计算[T_p2.5s]那么去地震记录Trace time 0s | | 1s | | 2.5s -------取这里的数据 | | 4s取出这个振幅[A(t2.5s)]累加到地下点[Image(x,y,z)]数学形式Kirchhoff PSDM[I(x,y,z)\sum_{s,r}W(s,r)D(s,r,T)]含义(I(x,y,z))地下成像结果(D(s,r,T))炮检记录里面对应时间的数据(W)振幅补偿权重简单理解就是大量地表记录 ↓ 按照传播时间 ↓ 重新投影回地下 ↓ 地下图片4. 一个二维PSD模型计算流程图程序大概输入 地震炮集数据 | | ↓ Velocity Model | | ↓ ---------------- | Travel Time | | Calculation | ---------------- | | ↓ Travel Time Table | | ↓ ---------------- | Migration | | Imaging | ---------------- | | ↓ Depth Image5. PSDM里面走时和迁移为什么重要1确定地下结构位置没有迁移原始地震记录 时间 | | | \\\\\ \\\\ \\\\反射点被放错位置。迁移真实地下结构 /\ / \2处理复杂地质结构简单水平层PSTM 可以。但是断层 / -----/------ / ---/-------- 盐丘 /\ / \ ___/ \___速度变化剧烈需要 PSDM。PSDM 使用深度速度模型因此可以处理横向速度变化。(J-STAGE)6. 如果对应到 C/CUDA 程序里面通常结构类似Step 1读取模型velocity[ix][iy][iz]Step 2计算走时CPU:for(z){for(y){for(x){travel_time[x][y][z]solve_eikonal(velocity);}}}GPU__global__voidcomputeTravelTime(){intixblockIdx.x*blockDim.xthreadIdx.x;tt[ix]...}Step 3迁移for(image_point){timett_sourcett_receiver;amplitudeseismic_data[time];image[x][y][z]amplitude;}GPU里面每个线程负责一个地下成像点 thread 0 --- P0 thread 1 --- P1 thread 2 --- P27. 和 FWI 的关系你之前看的 FWIY 代码其实也是类似思想。区别PSDMFWI目的成像反演速度输入地震数据速度模型地震数据输出地下图片新的速度模型核心一次传播成像正演梯度优化关系初始速度模型 | ↓ PSDM | ↓ 检查结构 | ↓ FWI更新速度 | ↓ 更准确PSDM所以这个程序里面走时计算 找到地下点对应的时间位置迁移计算 把时间域地震能量搬回真实地下位置PSDM 的最终目标利用速度模型和波传播规律把地表采集的地震波数据转换成地下高分辨率结构图像为油气勘探、断层解释、储层定位提供依据。(J-STAGE)如果结合你之前看的FWIY/CUDA kernel()代码里面的travel time / migration kernel基本可以对应到上面的走时表生成 Kirchhoff积分成像两部分。