In [1]:
using Seismic, PyPlot # required deps
In [2]:
# First let's view an inline out of the "real" seismic data:
seismic, seismic_h = SeisRead("dat/image"); # load data
SeisPlot(seismic[:,:,1], cmap = "seismic") # plot data
Out[2]:
In [3]:
# Then let's assume we've picked a velocity model
# and converted it to interval velocities.
# We'll assume there are interpretive errors in
# the model.
# An inline from our picked vel model looks like this:
vel_initial, vel_h = SeisRead("dat/vel_incorrect"); # read data
SeisPlot(vel_initial[:,:,1], cmap = "magma") # plot data
Out[3]:
In [4]:
# Obviously, this model is incorrect, or there would be three
# seismic events in the section. Let's forward model this
# incorrect vel model and view the output modeled seismic:
include("mod/modeler.jl"); # model seismic from our bad vels
seis_incorrect, seismic_h = SeisRead("dat/image_incorrect"); # load data
SeisPlot(seis_incorrect[:,:,1], cmap = "seismic") # plot data
In [5]:
# Therefore, if we tried to migrate with our bad velocity
# model, we'd get a kinematically inaccurate result. Hence
# we need to improve our velocity model somehow. So let's
# use full waveform inversion.
# Let's input our poorly picked velocity model and the
# seismic data into an FWI algorithm and take a look
# at the updated velocity model to see if there was any
# improvement:
include("fwi/fwi.jl") # prep deps
fwi("dat/vel_incorrect", "dat/image",
"dat/wav", "dat/updated_vel", .03, 5, 0); # FWI algorithm
vel_updated, vel_h = SeisRead("dat/updated_vel") # load data
SeisPlot(vel_updated[:,:,1], cmap = "magma") # plot data
In [6]:
# We can see here that the vel model has been improved considerably
# by full waveform inversion. For comparison, let's view
# the insitu velocities.
# (This is the model the author used to create the "real" seismic)
vel_true, vel_h = SeisRead("dat/vel_correct"); # read data
SeisPlot(vel_true[:,:,1], cmap = "magma") # plot data
Out[6]:
In [7]:
# As you can see, the FWI updated vel model is very close
# to the true velocities. In this case it's actually within 3%.
In [ ]: