In particular, check that
1. Number of MS wells <= WSEGDIMS(1)
2. Number of segments per well <= WSEGDIMS(2)
3. Number of branches per well <= WSEGDIMS(3)
for all report steps in the simulation run.
Example diagnostic message of a case that violates limits 2 and 3:
Error: Problem with keyword WSEGDIMS
In CASE.DATA line 60
The case has a multi-segmented well with 246 well segments, but at most 200 are allowed in WSEGDIMS.
Please increase item 2 of WSEGDIMS to at least 246
Error: Problem with keyword WSEGDIMS
In CASE.DATA line 60
The case has a multi-segmented well with 105 lateral branches, but at most 5 are allowed in WSEGDIMS.
Please increase item 3 of WSEGDIMS to at least 105
these constants are known at compile time.
as a bonus, this also quells warnings
emitted by infer due to it not seeing through
the implicit lambda captures
This commit adds sanity checking to the cell references of block
level summary vectors (e.g., BPR or BGSAT). If the summary vector
references a cell that's outside the models declared dimensions we
issue a warning and ignore that particular summary vector request.
That way, they could become reusable for other keywords and we can
exploit the commonality between MAXWELLS and MAXGROUPS. Moreover,
we can reduce the visual clutter of the body of each checking
function and fix some singular/plural mismatches in the diagnostic
messages.
The [IR]SEG and ILB[RS] arrays must be able to accommodate the
maximum number of segments and branches used in the run. This
commit incorporates the dynamic maximum sizes. If those sizes
exceed the maximum values entered in WSEGDIMS, then the resulting
restart file will not be fully compatible with other simulation
software.
This commit adds the expected behaviour for all-defaulted records in
ROCK, provided the all-defaulted records are not the first of the
keyword. Similarly to, e.g. PVTW, all-defaulted records are treated as
copies of the immediately preceding record.
In other words, given
ROCK
-- REF. PRES COMPRESSIBILITY
280.000 5.6E-5 /
/
the second record is supposed to be a copy of the first.
this went unnoticed since there are no UDQDefines in the pre-simulation
Schedule broadcast for parallel. however it causes issues for serialized
restarts
This is done by:
- splitting the catch(std::exception) in KeywordHandlers.cpp
in two and catching std::logic_error separately,
- not adding "Internal error" in the OpmInputError constructor
taking std::exception.
In addition, two possible user errors related to mixing groups
and wells as children of a single group have been changed to
std::runtime_error.