This commit adds support for outputting the productivity index of
a well's preferred phase at the well and connection levels to the
summary file (keywords 'WPI' and 'CPI').
Update unit tests accordingly.
This commit switches to getting the output files' connection
transmissibility factor from Opm::data::Connection instead of
Opm::Connection. This is in preparation for implementing the WELPI
feature, in which the CTFs are occasionally adjusted based on the
dynamic simulation state.
This commit adds an evaluation function for the GPR summary vector.
We assume that the actual value is calculated elsewhere and passed
in unchanged from the caller of Summary::eval(). We therefore need
only convert the value to output units and hook this procedure up to
the table of known output functions.
Add a simple unit test for demonstration.
This commit adds a level of indirection to the existing group-level
data (active controls and guiderates), and adds a new 'NodeData'
level to the 'data::' protocol for transporting values from the
simulator to the output layer.
Update all call sites and users accordingly.
This commit adds support for outputting the guiderate summary
vectors
[GW][OGWV]PGR, [GW][GW]IGR
under the assumption that the values are fully calculated at another
level and that we therefore only need to extract the numerical
values and convert the rate units to output conventions. We assume
that such values are communicated to the summary output layer by
means of a 'GuideRateValue' object.
The assumption of values already being calculated leads to a small
change in the 'need_wells()' function. We're now able to exclude
guiderate values at the group level from those vectors that require
setting up a well vector. This is a (tiny) performance improvement.
This commit adds a level of indirection to the current per-group
summary quantities that is directly assigned by the simulator. In
particular, introduce a new structure named
GroupData
that contains a 'GroupConstraints' object and make the per-group
values into 'map<string, GroupData>' rather than the current
'map<string, GroupConstraints>'. This is in preparation of adding
support for reporting group-level production/injection guiderates
(Gx[IP]GR) to the summary file.
Update tests and APIs accordingly.
Change polymer production output from volume -> mass
Polymer injection rates are read from the simulator and not computed based on the water rate and the polymer injection concentration given in the schedule
This outputs a numeric code, an integer value, for all configured
wells at all times and enables more visual inspection of how the
wells' active controls change over time--either in response to
explicit target modes in the input or as a result of limits becoming
active.
Note that due to the fall-back option of selecting the input value
if no dynamic value is available, we must ensure that the test code
does not specify well types (producer/injector) that conflict with
the keywords used in the backing data set. Update the relevant
tests accordingly.
This commit introduces a new protocol for communicating a well's
active constraint (i.e., its current target control mode) between
the running simulator and the restart file. In particular, we add a
new type
Opm::data::CurrentControl
whose data members indicate if the well is a producer or injector
and, depending on that state, carries information about the
pertinent active control mode. The 'prod' member should be defined
for producing wells and the 'inj' member should be defined for
injectors. Default-constructed objects of this type are 'invalid'
and not output to the restart file. Add a CurrentControl member to
the Opm::data::Well type to enable communicating this information
using existing restart interfaces.
Expand existing unit tests to exercise the new data member.
This commit switches the 'test_Summary' unit test to use class ESmry
for inspecting the values output to disk by 'out::Summary'. As a
consequence, we are not able to verify units of measure for the
parameters, at least not for the time being. Moreover, class ESmry
exclusively uses the "i,j,k" sub-key for block-related parameters so
switch those to reference the IJK identifiers.
Finally, as class ESmry currently does not support reading separate
(multiple) summary files, switch the input decks to generate unified
output.