Beruflich Dokumente
Kultur Dokumente
MATLAB labs associated with the "Seismic Interferomtery" book are below. Some labs require a Fortran compiler and the Seimsic Unix package (http://www.cwp.mines.edu/cwpcodes/) for viewing results. The 5.9 Gbyte tar file is at COMP.Inter.LAB1.tar.gz and can be extracted in a LINUX system with the command "tar zxvf COMP.Inter.LAB1.tar.gz". Contributions of important MATLAB interferometry labs will be entertained; if they are accepted then you will be acknowledged in the lab. Labs should follow the format in the labs below.
Point scatterer imaging by poststack migration Prestack diffraction stack modeling and migration Stationary phase exercise Spectral deconvolution exercise
Finite difference modeling lab Redatuming by integral equation interferometry Redatuming by finite-difference interferometry VSP->SWP: Interferometric salt flank migration
VSP -> SSP: Wave equation migration and VSP interferometry VSP -> SSP: Diffraction-stack migration and VSP interferometry VSP -> SSP: Diffraction-stack migration and VSP specular interferometry (needs Fortran compiler and SU)
SSP -> SSP: interferometric interpolation Extracting wavelet from Sigsbee SSP Data Extracting wavelet from Simple SSP data SSP -> SSP: SSP multiples into primaries Part II SSP -> SSP: surface wave prediction and subtraction
Interferometric interpolation of OBS data with matching filter (needs Fortran compiler) Interferometric extrapolation of OBS data
Commentary on Book
Figure 1. Computed and theoretical trace g(A,t|B,0) for the two-layer model. This result computed by MATLAB program in exercises of Chapter 1. There is a phase shift problem in the predicted wavelet because the theory is for 3D yet the integral implementation is over a 2D line. Objective: Learn to model synthetic seismograms and interferometrically transform SSP 1storder multiples into primaries. Lesson learned 1. Interferometric redatuming works under far field approximation but has errors. 2. Errors increase as reflector approaches free surface. Procedure:
1. Make a directory, and load into it the files twod.m, corrsum.m, forward.m, xcorr.m, and
ricker.m. 2. Type "twod" in Matlab to run the program to forward model SSP (surface seismic profile) shot gathers in a 2-layer model. Only the primaries, 1st- and 2nd-order multiples are generated. These data are also correlated and summed to produce redatumed data on the surface. In this case 1st-order multiples turn into primaries and 2nd-order multiples become 1st-order multiples. 3. Why don't you see 2nd-order multiples in the redatumed data? 4. The correlation-summation is a far field approximation to the exact equations discussed in Chapter 2. Decrease the thickness d of the layer and show that the errors become worse. 5. The data aliasing condition is such that the geophone spacing should be less than half the wavelength. For a 20 Hz wavelet and a layer velocity of 1 km/s, what is the wavelength? Adjust the geophone sampling interval dx so that it violates the anti-aliasing criterion. Do the errors increase or decrease? 6. Decrease the aperture of the data. What happens to the error? 7. After reading Chapter 2, replace one of the monopoles by a dipole. Does the noise decrease? 8. Incorporate the direct wave into the forward data. How does this affect the redatumed result? 9. If A was at one end of the model and B at the other end of the model, why would you expect the redatuming not to work? (Hint: correlating a primary with a 1st-order multiple transforms into a primary. Is there such a multiple available in the data for this wide aperture primary?) 10. Load in twod1.m, half2.m, and corrsum2.m. Now type in twod1.m. This version corrects for the wavelet distortion due to a line source (thanks to Jorge Schleicher).
OBJECTIVE:
Generate Zero-Offset (ZO) synthetic data with a MATLAB script that computes diffraction stack (DS) modeling. Reinforce idea that DS only models primaries, accounts for diffractions, and follows theoretical formula.
PROCEDURE:
1. Load into your working directory all MATLAB scripts. The important MATLAB scripts are for diffraction stack modeling (zomodel.m), Ricker wavelet generator (ricker.m), and ZO data modeler (model1.m). Name each file by their names given above. 2. In MATLAB, type "zomodel" to generate ZO synthetic data for a syncline model. Data are in 1-way travel time. To examine the reflectivity model simply type "imagesc(MIG')". Examine the model1.m code and convince yourself that it honors the diffraction stack algorithm.
3. Spurious diffraction energy will appear on data if the distance between adjacent scatterers is too coarse. Try to figure out rough rule of thumb for grid size and wavelength so a string of scatterers can faithfully represent the ZO reflections without unwanted spurious diffractions. 4. Different Models: Go into zomodel.m and design your favorite model. Then run the programs again. 5. Insert the obliquity factor in the forward modeling code (i.e., cos(theta) where theta is the angle between source-image ray and neormal to surface where geophones are located). What is the effect of the obliquity factor?
Figure 1. (Top) Poststack data and (bottom) associated migration image. There are 6 point scatterers embedded in the homogeneous velocity model and both modeling and migration are diffraction stack.
Objective: Execute program post.m to reproduce above figure. The data are produced by ray tracing and the migration is by diffraction-stack migration. Procedure:
1. Download the following programs: post.m, ricker.m, migrate1.m, model1.m, plotit.m,
xcorr1.m. 2. Type post.m to generate the above picture for a single scatterer model. The animation displays the partial migration image as the code sequentially migrates each trace, one after another.
generator ricker.m. Also download the traveltime modeling program Mray.m and an example traveltime modeling program raymodel3.m, plotting routine plot1.m, and the prestack migration subroutine migvsp.m. Also download the model velvector vector in ascii format. The velocity model "velvector" is a vector of the velocity model in units of m/s. To display it type
load velvector; %or load velvector.mat vel=reshape(velvector,501,201);imagesc(vel');
prestack migration. 3. Type migrate1 in MATLAB and generate final image. Which parts of image are well resolved and which parts are poorly resolved? Why?
4. Current image is for every fifth shot gather. Test image results using coarser shot sampling. Comment on why image changes. Repeat test for finer sampling. 5. Why are the imaged reflectors deeper than they are in the actual model? Hint, look at Ricker wavelet and how it is shifted from time zero. 6. Implement dip limitation on code. Does it eliminate artifacts. Apply AGC to final migration image. Does it help bring up amplitudes. Would AGC applied to data be roughly equivalent? 7. Apply obliquity factor to code. Comment on accuracy of resulting image compared to previous images.
2. Type p1.m to generate the above picture. Run the MATLAB code and increase the frequency parameter w. Determine whether there is still a non-zero area around the stationary point.
2. Change values of damping parameter eps1. Explain what happens to deconvolved wavelet if eps1 is to small. Explain what happens if eps is too large. Note, as eps becomes really large the inverse filter f is a constant for a zero-phase x and is an all pass filter. Thus, larger values of eps lead to deconvolved results with fatter main lobes and
smaller side lobes. As eps becomes smaller the main lobe thins and the side lobes become more pronounced. 3. Add noise to wavelet by the command x1=3*x./max(x)+rand(1,nt)-.5; plot(x1); and repeat exercise. What is the effect of random noise?
4. Download the shot gather CSG and type "load CSG". To display the shot gather type
"CSG=CSG/max(CSG(:)); clim=[-.03 .03];imagesc(CSG',clim);". Extract one of the traces and autocorrelate it, then truncate the autocorrelation after the 2nd zero crossing. This truncated wavelet will now be your estimated input wavelet. Find the inverse filter f to this correlation wavelet and use it to deconvolve the autocorrelation trace. Compare the deconvolved autocorrelation trace to original autocorrelation trace. 5. A more robust estimate of the decon filter might be obtained by averaging truncated autocorrelation signals for a number of different traces. Use averaging to construct your new inverse filter and deconvolve the autocorrelated traces. Compare the new results to the results from the previous question. 6. A trick that is almost always used after any deconvolution process is to bandpass filter the deconvolved results, where the passband is over the frequency range of the estimated signal.
1. From the snapshots estimate the wavelengths of the waves in the top and bottom layers (Use the zoom facility in MATLAB). Compare these wavelengths to the theoretical estimates from lambda=c/f.. 2. Change ABCs so they are turned on for all sides except for the top boundary..make the top a free surface. Repeat simulations. Describe the changes in snapshots compared to previous simulation. Fix the leftside ABC so it absorbs by changing a sign in the ABC equation for the left side boundary (Clayton, R. and Enquist, B., 1977, Absorbing Boundary Conditions for Acoustic and Elastic Wave Equations, Bull. Seis. Soc. Am., 67:6, 1529--1540 ) .
3. Identify the direct, refraction, and reflection waves in the snapshots and the seismograms.
Estimate their apparent velocities. Explain why the reflection waves moveout with the slowest apparent velocities. 4. Raise the frequency of the source by 50% and repeat the simulations. Comment on loss of accuracy and give rationale. 5. Choose a dt value that violates stability. Rerun simulations. What happens? 6. The head wave arrival is extremely weak, as predicted by theory. However, a diving wave that gets trapped in a thin interface just below the refracting interface can boost up the amplitude. Adjust the velocity model so there is a thin layer (10 points thick) just below the original interface. make sure the velocity is the average between layer 1 and 2. Now rerun the fd.m code. Is there a difference in head wave amplitudes? Change models until you get a satisfactory amplitude.
3. Note, there is no phase shift as in the 2D MATLAB exercise in Chapter 1 because of the 3D (not 2D) integration along the sides of the box to produce the virtual trace in Figure 1.
chap3b.m, mkdamp.m, plot1.m, plot2.m, plot4.m, plot5.m, plot6.m, plot7.m, plot9.m, plot33.m, and store1.m. 2. Type chap3b.m to generate the above picture for a single scatterer model.
Procedure:
1. Download the following programs: flankmig.m, faxis.m, eikon.m. 2. Download the following data: d650.mat, t650.mat, d660.mat, t660.mat, d670.mat,
t670.mat, d680.mat, t680.mat, d690.mat, t690.mat, d700.mat, t700.mat, d710.mat, t710.mat, d720.mat, t720.mat, d730.mat, t730.mat, d740.mat, t740.mat,
3. Also download s.mat (local sedimental velocity model).
4. Where are the artifacts in the migration image coming from? How are they related to the receiver aperture and the geophone density? 5. Explain how the artifacts in the redatumed data can be decreased by separating up and downgoing arrivals and then performing the correlation and summation (Wapenaar, K, and J. Fokkema, 2006, Greens function representations for seismic interferometry, Geophysics, 71, SI33-SI46) on only the outgoing arrivals at the well. 6. Research Problem: Implement a least squares redatuming method for calculating virtual SWP data from VSP data (Schuster and Zhou, 2006, A theoretical overview of modelbased and correlation-based redatuming methods, Geophysics, SI103; Wapenaar, K.; van der Neut, J.; Ruigrok, E., 2008, Passive seismic interferometry by multidimensional deconvolution, Geophysics, A51-A56).
Procedure:
1. Make a directory, and load into it the file: mmig.m, 2. Download data: s.mat, d191.mat and mt1.mat into the same directory.
3. Type "mmig;" in Matlab to run the program for migration of one geophone gather.
4. Now, download other 11 geophone gathers: d193.mat, d195.mat, d197.mat, d199.mat,
d201.mat, d203.mat, d205.mat, d207.mat, d209.mat, d211.mat, d213.mat, and traveltimes: mt2.mat, mt3.mat, mt4.mat, mt5.mat, mt6.mat, mt7.mat, mt8.mat, mt9.mat, mt10.mat, mt11.mat, mt12.mat, and density: den.mat, into the same directory. 5. Change the corresponding file names in "mmig.m", and run the program for migration of each geophone gather. 6. Stack all the migration images. Questions to think about: 1. What are the advantages of migrating VSP multiples? Why it is successful? 2. What are the advantages of interferometric migration? 3. What causes the artifacts in the image? How can the artifacts be suppressed? 4. How can one determine the optimal geophones placement in the well?
well, and it has wider subsurface illumination than the migration of VSP primary reflections. The main disadvantage includes a strong acquisition footprint in the generation of virtual SSP traces, i.e., the virtual SSP Green's functions are incomplete due to the limited aperture of VSP receivers in the well. The implementation of VSP interferometric migration consists of the following steps. 1. Separate the VSP data into upgoing and downgoing waves (The data provided in this lab are already separated. We do not need this part in this lab.). 2. Obtain the direct waves and downgoing free-surface multiples by a proper muting/filtering process. 3. Crosscorrelate the direct waves with multiples, and sum the correlated records over stations in the well to generate the crosscorrelated virtual SSP data. 4. Migrate the virtual SSP data. Procedure:
1. Make a directory, and load in the file: The main program: main.m, diffraction migration
synthetic VSP data set data.zip, and use command 'unzip data.zip' to extract the data into the same directory. 3. Run program main.m in Matlab to redatum the VSP data to virtual SSP data and migrate the virtual SSP data (It costs about half an hour). 4. Try to subsample the shot gathers and show the effects of sparsity on the migration image. 5. 16 VSP common receiver gathers are used in this lab to generate the virtual SSP data set. Try to use only one VSP common receiver gather and repeat the test. Use stationary phase theorem to explain why we can not get a decent virtual SSP data but can get a fairly good migration image in this case. Questions: 1. What are the advantages and disadvantages of migrating VSP multiples compared to migrating VSP primaries? 2. In practice, we can crosscorrelate the multiples with the whole traces instead of the direct waves to generate the crosscorrelogram. Why does this strategy work? Modify the code to generate crosscorrelogram by whole traces. Compare the migration images obtained by different strategies. Which one is better? Show a ray diagram that redatums VSP to SWP events to show why the latter strategy is more powerful. 3. Research Topic: Use least squares migration (Nemeth et al., 1999, Least-squares migration of incomplete reflection data, Geophysics, 208-221.) to improve the migration result.
4. Research Topic: Use LSD or least squares redatuming (Schuster and Zhou, 2006, A theoretical overview of model-based and correlation-based redatuming methods, Geophysics, SI103) to improve the redatumed SSP data. Now migrate this redatumed data and compare the resulting image to the least squares migration image. Comment about salient differences between the migration of LSD SSP data and least squares migration of the virtual SSP data.
2. Type fermat1.m to generate the above picture for a two layer model with a horizontal interface. The animation displays the common shot gather traveltimes for different shot positions on the surface.
wigb.m, agc.m, data.zip into it and extract the data.zip into this directory. The csg_fs319.su means the data contains free surface related multiples and 319 is the shot number. 2. We use the 319th shot gather as the original data and remove the first 20 traces of this shot as the nearoffset missing data. 3. Type " [pseudoshot,result,origin]=PSG; " in Matlab to run the program for interpolation using all the shot gathers. 4. Use plot_figures.m to generate the figures in this lab. 5. Change the 18th line in PSG.m, try to use different number of shot gathers to get result. 6. If you want to interpolate the nearoffset in different shots, you may download the whole dataset BigData.zip into the same directory and extract it. Questions to think about: 1. What are the advantages of interferometric interpolation? 2. Why the amplitudes are wrong and how to correct them? 3. What is the relationship between nearoffset gap and interpolated recording time?
ProcessMatchedData.m, wigb.m, VirtualShotGenerator.m, and agc.m. A Sigsbee2B synthetic data set is used to test the codes. Use command "unzip data.zip" to extract the data. The data set is very big (300M), UTAM users can read the data from the folder '/uufs/geophys.utah.edu/common/tomofs/www/htdocs/book/interpolate' without
downloading it. The csg_fs319.su means the data contains free surface related multiples and 319 is the shot number. 2. We use the 319th shot gather as the original data and remove the first 20 traces of this shot as the nearoffset missing data. 3. Type " Sigsbee2B_main " in Matlab to run the program for interpolation using all the shot gathers. And we will get the rough interpolation result, which contain the amplitude and wavelet misfits. We need do some extra work on it to correct the misfits. 4. Now that you have the virtual and actual SSP data, extract the wavelet by the wavelet extraction procedure. The actual wavelet is a Ricker wavelet. Compare your actual wavelet against estimated wavelet. Which is better, an average wavelet estimated by averaging many extracted wavelets or a estimated single wavelet? 5. Test the sensitivity of the extracted wavelet to the degradation in trace sampling interval and reduced number of shot gathers. Does the damping term help stabilize the inversion? 6. Repeat steps 3 and 4 except now use as your input data the Sigsbee data convolved with a ringy source wavelet. You should get as an extracted wavelet the ringy wavelet convolved with the Ricker wavelet. Questions: 1. Will the source or receiver radiation pattern affect the shape or amplitude of the source wavelet at far offset traces compared to near offset traces? See Fig. 4.2 in Aki and Richards, 1980. 2. Will attenuation affect the shape or amplitude of the source wavelet at far offset traces compared to near offset traces? If so, what would your strategy be to find the wavelet for far-offset trace and the wavelet for a near-offset trace? 3. Is the SSP-SSP transform valid for attenuative media? 4. What other factors affect the accuracy of the extracted wavelet?
2. Extract the file into your directory using the Windows built-in unzip utility (Right-click at the file and choose Extract All File). 3. Run program wavelet.m in Matlab to obtain the extracted wavelet. Questions: 1. What are the advantages and disadvantages of this method? 2. Would it work when the source signature is not the same for all the sources? Exercise: 1. Extract a wavelet from the following dataset (data.zip).
ricker.m. 2. Type "twod" in Matlab to run the program to forward model SSP (surface seismic profile) shot gathers in a 2-layer model. Only the primaries, 1st- and 2nd-order multiples are generated. These data are also correlated and summed to produce redatumed data on the surface. In this case 1st-order multiples turn into primaries and 2nd-order multiples become 1st-order multiples. 3. Change depth of layer interface and assess how this affects the ability to reconstruct the primaries from the multiples. Does the reconstruction become more accurate or less accurate as the interface depth increases? 4. Change aperture width. Does the reconstruction become more accurate or less accurate as the aperture increases?
5. Insert a near-offset gap in the shot gathers and assess the effects on the reconstruction accuracy. Use gap widths that are integer multiples of a Fresnel zone width on the surface. 6. Adjust model so that there are two reflectors, one at depth d and the other at depth 3d. The shallowest reflector might be a water bottom interface so it can generate strong multiples up to the 3rd order. Numerically assess the sensitivity of the gap width, geophone spacing, aperture width to reconstruction accuracy. 7. Heroic MATLAB exercise: Repeat previous exercise except use a 3D layer cake model with a typical marine survey geometry consisting of a swath of towed hydrophone lines. The swath consists of eight parallel lines, each separated by 10 m and each having a line length of 6 km long. The hydrophone spacing is 20 m and the near-offset source-receiver gap is 120 m.
mchef.m, mchf.m, medianfsur.m, medianfilter1.m, medianfilter.m, mycorr.m, predct.m, redo1.m, slantstack.m, window.m, xcorr.m, lowpasspredct.m, gather, 2. Download the data "gather" in your directory, type "fid=fopen('gather','rb'); tmp=fread(fid,250*48*20,'float'); gather=reshape(tmp,250,48,20);" to load the data. 3. Type "s=predct(gather,gather)" in Matlab to predict the surface waves by interferometry. 4. Type "[sout]=medianfsur(s'); dd0=s'-sout;" in Matlab to separate the surface waves from the interferometric prediction. Type "ps=match(rrout',dd0',25,5,9,2,0.00001);" to get the result of data after removing surface waves by Interferometry and NLF. To see the result, type"figure; imagesc(agc(ps,100));colormap(gray)"
needed data files. vel.mat is the velocity model for all synthetic data used in this lab. This file is not needed in this exercise, but you can generate all synthetic data by yourself if interested. There are 801 grids in X direction and 601 grids in Z direction. Sources are located just beneath the free surface; receivers are located on the sea floor. Totally 201 shot gathers are generated by this model. raw data is the original OBS data set with a coarse receiver interval of 160 meters, where sources are located just beneath free surface and receivers are located on sea floor. truedata is the true data set with a dense receiver interval of 8 meters. dat_grn are the SWP Green's functions, which are generated by putting sources and receivers on sea floor, and only the water layer model is needed. 2. Download codes.tgz and decompress it by typing "tar xzvf codes.tgz". obs_interp.m is the main program for OBS data interpolation. mute_direct.m,xcorr.m are functions used by obs_interp.m. matchfilter are the fortran codes of the matching filter. 3. Go to directory 'codes', in matlab, run "obs_interp" to generate the interpolated virtual shot gather. 4. In a linux terminal (make sure the intel fortran compiler is installed in the computer), goto directory 'codes/matchfilter', type "ifort -llapack -lg2c main.f90" or "ifort -llapack main.f90", to compile the codes and get the a.out. 5. Type './a.out' to apply the matching filter to the virtual shot gather. 6. Change the parameters in main.f90, try to use different filter parameters to see the results changes. Questions to think about: 1. What are the advantages of interferometric interpolation? 2. Are the amplitudes of virtual traces correct? 3. How to set the parameters for the matching filter to get the best results?
xcorr.m, xmig1.m, source.m, readata.m, ex2.m, and c1.m. 2. Type "ex2" in MATLAB to begin migration of correlated data for 10 buried point sources. Only ghost reflections with 1 bounce off the reflectivity interfaces are modeled with no ray bending. 3. Examine migration images for different stack values N of migration stacks. Does the incoherent noise in the image decrease as N to the 1/2 power? 4. Refer to the exercise 7 in Chapter 11. How can the summation over different window segments be changed so that the code runs more efficiently? Questions to think about: 1. What are the advantages and disadvantages of migrating passive seismic data compared to controlled source data? 2. The sources are assumed to be randomly distributed in space and also have about the same amplitude. What is the effect of a few large passive sources? Should these data be retained? 3. How does one determine the optimal receiver interval and receiver aperture on the surface?