This is to improve consistency with other solvers, and relates
to the expression that is converted into a finite difference when
discretising:
(phi s) - (phi s)^0 = phi^0(s - s^0) + (phi - phi^0)s
^^^^^
The above marks the spot where we now use phi^0 instead of phi.
Also:
- solveGravity() interface changed to take surface volume as a parameter,
- gravity vector is now given in initGravity() instead of
solveGravity(), for consistency with the incompressible solver.
- Changed Wells constructor arg for SimulatorIncompTwophase to WellsManager.
- Insert checking code for well constrains (mostly copied from spu_2p.cpp).
Unrelated to the above changes.
- Added pressure normalization for incompressible case (from spu_2p.cpp)
Most significant changes:
- Single solve() call used for all cases (with or without gravity,
with or without rock compressibility). This is intentionally
similar to CompressibleTpfa::solve().
- Constructor take a property object and computation of necessary total
mobilities etc. moved inside class.
- Optional constructor args for rock compressibility, gravity, wells,
boundary conditions (null pointer accepted) and source terms (empty
vector accepted).
- Nonlinear iterations for the compressible rock case now handled inside
IncompTpfa. This part intentionally made similar to CompressibleTpfa.
Specifically: Change-set f08b1fb48d19 modified the IncompTpfa solver
to accept a linear-solver as "reference-to-non-const" in order to
facilitate changing its tolerance levels. Permeate that change back
through the SimulatorTwophase class.
There might be a better way of accomplishing the same task.