# Seismic Imaging Blind Challenge¶

## Resources and Code Setup¶

The file cp9.py is provided to you at the computing resources website. This file implements a significant portion of the code you will need for today.

You will also need to download the seismic data for the challenge problem. cp9.py has the code required to load it. Be sure to put it in the same directory as your cp9.py script.

In cp9.py there is a section with comments describing how to set up an initial velocity model. Tunable parameters are marked with #### TUNABLE PARAMETER #### comments. Helpful plotting code is marked with #### PLOT ####.

## Questions¶

In this problem, you will attempt to recover an unknown medium from the provided seismic data.

Use the theoretical and computational tools (PySIT) you have developed and used over the last two weeks to attempt to answer the following questions about the unknown domain.

Be sure to look at the details section for important information.

Question 1: What is the background velocity of the medium? How did you come to this conclusion? What indications do you have that you are correct?

Question 2: How many reflectors are there and what is their location? How did you come to this conclusion?

Question 3: What is the amplitude of the reflectors? How did you come to this conclusion?

## Details¶

Properties of the physical and computational domain:

• Domain is defined on $[0.0, 2.1) \times [0.0, 1.5)$
• Computational mesh is $210 \times 150$
• $\Delta x = \Delta z = 0.01$ (accessible in the code via the variables mesh.x.delta and mesh.z.delta)

Properties of the data:

• There is one shot of data with source at $(x,z) = (1.05, 0.05)$
• There are 210 recievers, one at each pixel at depth $z=0.05$

• Data is recorded from $T=0$ until T=4\$

• There are 6824 data points per trace

• $\Delta t \approx 0.00073277$ (available exactly in the variable shot.dt)

• The PySIT solver will automatically interpolate this data as needed

• The reciever data array shot.receivers.data has shape (nt, nr)

Known properties of the medium:

• The medium has a constant background velocity between $0.65$ and $1.1$
• The medium is horizontally layered

Helpful PySIT routines:

• The reciever data can be plotted with pysit.vis.display_seismogram(shot)

• A single trace can be plotted with plt.plot(shot.receivers.data[:,x_idx])

• The migration operator can be applied to the residual with the code (where C0 is the model about which you wish to do migration m0 = solver.ModelParameters(mesh,{'C': C0}) g = objective.compute_gradient(shots, m0)
You can plot the resulting migrated image with pysit.vis.plot(g.data, mesh) Note that g is not a numpy array, but g.data is. Additionally, you may want to pass an optional color limit argument clim=(lower, upper) to pysit.vis.plot to help see small details. Good values for upper and lower can be found by glancing at the colorbar obtained with plt.colorbar().

• After running an inversion, the resulting velocity is found in result.C, which can be visualized by plotting with pysit.vis.plot(result.C, mesh)

• To view a single depth slice of the result, you can reshape the resulting velocity vector and plot it C_reshape = reshape_pysit_vector_to_grid(result.C, mesh) plt.plot(C_reshape[105, :]) # Reshaped vector is indexed (x_idx,z_idx)

• cp9.py has an example for plotting the value of the objective function