This reverts commit 3e247b059f20b1d04f47bd832719a99df8b9ac26. After a
more thorough investigation, the cannonical name of these quantities
turned out to be "* formation volume factor"...
this makes it possible to compare ECL restart and summary files
produced by ebos directly with the ones stemming from Eclips. (But be
aware that VTK output files from ebos are still all-SI!)
in particular, the partial relinearization seems to cause some _very_
weird effects. (the results differ very significantly for SPE1.) I
still have to investigate why, but I suspect that this is caused by
the fluid system being not continuously differentiable (it's piecewise
linear).
also, do not touch the region index in scalar assignments for black
oil primary variable objects. the first change is required by because
assignMassConservative() accesses the region index and the second
because scalar assignments should not modify the PVT region of the
primary variables. found by clang's ASAN.
this time it was caused by the fact that the episodeStartTime_ is
defined as the time which was elapsed from the beginning of the
simulation instead of the posix time which the simulation currently
looks at...
this is because the "bottom hole pressure" by default is the the
presssure at the center of the _topmost_ cell penetrated by the
well. (The terminology keeps getting more weird the longer you look at
it.)
this patch also changes the default way to calculate the reference
depth from the center of the deepest to the center of the highest cell
and makes the reference depth settable in the deck.
they were forgotten in a place or two. With this, ebos' performance
using ALUGrid is comparable to its performance using a "raw"
Dune::CpGrid.
(also, make the naming of the local variable for the element more
consistent, i.e., replace 'entity' by 'elem' for the few places where
'entity' was used.)
the ebos module implemenents what Eclipse calls 'NEWTRAN'
transmissibilities. Also, this commit required a few cleanups in the
velocity module infrastructure.
catching an exception for this seems like a pretty bad hack to me, but
there seems to be no other way to detect that a deck did not specify a
completion radius. (well, one could look at the raw COMPDAT keyword,
but that would defeat all benefits of using opm-parser's schedule
objects.)
this makes ebos work with SPE9 for the current master version of
opm-parser again.
note: the doxygen groups are quite a bit behind the curve and should
be overhauled soon. (e.g. now there's not only the vertex centered
finite volume space discretization anymore...)
first, it's not a good idea to go over the whole grid for each well at
the beginning of a time step, second the Jacibian matrix of the
linearization only needs to be recreated if the well completions have
changed...
SPE is closer, but not close enough. Note that the using total
mobility is probably "more wrong" than the previous approach (i.e.,
lambda = 1/viscosity of the injected phase)
"BHP" stands for "bottom hole pressure" so it sounded logical that
"THP" is an acronym for "top hole pressure". It isn't but the quantity
in question is still the pressure which is seen at the top of the
well's bore hole...
the ones based on Splines are better in principle, but they cause
havoc if two saturations are very close together with the slope of the
values off. this happens e.g. in SWOF in my version of SPE1...
this makes eWoms match autodiff and Eclipse for SPE-1 if the injector
is disabled. with the injector it gets quite a bit closer, but it does
not yet match. (this is probably not a problem with the wells as
autodiff and eWoms agree that the maximum amount of gas should be
injected all the time and these rates are the same...)
ECLiPSE and opm-autodiff seem to be in that range of accuracy, too. At
least the number of Newton iterations per time step now matches that
of autodiff quite well...
this helps to keep the core blackoil model code lean and mean and it
is also less confusing for newbies because the ECL blackoil simulator
is not a "test" anymore.
in case somebody wonders, "ebos" stands for "&eWoms &Black-&Oil
&Simulator". I picked this name because it is short, a syllable, has
not been taken by anything else (as far as I know) and "descriptive"
names are rare for programs anyway: everyone who does not yet know
about 'git' or 'emacs' and tells me that based on their names they
must be a source-code managment system and an editor gets a crate of
beer sponsored by me!
This code is required in the first place because opm-material always
specifies all parameters in terms of the wetting saturations while the
gas is the non-wetting phase in a gas-oil system.
it is just deactivated using an always-false condition so it does not
bitrot and can be re-activated quickly. I did not want to completely
remove this code because it is useful for debugging purposes, but for
regular use, it should have been superseeded by the ECL summary output
stuff...