In particular, split the 'static' aquifer object initialisation
of member function 'init()' into a new helper function
initializeStaticAquifers()
This is in preparation of adding a similar function to handle
dynamic aquifer object initialisation from a restart file. To that
end, also add a new member function
createDynamicAquifers(episode_index)
containing the current implementation of beginEpisode(). Creating
the dynamic objects from a restart file then amounts to calling this
function with a different 'episode_index'. As another aid to
maintainability, add a new templated member function
createAnalyticAquiferPointer()
which forms 'unique_ptr<AquiferInterface>' objects for every known
type of analytic aquifer. This, in turn, requires reordering the
parameters of the AquiferConstantFlux constructor to match those of
the existing Fetkovich and Carter-Tracy types.
Finally, split the calculation of the constant flux aquifer's total
flux rate out to a new helper function
AquiferConstantFlux::totalFluxRate()
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 adds a new member function,
initFromRestart()
to the EclBaseAquiferModel and the BlackoilAquiferModel. The former
does nothing, the latter calls AquiferInterface::initFromRestart()
on the contained analytic aquifer objects.