|
|
|
|
Model fitting by least squares |
Here we follow the doctoral dissertation of Jesse Lomask.
In Figure
we have seen how to flatten 2-D seismic data.
The 3-D process is much more interesting.
To see why,
consider this: Starting from the origin
we move along the
-axis flattening until we come to
.
From there we move along the
-axis flattening until we get to
.
Move backwards on the
-axis to
flattening as you go.
Finally, return to the origin.
Along our journey around this square we have integrated
(and
) to find the total time shift.
Upon returning to the starting point,
we would like the total time shift to return to zero.
Dealing with real data of less than perfect coherence this might not happen.
Old time seismologists would say, ``The survey lines don't tie.''
As we push to the limits of our knowledge (which we normally do)
this problem always arises.
We would like a solution that gives the best fit of all the data in a volume.
Given a volume of data
we seek
the best
such that
is flattened. Let's get it.
Here is an expression that on first sight seems to say nothing
| (87) |
|
|---|
|
chev
Figure 8. Chevron data cube from the Gulf of Mexico. A salt dome (lower left corner in the top plane) has pushed upwards, dragging bedding planes (seen in the bottom two orthogonal planes) along with it. |
|
|
for (i2=0; i2 < n2-1; i2++) {
for (i1=0; i1 < n1-1; i1++) {
i = i1+i2*n1;
if (adj) {
p[i+1] += r[i];
p[i+n1] += r[i+n12];
p[i] -= (r[i] + r[i+n12]);
} else {
r[i] += (p[i+1] - p[i]);
r[i+n12] += (p[i+n1] - p[i]);
}
}
}
|
do iy=1,ny { # Calculate x-direction dips: px
call puck2d(dat(:,:,iy),coh_x,px,res_x,boxsz,nt,nx)
}
do ix=1,nx { # Calculate y-direction dips: py
call puck2d(dat(:,ix,:),coh_y,py,res_y,boxsz,nt,ny)
}
do it=1,nt { # Integrate dips: tau
call dipinteg(px(it,:,:),py(it,:,:),tau,niter,verb,nx,ny)
}
The code says first to initialize the gradient operator.
Convert the 2-D plane of
|
|
|
|
Model fitting by least squares |