equinor / flownet

FlowNet - Data-Driven Reservoir Predictions
GNU General Public License v3.0
64 stars 29 forks source link

Mistmatch for Egg model #68

Closed tayloris closed 4 years ago

tayloris commented 4 years ago

I'm applying Flownet to the Egg model. You can see the results of the ensemble for 6th iteration. in the following figurre.

webviz-screenshot (38) webviz-screenshot (37)

You can notice that the total oil rate and water flow rate never go closer to the history data. The ensembles are somehow stagnant. In this example, I'm running 40 ensembles and 100 additional nodes, however, the results are similar if I increase the number of ensembles, the number of nodes the range in the parameters.

anders-kiaer commented 4 years ago

@tayloris How many realizations went into the run? Or did you mean "40 realizations" instead of "40 ensembles"? Would be interesting to see iter-0 as well in the same plot, to see initial span/coverage (but I do not think FlowNet automatically includes that in Webviz... so maybe we should add the first iteration as well on general basis)

wouterjdb commented 4 years ago

Was just thinking the same: how does iter-0 look like? If you see that there is coverage then it looks like the ensemble has collapsed during the history matching process. This can potentially be mitigated by increasing the number of realizations. How many observations and uncertain parameters (the ones you're matching) do you have?

tayloris commented 4 years ago

Here, is the figure with the first and last iteration, 7 iterations in total, 40 ensembles and 100 extra nodes. We are using all observation for egg model, the whole simulation time as a data set. And all the parameters for the fluid and the rock(perm, poro, bluk modulus). I'll try to increase the number of realizations.

Screenshot from 2020-06-20 09-32-10

tayloris commented 4 years ago

Here, I reduce the number of parameters. Parameters related to relative permeabilities are fix to the one for the egg model. So It calibrates permeability porosity and bulk modulus. It runs 100 realizations on 6 iterations with zero additional nodes.

Screenshot from 2020-06-20 20-04-57

wouterjdb commented 4 years ago

Here, I reduce the number of parameters. Parameters related to relative permeabilities are fix to the one for the egg model. So It calibrates permeability porosity and bulk modulus. It runs 100 realizations on 6 iterations with zero additional nodes.

Screenshot from 2020-06-20 20-04-57

Seems like you're getting closer!

tayloris commented 4 years ago

In this next figure, I show the results, using the same setting as the previous figures but with 20 additional nodes. The gap between data and prediction increase a bit.

Screenshot from 2020-06-21 17-35-41

wouterjdb commented 4 years ago

Could it be that, by increasing the number of nodes, you increase the number of parameters to match. So one also needs to increase the number of realization accordingly (with some number).

tayloris commented 4 years ago

In this figure, I include 500 realizations. Still, I see a consistent gap. I'm not including relative permeabilities parameters. It has 20 additional nodes.

Screenshot from 2020-06-26 09-28-30

wouterjdb commented 4 years ago

What do you mean with not including relative permeability parameters? You are looking at water/oil rates, so relative permeability rather important for that.

How does you pressure match look like now?

tayloris commented 4 years ago

Yes, I just wanted to reduce the number of parameters, The pressure has big range so maybe I should reduce the range in permeability Screenshot from 2020-06-26 11-01-27 Screenshot from 2020-06-26 11-01-07

tayloris commented 4 years ago

I'll include the relative's permeabilities in the next try

wouterjdb commented 4 years ago

Seems like you have a bit of tuning to do yeah - if you could share your fork/branch for the Egg model it makes it a bit easier to look at what you have as input (and maybe run it here myself).

tayloris commented 4 years ago

Here you have, https://github.com/tayloris/flownet/tree/Egg_Model_Config . Inside examples folder you have a zip folder with all simulations results from OPM/Flow if need it.

wouterjdb commented 4 years ago

I had a quick initial look. Some thoughts:

Mind that what I wrote above are just some suggestions/thoughts based on that I looked at the model deck, I didn't inspect the Egg model in detail. Neither did I yet run the model. I hope it helps somewhat.

tayloris commented 4 years ago

Hi Wouter

Many thanks for the detailed review.

I'll make two issues regarding the rock-compressibility and Aquifer section. Flownet gives an error when they are not defined.

Permeability: Yes, a long-range of permeability cause a long-range of pressure drop in the ensembles.

Rock compaction: The configuration parse sett rock-compressibility as "required" so it gives an error if is not define in the config file. I'll make an issue about it

Relative permeability: I have not plotted it but here you can see the tables from the egg model and the table generated by pyscal.
Both tables are identical except for the last row where SW is 0.9 for egg model and 1.0 for the one generated by pyscal.

Ensemble weights: Yes, for all the figures I reported I used usually 6 iterations.

Aquifer: There is not Aquifer defined in EGG model. When I removed it gives me an error, so I'll create an issue about it.

Realizations: Yes, for most of the figures I reported I used usually 200 realizations.

Original SWOF table from Egg model SWOF​ 0.1000, 0.0000e+00, 8.0000e-01 0​ 0.2000, 0.0000e+00, 8.0000e-01 0​ 0.2500, 2.7310e-04, 5.8082e-01 0​ 0.3000, 2.1848e-03, 4.1010e-01 0​ 0.3500, 7.3737e-03, 2.8010e-01 0​ 0.4000, 1.7478e-02, 1.8378e-01 0​ 0.4500, 3.4138e-02, 1.1473e-01 0​ 0.5000, 5.8990e-02, 6.7253e-02 0​ 0.5500, 9.3673e-02, 3.6301e-02 0​ 0.6000, 1.3983e-01, 1.7506e-02 0​ 0.6500, 1.9909e-01, 7.1706e-03 0​ 0.7000, 2.7310e-01, 2.2688e-03 0​ 0.7500, 3.6350e-01, 4.4820e-04 0​ 0.8000, 4.7192e-01, 2.8000e-05 0​ 0.8500, 6.0000e-01, 0.0000e+00 0​ 0.9000, 7.4939e-01, 0.0000e+00 0​

Table generated by Pyscal with parameters from egg model. Screenshot from 2020-07-02 11-38-52

tayloris commented 4 years ago

So after several discussions, we found that that observation uncertainties were high for the egg model. In this regard, the solution is to decrease the values of the hard-coded observation uncertainties in files observations.yamlobs.jinja2 and observations.ertobs.jinja2. This observation uncertainty parameter will be soon added as an input parameter in the configuration file.

The history match has better quality now as you see

PROD1_Oil_Production_Rate

Oil_Production_Rate Water_Production_Rate PROD1_Water_Production_Rate PROD2_Oil_Production_Rate

wouterjdb commented 4 years ago

As a result of stepping into this pitfall we decided to make sure that the step of setting the observation error will be exposed more clearly to the user, see issue #120. As the described problem in this issue is solved I'll close the issue.