In combination with the relevant changes in opm-common this
prevent flow in binary Linux packages from having a timestamp in the
executable that changes with every rebuild.
With the changes in opm-common one can now set the variable
OPM_BINARY_PACKAGE_VERSION to a meaningful version string (Debian
11.2: 2021.10-4). If that is done and flow is built from tarballs it
will now not have a time stamp and print the package version to the
PRT file. E.g.
Flow Version = 2021.10 (Debian 11.2: 2021.10-1)
Instead of always using site-packages we query the sitepackages path
from Python. If it matches dist-packages then we use dist-packages if
we install below /usr, otherwise site-packages is used.
This will also make sure that the Python files end up in the same
location as for the ones of opm-common. This should make using them
easier.
Refer to opm-common/pull #2971. In order to use the new constructor
proposed in that PR, the constructor must now be passed a boolean
variable signalling if gaslift is active.
This commit switches the debug file's records of "failed" bubble and
dew point pressure calculations from a non-unique list of linearised
Cartesian indices to a unique list of (1-based) (I,J,K) tuples.
This format is hopefully easier to read for humans.
Thanks to [at]blattms for suggesting the gatherv() helper function
which greatly simplifies the communication pattern.
Example from selected time steps in a real field case with Cartesian
dimensions 137-by-236-by-58:
- Original
Finding the dew point pressure failed for 2 cells [1467066, 1467066]
Finding the dew point pressure failed for 8 cells [1467063, 1467063, 1467066, 1467066, 1467066, 1467066, 1467066, 1467066]
- This commit
Finding the dew point pressure failed for 1 cell [(71,89,46)]
Finding the dew point pressure failed for 2 cells [(68,89,46), (71,89,46)]
This is a potentially expensive operation and so we should not run
it unless such values are actually needed for output purposes (e.g.,
inter-region flow summary vectors).
This commit ensures that compute inter-region flow rates on all
ranks and collect those on the I/O rank using CollectDataToIORank.
We add a trivial EclInterRegFlowMap data member to the communication
object. This data member only knows the pertinent FIP region array
names, but uses existing read/write support to collect contributions
from all ranks into this "global" object. We then pass this global
object on to the summary evaluation routine.
This commit adds a new grid traversal that computes fluxes-presently
surface level component fluxes-for all bulk connections on the
current MPI rank. We aggregate those fluxes, if applicable, into a
container for inter-region flows, but this support could be extended
to capturing the full 3D vector flow rates for restart output if
needed.
This commit introduces a new helper class
Opm::EclInterRegFlowMapSingleFIP
that wraps a vector of
Opm::EclInterRegFlowMapSingleFIP
along with the associate array names (e.g., "FIPNUM" and any
additional "FIP*" arrays). We implement the same operations as the
*SingleFIP type and simply loop over the internal accumulators to
affect the operations.
Add unit tests to exercise the new class, including simulating
multiple MPI ranks that are communicated to a single I/O rank for
summary output purposes.