Although they don't use Boost::UnitTest, they can at least pass, so we
can use them to detect simple compilation and runtime errors, although
we miss the semantic check.
(If you have time, please make them proper unit tests)
The current implementations of IncompPropertiesInterface are very
all-or-nothing. In some situations, you want to read rock and fluid
properties from an Eclipse file, but use analytical functions for
the unsaturated properties. Or you want to update properties based
on a marching filter.
This patch provides a way to mix various property objects, or to
"shadow" the properties with a raw array of data, so you don't have
to reimplement the entire interface just to make a small change.
The executable is not written as a unit test (e.g., using Boost.Test)
and furthermore requires external data (in a very specific location).
This makes it inappropriate for use during "make test", but it could
(and should) be cleaned up and incorporated into the test portfolio at
a later time.
Template functions must be defined in the header since the library
cannot contain generic code. To keep only the interface in the main
header, all such function bodies are put in a separate _impl file.
Actually, the program spu_2p is the only place the class GravityColumnSolver
is currently used, and it is also the only program capable of doing an operator
splitting with gravity segregation being solved by full Newton-Raphson (not by
columns). These features should be made available by refactoring the transport
solvers: making the segregation solvers inherit TransportSolverTwophaseInterface
and creating a general composite solver.
Files which constitutes compilation units are now specified explicitly
in the file CMakeLists_files.cmake rather than identified through a
glob. If this file is updated, a reconfigure should be triggered.
This also enables us to specify exactly which headers that should be
distributed as part of the installation package, and which programs
that should be used for unit testing.