This is intended to supersede the RESTART_AUXILIARY tag. There is
no practical difference between vectors that are needed for restart
and vectors that are not needed for restart. They all go into the
SOLUTION section of a restart file.
Vectors tagged as RESTART_OPM_EXTENDED will not be output unless the
user does requests OPM-extended restart files.
Mostly to reduce the level of complexity of the 'writeSolution'
function. While here, also ensure that we never write solution data
outside the STARTSOL/ENDSOL demarcations. Even if we emit vectors
that are not known to ECLIPSE, we should not write them outside of
the SOLUTION section.
In particular, add two new helper functions
crit_sat_increasing_KR
crit_sat_decreasing_KR
which identify the critical saturations under the assumption of a
relative permeability curve that increases viz decreases as a
function of the specified phase saturation. Those helpers in turn
call a wrapper around std::lower_bound() and std::distance() to
affect the actual table scan.
Reimplement the 'critical_*()' helper functions in terms of
crit_sat_*_KR() to remove duplicated logic.
This commit makes the 'critical_*()' helper functions aware of the
TOLCRIT feature. We now consider a phase to be immobile at a one
saturation value if its relative permeability at that saturation is
less than or equal to TOLCRIT. TOLCRIT mirrors E100's default value
of 1.0e-6 unless otherwise specified in the PROPS section.
All table scanners are implemented in terms of the expression
std::lower_bound(begin, end, tolcrit, predicate)
which ultimately returns the first position in [begin, end) for
which
predicate(*iter, tolcrit)
is false. Using predicate = std::greater<>{} thus determines the
first position in the sequence for which the elements is less than
or equal to 'tolcrit'. Similarly, a predicate equivalent to '<='
returns the first position for which the elements is strictly
greater than 'tolcrit'.
Add a set of unit tests to demonstrate and exercise the new feature.
This commit switches the previous interpretation of notionally zero
relative permeability in Flow's .INIT-file output. We now treat all
relative permeability values less than *or equal to* TOLCRIT as
zero.
This change is for increased ECLIPSE compatibility.
This is a pure API change. The TOLCRIT value is not yet used as
part of determining the critical saturations.
While here, also add a unit test for getRawTableEndPoints() and
update the existing sat-func property unit tests to explicitly pass
TOLCRIT = 0 in preparation of adding actual TOLCRIT support.
This commit requires that the callers of satfunc::init() calculate
the raw table end-points. That, in turn, enables callers to cache
those end-point values to avoid repeated calculations.
Add a new member, m_rtep, to FieldProps to act as such a cache to
take advantage of the new ability.