This commit renames various data members of the *_data structures to
aid the reader who may not be intimately familiar with the details
of the analytic models. We switch the 'initial_pressure' into an
optional<double> instead of a pair<bool,double> with 'std::nullopt'
representing defaulted initial aquifer pressure values in the input
file.
We also add logic and private data members to compute/store aquifer
time constants, mass density of water, water viscosity and, in the
case of Carter-Tracy aquifers, also the influx constant 'beta'.
This centralises the requisite logic which reduces the risk of
subtle errors.
In the case of defaulted initial pressures, we support deferred
calculation of aquifer properties until the equilibrium pressure is
known. Users are then expected to assign a value to the initial
pressure members and call 'finishInitialisation()' to derive those
properties.
While here, also switch to using raw string literals instead of
concatenated and escaped literals for the embedded deck strings in
the ParserTests.
When forming restart arrays for numerical aquifers (IAQN and RAQN)
we need to know the total number of records in the input AQUNUM
keyword as well as the record ID of each individual record. This
commit adds a tracking mechanism for this information.
While here, also add unit tests that verify that we've correctly
interpreted the AQUNUM records.
This commit adds two helper functions
std::vector<int> analyticAquiferIDs(const AquiferConfig&)
std::vector<int> numericAquiferIDs(const AquiferConfig&)
which return the numeric IDs of the model's analytic and numeric
aquifers respectively. These are useful for configuring aquifer
summary keywords of the form
AAQR
/
that do not list individual aquifer IDs and for identifying issues
in the input file when a summary keyword that does list its aquifer
IDs refers to an aquifer of incorrect category (e.g., ID of numeric
aquifer in an analytic aquifer summary keyword).
While here, also add more unit test coverage to the AquiferConfig
object. In particular, add a unit test that includes aquifers at
all.
generate all the connections specified in the deck records first, then
filter out the wrong ones using processed grid later. The refactoring is
to avoid using the Deck explicitly in opm-grid.