The refactorisation of class FullyImplicitBlackoilSolver<Grid> to
defer transmissibility and pore-volume calculation to the client in
order to support multipliers (net-to-gross &c) accidentally ended up
removing all effects of gravity. This commit restores those effects.
for the legacy C-style grid the unit test is more or less complete (it
does not test FAULTMULT and NNC, etc, but these could be added with
sufficient determination), for Dune::CpGrid it currently does not
really check anything because I have not found a good way for CpGrid
to produce the "global" intersection index of an intersection...
this means that the NTG, MULTPV and MULT[XYZ]-? keywords are now
supported.
Actually FAULTS and MULTFAULT are supported too, but that's abstracted
away by opm-parser's TransMult class. (Kudos to [at]joakim-hove for
implementing this.)
this is required to implement pore volume and permeability multipliers
as discussed with [at]bska and [at]joakim-hove.
Note that this implies that the DerivedGeology class can't be
instantiated anymore if there is no EclipseState object. Thus all code
paths and tests that don't load a deck are removed by this patch. If
this is undesireable, there are two options: First, don't require
EclipseState for DerivedGeology which would imply to make the about 10
required multiplier functions part of the
BlackoilPropertiesAdInterface, or second, one can copy-and-paste the
DerivedGeology class as it was before this patch, derive from a newly
introduced DerivedGeologyInterface and pass DerivedGeologyInterface
objects to the simulator. IMHO, the second solution would be a bit
better but it would involve substantial overhead to implement and to
maintain it.
Anyway, in the mean time simulators cannot be instantiated without
decks.
Commit 5112b8a misinterpreted the role of index 'i' and, as a result,
installed code that would only define one-sided gravity potentials of
the first cell (roughly)--albeit eventually using the geometry of the
last active cell.
This commit restores the original, intended behaviour.
Class FullyImplicitBlackoilSolver<Grid> already features a list of
"all" cells, built at object construction time. There's no need to
re-compute that list on every call to variableState() (when Gas is
active).
The "xvar" exists only if Gas is active. Therefore, we cannot
extract that variable from "vars" unless we know that Gas is an
active phase. Failing to do so would wrongfully increment 'nextvar'
whence the final BHP variable would be an out-of-bounds access.
Methods 'computeRelperm()' and 'computePressures()' *always* return
a three-element vector of phase properties. We must therefore
translate to canonical phase indices before indexing into the
results.
this is required for regex-matching keywords. Once GCC 4.9 is the
minimum compiler version to be supported, this can be dropped in favor
of std::regex ...
This changeset disables the effect of commit 778e87d. There appears
to be an unforeseen interaction between the calls to
Find_Package (Boost)
that are implied by module 'opm-parser-prereqs.cmake' and the one
that's directly invoked in 'Findopm-parser.cmake'. Until the
situation can be fully analysed and a complete solution implemented,
this is a temporary measure to restore the build of opm-core and
downstream OPM modules.
since the module currently calls the tests for cJSON and boost with
the REQUIRED flag set, cmake aborts completely even if opm-parser is
not REQUIRED. For modules which depend on opm-core that's currently a
non-issue because core has a requirement on parser, but the parser may
be useful for external projects as well, so we play nice.
Also, with this patch the config.h variable HAVE_OPM_PARSER is set...