This commit adds new nodes pertaining to the inter-region flows to
the summary configuration keyword list. We combine the pair of
region IDs into a single 'NUMS' value as part of creating the node.
We also split inter-region nodes into a "supported" and an
"unsupported" set, with the former containing the oil, gas, and
water keywords.
While here, also correct a misprint in a diagnostic message which I
noticed as part of developing the new feature.
This commit introduces new helper functions
int EclIO::combineSummaryNumbers(int, int)
tuple<int, int> EclIO::splitSummaryNumber(int)
that know about the relation
combined = n1 + 32768*(n2 + 10)
This relation is typically used to combine one-based region IDs for
inter-region flows into a single 'NUMS' entry in the summary file.
This commit adds support for recognizing additional inter-region
flow rate/cumulatives at the parser level. In particular, we now
have input support for the E300-compatible keyword strings
R[OGW]F(R[-+]?|T[-+])
(e.g., ROFR, RGFT-, or RWFR+). This, in turn, ensures that the
parsing process does not abruptly terminate when encountering such
summary keywords. This is also a necessary step towards supporting
actually calculating those summary vectors, but we presently do not
support doing so.
Expand the minimum, input-reading only, corresponding unit test to
include the oil, gas, and water varieties of the new keyword strings.
While here, also properly classify the per-phase gas cumulatives
RGFTG, RGFTL
as inter-region summary vectors. These were inadvertently listed as
per-region vectors (i.e., in the REGION_PROBE instead of in the
REGION2REGION_PROBE).
This commit ensures that the field, group, and well level cumulative
production curves of solution/free oil and gas are continuous in a
restarted simulation run.
Thanks to Torbjørn Skille for identifying the appropriate locations
in XGRP/XWEL for outputting these items.
This is a quick fix.
The problem that occurs is the following. After loadbalancing the
FieldPropsManager only has a non-nullptr to the FieldProperties on
the process with rank=0. Therefore most of the calls to it will
segfault. This has not been problem before changeset
2921838895. We did not make any calls to e.g.
FieldProperties::apply_schedule_keywords during a simulation.
Now we do via [eclproblem.hh#L1021-L1022](/OPM/opm-simulators/blob/3e4e62bc4f6f6f8a02eb2d2e4976dc2e2d956313/ebos/eclproblem.hh#L1021-L1022))
The maximum supply of lift gas and/or the maximum total gas flow
rate of a group may be defaulted in the context of lift gas
optimisation. In that case, the std::optional<> objects will be
empty and we must not access the contained object through the
value() member function. We output the sentinel value "-10" in this
case.
This is more self-documenting that numeric item indices. While
here, also switch to constructing the EQUIL record in place instead
of forming a temporary and moving it into the vector.