|
|
|
|
Empty bins and inverse interpolation |
|
|---|
|
wellseis
Figure 8. Binning by data push. Left is seismic data. Right is well locations. Values in bins are divided by numbers in bins. (Toldi) |
|
|
|
|---|
|
misseis
Figure 9. Seismic binned (left) and extended (right) by minimizing energy in |
|
|
Figure 3.9 also involves a boundary condition calculation. Many differential equations have a solution that becomes infinite at infinite distance, and in practice this means that the largest solutions may often be found on the boundaries of the plot, exactly where there is the least information. To obtain a more pleasing result, I placed artificial ``average'' data along the outer boundary. Each boundary point was given the value of an average of the interior data values. The average was weighted, each weight being an inverse power of the separation distance of the boundary point from the interior point.
Parenthetically, we notice that all the unknown interior points could be guessed by the same method we used on the outer boundary. After some experience guessing what inverse power would be best for the weighting functions, I do not recommend this method. Like gravity, the forces of interpolation from the weighted sums are not blocked by intervening objects. But the temperature in a house is not a function of temperature in its neighbor's house. To further isolate the more remote points, I chose weights to be the inverse fourth power of distance.
The first job is to fill the gaps in the seismic data.
We just finished doing a job like this in one dimension.
I'll give you more computational details later.
Let us call the extended seismic data
.
Think of a map of a model space
of infinitely many hypothetical wells that must match the real wells,
where we have real wells.
We must find a map that matches the wells exactly
and somehow matches the seismic information elsewhere.
Let us define the vector
as shown in Figure 3.8
so
is
observed values at wells and zeros elsewhere.
Where the seismic data contains sharp bumps or streaks,
we want our final earth model to have those features.
The wells cannot provide the rough features because the wells
are too far apart to provide high spatial frequencies.
The well information generally conflicts with the seismic data
at low spatial frequencies because of systematic discrepancies between
the two types of measurements.
Thus we must accept that
and
may differ
at low spatial frequencies (where gradient and Laplacian are small).
Our final map
would be very unconvincing if
it simply jumped from a well value at one point
to a seismic value at a neighboring point.
The map would contain discontinuities around each well.
Our philosophy of finding an earth model
is that our earth map should contain no obvious
``footprint'' of the data acquisition (well locations).
We adopt the philosopy that the difference
between the final map (extended wells)
and the seismic information
should be smooth.
Thus,
we seek the minimum residual
which is the roughened difference between the seismic data
and the map
of hypothetical omnipresent wells.
With roughening operator
we fit
| (13) |
Now we prepare some roughening operators
.
We have already coded a 2-D gradient operator
igrad2
.
Let us combine it with its adjoint to get the 2-D laplacian operator.
(You might notice that the laplacian operator is ``self-adjoint'' meaning
that the operator does the same calculation that its adjoint does.
Any operator of the form
is self-adjoint because
. )
void laplac2_lop(bool adj, bool add,
int np, int nr, float *p, float *r)
/*< linear operator >*/
{
int i1,i2,j;
sf_adjnull(adj,add,np,nr,p,r);
for (i2=0; i2 < n2; i2++) {
for (i1=0; i1 < n1; i1++) {
j = i1+i2*n1;
if (i1 > 0) {
if (adj) {
p[j-1] -= r[j];
p[j] += r[j];
} else {
r[j] += p[j] - p[j-1];
}
}
if (i1 < n1-1) {
if (adj) {
p[j+1] -= r[j];
p[j] += r[j];
} else {
r[j] += p[j] - p[j+1];
}
}
if (i2 > 0) {
if (adj) {
p[j-n1] -= r[j];
p[j] += r[j];
} else {
r[j] += p[j] - p[j-n1];
}
}
if (i2 < n2-1) {
if (adj) {
p[j+n1] -= r[j];
p[j] += r[j];
} else {
r[j] += p[j] - p[j+n1];
}
}
}
}
|
void lapfill(int niter /* number of iterations */,
float* mm /* model [m1*m2] */,
bool *known /* mask for known data [m1*m2] */)
/*< interpolate >*/
{
if (grad) {
sf_solver (igrad2_lop, sf_cgstep, n12, 2*n12, mm, zero,
niter, "x0", mm, "known", known, "end");
} else {
sf_solver (laplac2_lop, sf_cgstep, n12, n12, mm, zero,
niter, "x0", mm, "known", known, "end");
}
sf_cgstep_close ();
}
|
Subroutine lapfill()
can be used for each of our two problems,
(1) extending the seismic data to fill space, and
(2) fitting the map exactly to the wells and approximately to the seismic data.
When extending the seismic data,
the initially non-zero components
are fixed
and cannot be changed.
The final map is shown in Figure 3.10.
|
|---|
|
finalmap
Figure 10. Final map based on Laplacian roughening. |
|
|
Results can be computed with various filters.
I tried both
and
.
There are disadvantages of each,
being too cautious and
perhaps being too aggressive.
Figure 3.11 shows the difference
between
the extended seismic data and the extended wells.
Notice that for
the difference shows
a localized ``tent pole'' disturbance about each well.
For
there could be large overshoot between wells,
especially if two nearby wells have significantly different values.
I don't see that problem here.
My overall opinion is that the Laplacian does the better job in this case. I have that opinion because in viewing the extended gradient I can clearly see where the wells are. The wells are where we have acquired data. We'd like our map of the world to not show where we acquired data. Perhaps our estimated map of the world cannot help but show where we have and have not acquired data, but we'd like to minimize that aspect.
| A good image of the earth hides our data acquisition footprint. |
|
|---|
|
diffdiff
Figure 11. Difference between wells (the final map) and the extended seismic data. Left is plotted at the wells (with gray background for zero). Center is based on gradient roughening and shows tent-pole-like residuals at wells. Right is based on Laplacian roughening. |
|
|
To understand the behavior theoretically,
recall that in one dimension
the filter
interpolates with straight lines
and
interpolates with cubics.
This is because the fitting goal
,
leads to
or
, whereas the fitting goal
leads to
which is satisfied by cubics.
In two dimensions, minimizing the output of
gives us solutions of Laplace's equation with sources at the known data.
It is as if
stretches a rubber sheet over poles at each well,
whereas
bends a stiff plate.
Just because
gives smoother maps than
does not mean those maps are closer to reality.
This is a deeper topic, addressed in Chapter
.
It is the same issue we noticed when comparing
figures 3.3-3.7.
|
|
|
|
Empty bins and inverse interpolation |