The code attempts to improve #iterations in the Gauss-Seidel-like
multicell solver by improving ordering. In general, experiment failed
to improve #iterations, except for one: totally random order was the
best (for the 100x100 case tried)!
This is for the experimental change of the graph topology, putting the
connections in the graph sorted by flux magnitude. Currently the
changes are in the file, but commented out until further experiments
have been done.
- Added solveMultiCell() virtual method.
- TransportModelInterface::reorderAndTransport() now calls solveMultiCell()
instead of aborting if encountering multi-cell components.
- Implemented solveMultiCell() in TransportModelTwophase by solving
each cell individually with solveSingleCell() and repeating until
saturation change is small (hardcoded 1e-9 for now).
- Using new solve() method in spu_2p.
- solve() implemented in terms of protected superclass method reorderAndTransport().
- Removed unused code being replaced by solve().
- These classes were imported (copied) from the dune-porsol repository,
and copies remain there for the time being.
- Some of the black oil fluid classes that are in opm-core, such as the
SinglePvt* classes, are direct descendants of the Miscibility* classes
that have been removed.
- At some point, we may modify dune-porsol to use the new fluid interfaces
from opm-core, but for now we keep using the existing code as-is.
Specifically, bring in maths library through AC_SEARCH_LIBS and add
checks for sqrt() and pow() only after we've established which library
might contain these functions. Similarly, rely on AC_SEARCH_LIBS
adding -lamd to ${LIBS} if needed in which case it is not necessary to
manually bring these libraries in while searching for UMFPACK.
Finally, add check for memset(). Needed by Tarjan implementation.
Keywords are supposed to be strings anyway, and it's better to enforce
this restriction explicitly rather than to rely on implicit conversion
from character literals.