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 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.
When handling the COMPSEGS keyword the connections are updated with segment
number and the segments are updated with total perforated length. The new
Compsegs::processCOMPSEGS() function will create new updated copies of both
WellSegments and WellConnections.
Exercises the initializers for SW{L,CR,U}, SO{W,G}CR, SG{L,CR,U}, as
well as the function values KRW, KRWR, KRG, KRGR, KRO, KRORW, KRORG
and capillary pressure function values PCW and PCG.
Example data from region one (1) of
opm-tests/model1/include/sattab_basemod1.sattab
Example phrased both as family I (S*OF) and as family II (S*FN, SOF3).
The RawString class is introduced as a string which can hold the literals '*',
'/' and '''. The RawString class is used to hold the content of UDQ and ACTIONX
keywords.