This commit adds a new helper class,
Opm::data::TypeSpecificData
which holds type-specific sub-structures for Carter-Tracy,
Fetkovich, and Numerical aquifers. We implement this facility in
terms of a std::variant<> of simple structures. In turn, use the
type-specific data for numerical aquifers to fill in the initial
aquifer cell pressures where not available in the input data.
This commit introduces 'MessageBuffer' read and write operations for
the CarterTracyData and FetkovichData structures in preparation of
communicating these substructures from parallel processes to the IO
rank. This is foundational work for retrieving more of the dynamic
quantities pertaining to aquifers from the simulation layer.
This commit adds support for calculating and outputting the
CT-specific summary vectors "AAQTD" (dimensionless time, real time
divided by aquifer's time constant) and "AAQPD" (dimensionless
pressure-influence function evaluated at dimensionless time).
This commit adds a new data member
Well::Status dynamicStatus
to the data::Well object. This member records the simulator's
notion of a well's open/shut/stop status and is especially needed to
support WECON-type status changes once the simulator maintains both
open and shut wells.
While here, also change multiple summary primitives to not look up
the same values repeatedly.
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 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 introduces datamembers of type
Opm::data::GuideRateValue
to the Opm::data::Well and Opm::data::GroupData structures.
Collectively, these datamembers enable transporting guiderate values
calculated elsewhere--e.g., in the opm-simulators module--to the
output layer for final processing and output to the summary and/or
the restart files.
We support outputting both production and injection guiderate values
at the group level. Guiderate values at the well level are
interpreted as production or injection according to the well type.
This commit introduces a container
Opm::data::GuideRateValue
that packages a 'std::array' and 'std::bitset' into that array.
This container is intended as the main vehicle for transporting
per-phase guiderate values (Oil, Gas, Water, and Resvoir Voidage
Volume supported initially) calculated by the simulator to the
output layer. We support the serialization operations read and
write in order to plug into the collective communications layer used
in the simulator.
Add unit tests to exercise the new container.
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.
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.
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 expands the basic aquifer restart support to also
include essential values for the Fetkovich analtic model. In
particular, we now also load the initial aquifer pressure and the
initial aquifer volume directly from the SAAQ restart vector, but
only if we know that the aquifer in question is of Fetkovich type.
This adds a basic protocol for retrieving simple scalar data for
each analytic aquifer, specifically from XAAQ. At the moment we
only support retrieving the aquifer pressure and the total produced
liquid volume from the aquifer and into the reservoir model.