Commit Graph

14 Commits

Author SHA1 Message Date
Bård Skaflestad
14a63a4636 Synchronise Face-Area Fractions Between All Processes
We need a global view of face-area fractions if aquifer connections
happen to be shared between processes.  Add a new helper function,

    BlackoilAquiferModel::computeConnectionAreaFraction()

that performs a collective operation to compute the total face areas
and then defers to the local aquifer objects to compute their face
area fractions.

While here, also split the initialisation of analytic aquifers into
two parts, one for the face area and connection mappings, and one
for the connection depths.  Run the former as part of the object
constructor and the latter as part of 'initQuantities()'.  This
ensures that we can computeConnectionAreaFraction() for all analytic
aquifers before assigning solution quantities from the restart file.
2023-05-25 09:50:51 +02:00
Bård Skaflestad
5586ce63a0 Calculate Local Face Area Fraction for Aquifer's Connections
This is in preparation of reinitialising the total produced volume
from the constant flux aquifer from the restart file in the case
that the aquifer's connections are split across multiple MPI ranks.
2023-05-25 09:50:51 +02:00
Bård Skaflestad
f25d204281 Tag Unused Parameter as Maybe_Unused
Noted by [at]akva2
2023-03-10 11:36:11 +01:00
Bård Skaflestad
7abfdc52e0 Refactor Construction of Analytic Aquifer Objects
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()
2023-03-09 18:04:55 +01:00
Atgeirr Flø Rasmussen
c9ba0afea3 Silence warnings: struct/class, missing override. 2023-03-03 10:12:46 +01:00
Arne Morten Kvarving
da4784b314 AquiferConstantFlux: add restart serialization support 2023-02-22 14:41:07 +01:00
Arne Morten Kvarving
9418110d3e AquiferConstantFlux: mark method override 2023-02-22 14:41:07 +01:00
Arne Morten Kvarving
6073af784d AquiferConstantFlux: add missing includes 2023-02-22 14:41:07 +01:00
Kai Bao
7a67b16c3e addressing review comments for PR OPM/opm-simulators#4429 2023-02-21 15:27:05 +01:00
Kai Bao
73dc31a7a5 updating AquiferConstantFlux with AQUFLUX
not recreating new instances to avoid unnecessary cost from constructor.
2023-02-21 13:20:36 +01:00
Kai Bao
71119b6e42 WIP in making AQUFLUX running in parallel. 2023-02-21 13:20:36 +01:00
Kai Bao
7bd1cd9aa1 following the AQUFLUX design change from opm-common 2023-02-21 13:20:36 +01:00
Kai Bao
9a0ea0cb97 WIP in adding summary output for AQUFLUX aquifers
FAQR and FAQT are not working properly yet.
2023-02-21 13:20:36 +01:00
Kai Bao
248f6b73d9 WIP of supporting AQUFLUX from simulator side 2023-02-21 13:20:36 +01:00