什么是全波反演
介绍全波反演的基本数学模型和常用方法 · 9 min read
- 波动方程:
∇2p−c21∂t2∂2p=s
其中
- p=p(x,y,z,t):压力场 (pressure field)。代表地震波在某点某时刻的压力值。接收器记录到的就是地表上特定位置的压力场随时间的变化 (也即我们所说的波长)
- c=c(x,y,z):速度模型 (velocity map)。它只与空间位置有关,表示地震波在地下不同位置的传播速度。这是FWI最终要求解的目标。
- s=s(x,y,z,t): 震源项 (source term)。描述了人工震源的性质,包括其位置、激发时间和波形。在主动源地震勘探中,这是一个已知量。
实际的FWI即我们在给定的位置设置了一系列震源和接收器(通常都在表面,若能在地表之下,问题的求解会简单很多),然后通过接收器的波场数据p来反演速度场c,也即我们的反问题目标为
u∣∂Ω→c.
- 实际正演过程即给定速度场c和源项s,通过数学离散格式将上述方程(1)离散化求解得到波长p
- 边界条件:在实际计算中,为了地震波在地下传播的无限性和计算区域的有限性这一对矛盾,必须人为截断边界,这会引入人为边界反射问题,目标都是消除或削弱反射。例如,对openfwi数据集,速度场大小为(70,70),但上下左右均会加上边界层,最后大小为 (310, 310)。在以下讨论中,我们均考虑二维波动方程
∇2u−c21∂t2∂2uu(x,0)=0=0
- abc边界吸收层(openfwi数据集使用该边界条件): 对于上下左右边界层,我们分别使用如下的方程
∂x∂t∂2u−c1∂t2∂2u+2c∂y2∂2u=0∂x∂t∂2u−c1∂t2∂2u−2c∂y2∂2u=0∂y∂t∂2u−c1∂t2∂2u+2c∂y2∂2u=0∂y∂t∂2u−c1∂t2∂2u−2c∂y2∂2u=0
- pml边界(deepwave中的scaler函数所用的边界层):我们首先引入中间变量qx,qy,ψx,ψy,我们将波动方程(2)改写为如下方程组
∂t∂u=c21(ψx+ψy)∂t∂qx+dx(x)qx=∂x∂∂t∂u∂t∂ψx+dx(x)ψx=∂x∂∂t∂qx
此处qy,ψy与qx,ψx同理。dx(x)为衰减系数,在内部计算区域(对openfwi来说就是上面的(70,70))为0,在pml边界层,dx(x)平滑增加,例如使用多项式函数等
- 源项:通常采用点源的形式
s(x,t)=f(t)⋅δ(x−xs).
f(t)为源时间函数,在fwi中我们常使用ricker子波(Ricker Wavelet):
f(t)=(1−2π2fp(t−t0)2)⋅exp(−π2fp(t−t0)2)
其中fp为峰值频率。
可直接使用deepwave库,具体文档见 deepwave,设定好相应的参数,会自动使用pml边界条件,求解速度极快(注意,使用scalar的时候官方文档给的深度位置坐标是错误的,源项和接收器项的[:,:,0]对应的才是深度。
在openfwi中,采用如下的方式进行离散求解:考虑波动方程
∂t2∂2p=v2∇2p+s
加入衰减项有
∂t2∂2p+κ∂t∂p=v2∇2p+s
原始的速度场大小为(nx, nz),速度场的上下左右均加入nbc层,值均为用边界值填充,最后得到的shape为(nx+2nbc,nz+2nbc)
- 时间离散:
∂t2∂2p=Δt2pn+1−2pn+pn−1
- 空间离散:
∇2p≈34Δx2pi+1,j+pi−1,j+pi,j+1+pi,j−1−4pi,j−121Δx2pi+2,j+pi−2,j+pi,j+2+pi,j−2−4pi,j
- 衰减项:使用一阶近似
∂t∂p=Δtpn−pn−1
边界层基础衰减系数为κc=2a3vminlog(107),a=(nbc−1)∗dx。一维衰减系数为κc(aiΔx)2,i=0,1,⋯,nbc−1,即边界内部为0,边界外部衰减最大。相应的可以计算上下左右边界的衰减项,例如,左边的衰减项为κi,j=κc(a(nbc−1−j)Δx)2 4. 在波源的位置会注入波场fij 5. 最后得到如下格式:
pn+1=(2−κ)pn−(1−κ)pn−1+α∇2pn+βΔt2fn
其中α=(vΔt/Δx)2,β=v2
- 正演模拟:给定当前速度场c和源s,通过上面的正演过程得到波场u(x,t)
- 计算残差:在接收点位置xr计算残差:
δd(xr,t)=u(xr,t)−dobs(xr,t)
- 把上面的残差在时间反转后作为源项注入接收器的位置
sadj(x,t)=r∑δd(xr,T−t)δ(x−xr)
初始时伴随波场在终端时间t=T设置为λ(x,T)=0,然后从t=T开始,反向积分到t=0,此处可以设置τ=T−t。进行上面的正演过程,得到伴随波场λ(x,t) 4. 计算梯度:∂c(x)∂J=−c3(x)2∫0T∂t2∂2u(x,t)λ(x,t)dt
- 物理约束方程为
F(m,p)=c2(x)1∂t2∂2p−∇2p−s(x,t)=0
这里m=c2(x)1表示要优化的参数,目标为最小化如下loss funcition
J(m)=21∫0T∫Ω[u(x,t)−dobs(x,t)]2δ(x−xr)dxdt
其中xr为接收器的位置。我们想要求解J(m)关于m的梯度 2. 引入拉格朗日乘子λ(x,t)(即未来的伴随场),构造如下的拉格朗日函数
L(m,p,λ)=21∫0T∫Ω(p−dobs)2δ(x−xr)dxdt−∫0T∫Ωλ(x,t)[c21∂t2∂2p−∇2p−s]dxdt
对L分别对λ,p,m求解一阶变分,并令其为0。我们可以得到如下的方程
δλδL=0⟹F(m,u)=0
也即上面的物理约束方程。
δpδL=δpδJ−⟨λ,δpδF⟩=0δpδJ=(p−dobs)δ(x−xr)⟨λ,δpδF⟩=∫0T∫Ωλ(x,t)[c21∂t2∂2−∇2]δpdxdt
为了将算子从 δp 转移到 λ 上,我们进行两次分部积分(这里假设波场初始时刻是静止的,伴随场终止时刻是静止的)
∫0Tλc21∂t2∂2(δp)dt=...=∫0Tc21∂t2∂2λδpdt+[边界项]0T
∫Ωλ∇2(δp)dx=...=∫Ω(∇2λ)δpdx+[表面积分]
由此我们可以得到
δpδL=∫0T∫Ω[(p−dobs)δ(x−xr)−(c21∂t2∂2λ−∇2λ)]δpdxdt=0
由于δp的任意性,方括号中的项必须恒为0,由此我们可以得到伴随方程
c2(x)1∂t2∂2λ−∇2λ=(u−dobs)δ(x−xr)
最后我们可以得到梯度表达式:
δmδJ=δmδL=⟨λ,δmδF⟩
代入δmδF,可以得到
δm(x)δJ=∫0Tλ(x,t)∂t2∂2u(x,t)dt
求解关于c的梯度,只需使用链式法则:
δc(x)δJ=δmδJδcδm=(∫0Tλ∂t2∂2udt)⋅(−c32)
可参考 FWI传统方法