This is a change from taking a vector containing the mapping to
deck-consistent logical cartesian indices. The mapping is contained
in the UnstructuredGrid::global_cell member, and may be null. The
change therefore saves the overhead of constructing a vector as a
copy of the data in the grid or (if null) as an identity mapping.
Now we may have a grid generated from deck input using the
keywords DXV, DYV, DZV, which will have a null pointer for
the global_cell mapping. We check if this pointer is null,
and create an identity mapping in this case. The mapping is
needed by the *PropertiesFromDeck classes (and helpers).
- Made initStateFromDeck() into a template taking arbitrary properties.
Implementation detail:
- initWaterOilContact() was also templatized on props.
- initHydrostaticPressure() is now overloaded on prop interface types.
This is to make it compatible with blackoil properties.
An alternative would be to give [Incomp|Blackoil]PropertiesInterface a
common base class (RockInterface?) with the common rock-related methods.
- Only used if no wells present.
- Defaults to 0.0 if gravity is present.
- Otherwise defaults to 0.1.
These defaults are intended to preserve behaviour from before the
initialisation code changed away from using the 'scenario' parameter.
- TransportModelTwophase no longer takes pore volume in constructor, but in
the solve() and solveGravity() calls.
- Residual function uses compressibility term (not yet for gravity residual).
- spu_2p now takes a new parameter "init_p_bar", and ReservoirState class
accepts initial pressure as a constructor argument.
- Moved parts of initialization around, since pore volume now depends on
state (pressure).
The bug was the following: the reordering transport solvers accounts for
sources and sinks, and modifies saturation accordingly. This saturation is
the one we must use for computing sink outflow (= fracflow(s)*outflux).
If we wait until after segregation, saturation is changed, and we
compute fracflow(s')*outflux instead.