This commit switches to using the new 'typeData' interface for
representing type-specific aquifer data items. In particular we use
the new 'typeData.is<>()' and 'typeData.get<>()' member functions to
query and access the data that is specific to each aquifer type
(e.g., Carter-Tracy or numerical).
While here, also expand the reported data items for numerical
aquifers to one initial pressure value for each aquifer cell. This
is needed for restart purposes.
This commit switches to using the analytic aquifer's intrinsic water
properties (i.e., the mass density and the viscosity), and to get
the time constant from the *_data structure instead of calculating
this value with separate logic. Note that this switches to using a
single density value for the aquifer instead of separate density
values for each aquifer connection.
If the aquifer's initial pressure is defaulted we still compute an
equilibrated initial pressure value. We then use the *_data
structure's 'finishInitialisation()' member function to derive the
aforementioned PVT properties.
Finally, report these values in the aquifer type-specific sub
structures of data::AquiferData for restart output purposes.
This commit adds logic to communicate more dynamic aquifer values
between the simulation and I/O layers. In particular, we ensure
that we allocate the 'aquFet' and 'aquCT' substructures of the
dynamic aquifer data as appropriate and that we collect this
information on the I/O rank as part of the restart output process.
We furthermore make the 'ParallelRestart' facility aware of dynamic
aquifer data in preparation of loading these values from the restart
file.
This commit switches to using 'map<>::insert_or_assign()' as the
primary interface for collecting dynamic aquifer data. In turn,
this activates move semantics for the substructures and reduces the
number of times the data is copied.
Insert_or_assign requires the key, so provide this value--i.e., the
aquifer ID--as part of the AquiferInterface.
This commit adds a new member function,
AquiferInterface::initFromRestart()
that consumes a vector<data::AquiferData> constructed from
information in the restart file's SAAQ and XAAQ vectors. At the
moment, we use the initial aquifer pressure, the total produced
liquid volume and the current aquifer pressure at restart.
We implement the interface's member function in terms of the virtual
function
AquiferInterface::assignRestartData()
that must be overridden in derived classes.
Implement a trivial such function for Carter-Tracy aquifers, and a
function that only stores the current aquifer pressure for the
Fetkovich aquifer model.
Additionally, record whether or not the aquifer object was
initialised from a previous solution. If so, don't reset total
produce liquid volumes or aquifer pressures to their base values
from the model input file.