[Numpy-discussion] Interpolation question
Brennan Williams
brennan.williams at visualreservoir.com
Sun Mar 28 18:36:21 EDT 2010
Andrea Gavana wrote:
> Hi All,
>
> On 28 March 2010 22:14, Pierre GM wrote:
>
>> On Mar 28, 2010, at 4:47 PM, Andrea Gavana wrote:
>>
>>> HI All,
>>>
>>> On 28 March 2010 19:22, Robert Kern wrote:
>>>
>>>> On Sun, Mar 28, 2010 at 03:26, Anne Archibald <peridot.faceted at gmail.com> wrote:
>>>>
>>>>> On 27 March 2010 20:24, Andrea Gavana <andrea.gavana at gmail.com> wrote:
>>>>>
>>>>>> Hi All,
>>>>>>
>>>>>> I have an interpolation problem and I am having some difficulties
>>>>>> in tackling it. I hope I can explain myself clearly enough.
>>>>>>
>>>>>> Basically, I have a whole bunch of 3D fluid flow simulations (close to
>>>>>> 1000), and they are a result of different combinations of parameters.
>>>>>>
>>> It seems like this whole interpolation stuff is not working as I
>>> thought. In particular, considering scalar-valued interpolation (i.e.,
>>> looking at the final oil recovery only and not the time-based oil
>>> production profile), interpolation with RBFs is giving
>>> counter-intuitive and meaningless answers. The issues I am seeing are
>>> basically these:
>>>
>> Which is hardly surprising: you're working with a physical process, you must have some constraints on your parameters (whether dependence between parameters, bounds on the estimates...) that are not taken into account by the interpolation scheme you're using. So, it's back to the drawing board.
>>
>
> Sorry, this laptop has gone mad and sent the message before I was finished...
>
> The curious thing is, when using the rbf interpolated function to find
> a new approximation, I am not giving RBFs input values that are
> outside the bounds of the existing parameters. Either they are exactly
> the same as the input ones (for a single simulation), or they are
> slightly different but always inside the bounds. I always thought
> that, at least for the same input values, it should give
> (approximatively) the same answer as the real one.
>
>
>> What are you actually trying to achieve ? Find the best estimates of your 10 parameters to match an observed production timeline ? Find a space for your 10 parameters that gives some realistic production ?
>>
>
> I have this bunch of simulations for possible future oil productions
> (forecasts), run over the past 4 years, which have different
> combination of number of oil producing wells, gas injection wells, oil
> plateau values, gas injection plateau values and gas production
> plateau values (6 parameters in total, not 10). Now, the combinations
> themselves are pretty nicely spread, meaning that I seem to have a
> solid base to build an interpolator that will give me a reasonable
> answer when I ask it for parameters inside the bounds (i.e., no
> extrapolation involved).
>
>
>> Assuming that your 10 parameters are actually independent, did you run 1000**10 simulations to test all the possible combinations?
>>
>
> I hope you're kidding :-D . Each of these simulations take from 7 to
> 12 hours, not counting the huge amount of time needed to build their
> data files by hand...
>
> Let's see a couple of practical examples (I can share the data if
> someone is interested).
>
>
Definitely interested in helping solve this one so feel free to email
the data (obviously not 1,000 Eclipse smspec and unsmry files although I
can handle that without any problems).
> Example 1
>
> # o2 and o3 are the number of production wells, split into 2
> # different categories
> # inj is the number of injection wells
> # fomts is the final oil recovery
>
> rbf = Rbf(oilPlateau, gasPlateau, gasInjPlateau, o2, o3, inj, fomts)
>
> op = [50380]
> gp = [103014000]
> gi = [53151000]
> o2w = [45]
> o3w = [20]
> inw = [15]
>
>
I take it all your inputs are float arrays? i.e. you just consider
number of production wells as a floating point value.
I suppose strictly speaking o2 and o3 are not independent of eachother
but I would guess that for the purposes of using Rbf it wouldn't be an
issue.
I'm just having a look at the cookbook example
(http://www.scipy.org/Cookbook/RadialBasisFunctions) and adding a couple
more variables, bumping up the number of points to 1000 and setting the
z values to be up around 1.0e+09 - so far it still seems to work
although if you increase the sample points to 2000+ it falls over with a
memory error.
I've got a smaller bunch of Eclipse simulations I could try Rbf out on -
19 runs with 9 variables (it's a Tornado algorithm with -1,0,+1 values
for each variable). FOPT's will be in a similar range ot yours.
Brennan
> fi = rbf(op, gp, gi, o2w, o3w, inw)
>
> # I => KNOW <= the answer to be close to +3.5e8
>
> print fi
>
> [ -1.00663296e+08]
>
> (yeah right...)
>
>
> Example 2
>
> Changing o2w from 45 to 25 (again, the answer should be close to 3e8,
> less wells => less production)
>
> fi = rbf(op, gp, gi, o2w, o3w, inw)
>
> print fi
>
> [ 1.30023424e+08]
>
> And keep in mind, that nowhere I have such low values of oil recovery
> in my data... the lowest one are close to 2.8e8...
>
> Andrea.
> _______________________________________________
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
> http://mail.scipy.org/mailman/listinfo/numpy-discussion
>
>
More information about the NumPy-Discussion
mailing list