Sop = Spread(dims=(nx, nz), dimsd=(ns*nr, nt), table=itrav, dtable=travd, engine='numba') dottest(Sop, ns*nr*nt, nx*nz) wav, wavt, wavc = ricker(t[:41], f0=20) Cop = Convolve1D(ns*nr*nt, h=wav, offset=wavc, dims=(ns*nr, nt), dir=1) LSMop = Cop*Sop LSMop = LinearOperator(LSMop, explicit=False) d = LSMop * refl.ravel() d = d.reshape(ns, nr, nt) madj = LSMop.H * d.ravel() madj = madj.reshape(nx, nz) minv = LSMop.div(d.ravel(), niter=100) minv = minv.reshape(nx, nz) #%% demigration dadj = LSMop * madj.ravel() dadj = dadj.reshape(ns, nr, nt) dinv = LSMop * minv.ravel() dinv = dinv.reshape(ns, nr, nt) #%% Perform LS on reflectivity model lsm = LSM(z, x, t, sources, recs, vel, wav, wavc, mode='eikonal') d = lsm.Demop * refl.ravel() d = d.reshape(ns, nr, nt)
Sop = Spread(dims=(nx, nz), dimsd=(ns*nr, nt), table=itrav, dtable=travd, engine='numba') dottest(Sop, ns*nr*nt, nx*nz) wav, wavt, wavc = ricker(t[:41], f0=20) Cop = Convolve1D(ns*nr*nt, h=wav, offset=wavc, dims=(ns*nr, nt), dir=1) LSMop = Cop*Sop LSMop = LinearOperator(LSMop, explicit=False) d = LSMop * refl.ravel() d = d.reshape(ns, nr, nt) madj = LSMop.H * d.ravel() madj = madj.reshape(nx, nz) minv = LSMop.div(d.ravel(), niter=100) minv = minv.reshape(nx, nz) #%% tom itrav_tom = (np.floor(trav_tom/dt)).astype(np.int32) travd_tom = (trav_tom/dt - itrav_tom) itrav_tom = itrav_tom.reshape(nx, nz_tom, ns*nr) travd_tom = travd_tom.reshape(nx, nz_tom, ns*nr) Sop_tom = Spread(dims=(nx, nz_tom), dimsd=(ns*nr, nt), table=itrav_tom, dtable=travd_tom, engine='numba') dottest(Sop_tom, ns*nr*nt, nx*nz_tom) LSMop_tom = Cop*Sop_tom LSMop_tom = LinearOperator(LSMop_tom, explicit=False) d_tom = LSMop_tom * refl_tom.ravel()
#%% Sop = Spread(dims=(nx, nz), dimsd=(ns*nr, nt), table=itrav, dtable=travd, engine='numba') dottest(Sop, ns*nr*nt, nx*nz) Cop = Convolve1D(ns*nr*nt, h=wav, offset=wavc, dims=(ns*nr, nt), dir=1) LSMop = Cop*Sop LSMop = LinearOperator(LSMop, explicit=False) d = LSMop * refl.ravel() d = d.reshape(ns, nr, nt) madj = LSMop.H * d.ravel() madj = madj.reshape(nx, nz) minv = LSMop.div(d.ravel(), niter=100) minv = minv.reshape(nx, nz) #%% demigration dadj = LSMop * madj.ravel() dadj = dadj.reshape(ns, nr, nt) dinv = LSMop * minv.ravel() dinv = dinv.reshape(ns, nr, nt) #%% Perform LS on reflectivity model lsm = LSM(z, x, t, sources, recs, vel, wav, wavc, mode='eikonal') d = lsm.Demop * refl.ravel() d = d.reshape(ns, nr, nt) # Adjoint