2D time-stepping Gauss-Newton full-waveform inversion (applied to Chevron 2014 benchmark dataset)

Author: Dr. Xiang Li

       Seismic Laboratory for Imaging and Modeling
       Department of Earch & Ocean Sciences
       The University of British Columbia

Date: July, 2015

Contents

Chevron 2014 SEG FWI workshop benchmark

This is an demonstration of our workflow of time domain Gauss-Newton FWI for the benchmark dataset

Released initial model and frequency domain GN FWI result.

In this section, we carried a frequency domain GN FWI with the chevron released initial model from 3Hz to 5Hz. For more information about frequency domain GN FWI, please see [1,2]. The related code can be found in the SLIM software release under /applications/WaveformInversion/2DModGaussNewton.

load released_model.mat
scrsz = get(0,'ScreenSize');
figure('Position',[1 scrsz(4)/4 scrsz(3)/2 scrsz(4)/4]);set(gca,'fontsize',18);
imagesc(mmx,mmz,vel_init);caxis([1500,4000]);xlabel('x [m]');ylabel('z [m]');title('Chevron released initial model [m/s]');colorbar;
load ray_paths.mat
for k=1:size(r1,1)
	r = r1{k};
	line(r(:,1)+20000,r(:,2),ones(size(r,1)),'color','w','lineWidth',1);
end

load model_freq_forfwi.mat
scrsz = get(0,'ScreenSize');
figure('Position',[1 scrsz(4)/4 scrsz(3)/2 scrsz(4)/4]);set(gca,'fontsize',18);
imagesc(mmx,mmz,vel_freq);caxis([1500,4000]);xlabel('x [m]');ylabel('z [m]');title('frequency domain GN FWI result [m/s]');colorbar;

Time domain GN fwi with frequency domain GN FWI result.

In this section, we carried out our time domain FWI by using frequency domain GN FWI result as an initial guess. Frequency domain FWI approach can start from a monochromatic frequency, thus frequency domain approach can avoid certain amount of noises at low-frequency end and without including high-frequency signals that might cause "cycle skipping" .

load chevron2_5_nsp_3.mat
scrsz = get(0,'ScreenSize');
figure('Position',[1 scrsz(4)/4 scrsz(3)/2 scrsz(4)/4]);set(gca,'fontsize',18);
imagesc(mmx(1:2999),mmz,reshape(model.vel,467,2999));caxis([1500,4000]);xlabel('x [m]');ylabel('z [m]');title('time domain GN FWI by using frequency domain GN FWI result [m/s]');colorbar;

Continuing modify the velocity model

The dataset is very challenging because of the limited offset. According to ray paths in the first figure, turning wave (refraction wave) can not reach the area below 2km, thus the velocity below 2km can not be updated with low-frequency component from turning wave. According to the kirchhoff migration result of the time domain GN FWI result, the moveout corresponding to the area below 2km is not flattened. To address this issue, we scale the velocity below 2km with 0.9 based on the flatness of the moveout roughly.

load model_fwi_mask.mat
scrsz = get(0,'ScreenSize');
figure('Position',[1 scrsz(4)/4 scrsz(3)/2 scrsz(4)/4]);set(gca,'fontsize',18);
imagesc(mmx,mmz,vel_init);caxis([1500,4000]);xlabel('x [m]');ylabel('z [m]');title('scaled initial velocity model[m/s]');colorbar;

load chevron2_reflec_5_nsp_3.mat
scrsz = get(0,'ScreenSize');
figure('Position',[1 scrsz(4)/4 scrsz(3)/2 scrsz(4)/4]);set(gca,'fontsize',18);
imagesc(mmx,mmz,reshape(model.vel, 467,3066));caxis([1500,4000]);xlabel('x [m]');ylabel('z [m]');title('time domain GN FWI with only reflected wave[m/s]');colorbar;

Time domain GN FWI with curvelet domain angle restriction.

As we can observe from the last example, there are a lot of turning artifact in the FWI result. To get rid of those artifacts, we regularize the GN FWI updates in the curvelet domain by setting the curvelet coefficients that corresponding to the vertical events to zeros.

load chevron2_reflec_l1_5_nsp_3.mat
scrsz = get(0,'ScreenSize');
figure('Position',[1 scrsz(4)/4 scrsz(3)/2 scrsz(4)/4]);set(gca,'fontsize',18);
imagesc(mmx,mmz,reshape(model.vel, 467,3066));caxis([1500,4000]);xlabel('x [m]');ylabel('z [m]');title('curvelet-angle restricted time domain GN FWI with only reflected wave[m/s]');colorbar;

load kh_mig.mat
mmx = 0:10:47990;
mmz = 0:10:5990;


scrsz = get(0,'ScreenSize');
figure('Position',[1 scrsz(4)/4 scrsz(3)/2 scrsz(4)/4]);set(gca,'fontsize',18);
imagesc(mmx,mmz,mig_init);caxis(.8e1*[-1 1]);xlabel('x [m]');ylabel('z [m]');colormap gray;title('kirkhoff migration of the initial model');colorbar;
figure('Position',[1 scrsz(4)/4 scrsz(3)/2 scrsz(4)/4]);set(gca,'fontsize',18);
imagesc(mmx,mmz,mig_fwi);caxis(.8e1*[-1 1]);xlabel('x [m]');ylabel('z [m]');colormap gray;title('kirkhoff migration of the final FWI result');colorbar;


figure('Position',[1 scrsz(4)/4 scrsz(3)/2 scrsz(4)/4]);set(gca,'fontsize',18);
imagesc(1:7704,mmz,gather_init);caxis(.5e-1*[-1 1]);xlabel('trace number');ylabel('z [m]');colormap gray;title('kirkhoff migration gather of the initial model');colorbar;
figure('Position',[1 scrsz(4)/4 scrsz(3)/2 scrsz(4)/4]);set(gca,'fontsize',18);
imagesc(1:7704,mmz,gather_fwi);caxis(.5e-1*[-1 1]);xlabel('trace number');ylabel('z [m]');colormap gray;title('kirkhoff migration gather of the final FWI result');colorbar;