Contents
RandStream.setDefaultStream(RandStream('mt19937ar','seed',1));
clear; close all;
camenbert example
define velocity model
z = 0:10:1000;
x = 0:10:1000;
[o,d,n] = grid2odn(z,x);
[zz,xx] = ndgrid(z,x);
m0 = 2500 + 0*xx;
dv = 0*xx; dv((xx-500).^2 + (zz-500).^2 <= 250^2) = .1*2500;
m = m0 + dv;
figure;imagesc(x,z,m);xlabel('x [m]');ylabel('z [m]');title('velocity [m/s]');colorbar;
m0 = m0(:);
m = m(:);
setup parameters for reflection experiment
model.minf = 2.9;
model.maxf = 22;
model.sourcet = 1;
model.name = ['/example_camenbert/FWIresult_camenbert'];
model.vmin = 2000;model.vmax = 3000;
model.nf = 10;
model.snf = 10;
model.ol = 5;
model.gl = 10;
model.xbound = .1;
model.zbound = .1;
model.nshot = 25;
model.nsim = 3;
model.sdep = 30;
model.sp = round(linspace(1,101,model.nshot));
model.rdep = 20;
model.nrec = 51;
model.rp = round(linspace(1,101,51));
model.water = 3;
opts = Set_Paras( ...
'miter',1, ...
'mlinm',10, ...
'sptrans','no', ...
'iterations',20, ...
'dispresult',1);
simulate observation data of reflection data
model.t0 = .2;
model.f0 = 12;
model.freq = linspace(model.minf,model.maxf,30);
model.o = [0 0 0];
model.d = [d 1];
model.n = [n 1];
model.nb = [floor(model.xbound*n(2)) floor(model.zbound*n(1)) 0];
model.zsrc = model.sdep * model.gl;
model.xsrc = (model.sp - 1) * model.gl ;
model.zrec = model.rdep * model.gl;
model.xrec = (model.rp - 1) * model.gl ;
Q = (speye(model.nshot)./(model.gl^2));
Dobs = F(1e6./m.^2,Q,model,1);
Dobs = reshape(Dobs,model.nrec,model.nshot,length(model.freq));
wavelet.t0 = model.t0;
wavelet.f0 = model.f0;
wavelet.faxis = model.freq;
inversion
[results] = MGNFWI(reshape(m0,n),Dobs,wavelet,model,opts);
setup modeling parameters for transmission experiment
model.rdep = 950;
model.name = ['/example_camenbert/FWIresult_camenbert_transmission'];
model.zrec = model.rdep;
Dobs = F(1e6./m.^2,Q,model,1);
Dobs = reshape(Dobs,model.nrec,model.nshot,length(model.freq));
inversion
[results] = MGNFWI(reshape(m0,n),Dobs,wavelet,model,opts);