This commit generates the IAQN and RAQN restart vectors pertaining
to numeric aquifers. The arrays are sized according to the number
of records in the input AQUNUM keyword. RAQN is a mix of static and
dynamic information, including the cumulative total inflow volume of
water from the aquifer into the model. IAQN is exclusively static
information.
We add new members to 'AggregateAquiferData' and ensure that the
numeric aquifer arrays remain empty when no numeric aquifers exist
in the model. Add unit tests for these new arrays and update
existing unit tests to account for new dimension items.
This commit checks that gas lift is active before outputting a
positive value in INTEHEAD[EACHNC]. Unless gas lift is activated
through keyword LIFTOPT, that item in INTEHEAD must be zero.
This commit hooks the aquifer restart output facility (output arrays
{I,S,X}AAQ and {I,S,A}CAQ) up to the general "RestartIO" module. If
a simulation run uses analytic aquifers we construct an aquifer
output object at simulation start and store this in an optional<> in
the internal implementation object. Otherwise the optional holds
nullopt. We expand RestartIO::save() to take such an optional by
reference and aggregate/output aquifer information, directly after
the well information, if the optional holds a value. Update callers
accordingly.
This commit switches the INTEHEAD factory function to passing
dimensions related to aquifers by means of the 'AquiferDims'
structure. While here, also update description and names of a few
aquifer-related INTEHEAD items to reflect more recent understanding.
We support both Fetkovich and Carter-Tracy aquifers. We presently
output trivial values only in the 'ACAQ' (per-connection, double
precision elements), but otherwise assemble reasonable values for
many items.
We leverage the fact that the aquifer connections do not change
throughout the simulation run. The "Aggregate" API is therefore
constructed in such a way that most of the expensive operations
(e.g., mapping active cell IDs to their columnar counterparts)
happens once (in the constructor) and the per-aquifer operations are
performed for each restart output step. We intend that one aquifer
output object be constructed at the start of the simulation run, if
needed, and that this object will live until simulation shutdown.
The protocol for outputting an aquifer's active cell IDs to the
restart file requires that the cells be enumerated according to
their column. In particular, the aquifer's notion of a model's
active cells correspond to a cell ordering of the form
for (i = 0; i < Nx; ++i)
for (j = 0; j < Ny; ++j)
for (k = 0; k < Nz; ++k)
use(X(i, j, k))
instead of the common ordering, sometimes referred to as "natural
ordering"
for (k = 0; k < Nz; ++k)
for (j = 0; j < Ny; ++j)
for (i = 0; i < Nx; ++i)
use(X(i, j, k))
which is employed elsewhere.
This commit adds a special purpose mapping facility which will
translate active cell IDs from natural ordering to the columnar
enumeration. The facility is intentionally bare-bones because we
do not expect to use it outside of the restart writing code, and
only in a limited fashion within that context. We will however
consider adding more features if the need arises.
code improvement plus initial changes on test dataset
removed changes to test-dataset
changes to adapt to changes of Schedule object
Added test data set
changed test data - all in one DATA-file, changed serielizer - vector string
added unit test of INode data
first code that runs and outputs the INODE array
Added INODE and parts of IBRAN
added contributions for IBRAN and INOBR
added changes for output of RNODE
initial changes for RBRAN
Note: We're missing the 'LIQUID' option (integer value 4) since
Well::getPreferredPhase()
does not return that value.
Also, while here, remove the previously misattributed IWEL[15] item.
This item is the well's preferred phase, not the prediction control.
Finally, don't assign the active control mode to the history control.
That was a mistake.
- The NNC and EDITNNC keywords are internalized in the same class.
- The EDITNNC keyword operations are applied directly to the NNC keywords.
- The nnc vectors are ordered with cell1 < cell2 and ascending order.
- An api has been added to get the KeywordLocation from an NCC
- NNC/EDITNNC which is connected to inactive cell is ignored
With this commit the IWEL[ActWCtrl] is assigned a value independently of the
wells OPEN / SHUT status.
With this PR the index enum value Status is used instead of the previously used
item11. Also numerical constants are introduced for eclipse status values for
Shut, Stop, Open and Auto.