opm-simulators/opm/simulators/utils
Bård Skaflestad 0c71d0701c Add MPI Support to Saturation Function Consistency Checks
This commit adds a new public member function

    SatfuncConsistencyChecks<>::collectFailures(root, comm)

which aggregates consistency check violations from all ranks in the
MPI communication object 'comm' onto rank 'root' of 'comm'.  This
amounts to summing the total number of violations from all ranks and
potentially resampling the failure points for reporting purposes.

To this end, extract the body of function processViolation() into a
general helper which performs reservoir sampling and records point
IDs and which uses a call-back function to populate the check values
associated to a single failed check.  Re-implement the original
function in terms of this helper by wrapping exportCheckValues() in
a lambda function.  Extract similar helpers for numPoints() and
anyFailedChecks(), and add a new helper function

    SatfuncConsistencyChecks<>::incorporateRankViolations()

which brings sampled points from an MPI rank into the 'root's
internal data structures.

One caveat applies here.  Our current approach to collecting check
failures implies that calling member function reportFailures() is
safe only on the 'root' process in a parallel run.  On the other
hand functions anyFailedChecks() and anyFailedCriticalChecks() are
safe, and guaranteed to return the same answer, on all MPI ranks.

On a final note, the internal helper functions are at present mostly
implemented in terms of non-owning pointers.  I intend to switch to
using 'std::span<>' once we enable C++20 mode.
2024-06-28 11:04:53 +02:00
..
satfunc Add MPI Support to Saturation Function Consistency Checks 2024-06-28 11:04:53 +02:00
BlackoilPhases.cpp Move opm/core/props to opm/simulators/utils 2024-06-25 12:22:09 +02:00
BlackoilPhases.hpp Move opm/core/props to opm/simulators/utils 2024-06-25 12:22:09 +02:00
ComponentName.cpp ComponentName: add compile unit 2023-06-30 11:51:08 +02:00
ComponentName.hpp ComponentName: add compile unit 2023-06-30 11:51:08 +02:00
compressPartition.cpp Enable Loading Parallel NLDD Partition From File 2023-11-17 17:39:17 +01:00
compressPartition.hpp Enable Loading Parallel NLDD Partition From File 2023-11-17 17:39:17 +01:00
DamarisKeywords.cpp Other small additions from github comments and removal of compile time logic that checks for ParaView and Python - makes code more readable and alows use of Damaris libraries with differing compiled in backends to be swapped without need for recompiling opm-simulators 2024-06-05 17:26:34 +02:00
DamarisKeywords.hpp Other small additions from github comments and removal of compile time logic that checks for ParaView and Python - makes code more readable and alows use of Damaris libraries with differing compiled in backends to be swapped without need for recompiling opm-simulators 2024-06-05 17:26:34 +02:00
DamarisOutputModule.cpp cosmetics and header cleanups in damaris classes 2024-01-10 14:16:02 +01:00
DamarisOutputModule.hpp cosmetics and header cleanups in damaris classes 2024-01-10 14:16:02 +01:00
DamarisVar.cpp DamarisVar: remove unused base class DamarisVarBase 2024-01-30 09:58:37 +01:00
DamarisVar.hpp DamarisVar: remove unused base class DamarisVarBase 2024-01-30 09:58:37 +01:00
DeferredLogger.cpp avoid include in header 2021-06-18 11:43:54 +02:00
DeferredLogger.hpp clean up after review 2021-10-05 13:07:52 +02:00
DeferredLoggingErrorHelpers.hpp Only indicate problems for exceptions whem updating well potentials, 2024-06-12 14:25:37 +02:00
gatherDeferredLogger.cpp Replacing use of MPI_COMM_WORLD with a variable communicator. 2021-10-05 13:07:52 +02:00
gatherDeferredLogger.hpp clean up after review 2021-10-05 13:07:52 +02:00
GridDataOutput_impl.hpp GridDataOutput: use implicit std::string constructor 2024-01-30 13:19:13 +01:00
GridDataOutput.cpp fixed: build with dune-fem 2.9 2024-05-16 10:58:08 +02:00
GridDataOutput.hpp GridDataOutput: avoid stringstream member 2024-01-30 13:19:12 +01:00
HDF5File.cpp consistently use std::size_t 2023-08-15 09:32:10 +02:00
HDF5File.hpp HDF5File: enable gzip compression 2023-02-24 11:56:17 +01:00
HDF5Serializer.cpp HDF5Serializer: add translation unit 2024-01-29 10:00:48 +01:00
HDF5Serializer.hpp HDF5Serializer: add translation unit 2024-01-29 10:00:48 +01:00
initDamarisXmlFile.cpp update after pull request comments; addition of OUTPUTDIR variable to Damaris XML configuration 2024-05-17 17:36:18 +02:00
moduleVersion.cpp Added missing include of config.h in cpp files. 2022-10-12 15:28:38 +02:00
moduleVersion.hpp Add build time to flow startup banner 2020-03-31 08:42:24 +02:00
MPIPacker.cpp add extra instantation for bitset 2023-11-09 11:02:52 +01:00
MPIPacker.hpp changed: split out serialization in separate class 2022-09-16 13:11:45 +02:00
MPISerializer.hpp changed: move ebos/eclmpiserializer.hh to opm/simulators/utils/MPISerializer.hpp 2024-01-23 10:51:32 +01:00
ParallelCommunication.hpp minimum dune version required is now 2.7 2023-04-12 09:41:23 +02:00
ParallelEclipseState.cpp Add Procedure for Calculating Basic FIP Region Statistics 2024-04-05 17:06:13 +02:00
ParallelEclipseState.hpp Add Procedure for Calculating Basic FIP Region Statistics 2024-04-05 17:06:13 +02:00
ParallelFileMerger.cpp cosmetics 2023-02-01 15:42:04 +01:00
ParallelFileMerger.hpp cosmetics 2023-02-01 15:42:04 +01:00
ParallelNLDDPartitioningZoltan.cpp Make Compress/Count Partition Vector Helper Generally Available 2023-11-17 09:17:46 +01:00
ParallelNLDDPartitioningZoltan.hpp Make Zoltan-Based Domain Partitioning MPI Aware 2023-11-15 13:31:41 +01:00
ParallelRestart.cpp changed: move ebos/eclmpiserializer.hh to opm/simulators/utils/MPISerializer.hpp 2024-01-23 10:51:32 +01:00
ParallelRestart.hpp changed: split ParallelRestart.hpp/cpp in two bits 2022-09-08 13:36:51 +02:00
ParallelSerialization.cpp Distribute SummaryConfig Objects With eclBroadcast 2024-03-22 16:53:51 +01:00
ParallelSerialization.hpp fix: serial build after PR #3671 2021-11-09 15:57:24 +01:00
PartiallySupportedFlowKeywords.cpp Tag 'BASIC=0' as allowed in RPTRST 2024-05-06 15:17:08 +02:00
PartiallySupportedFlowKeywords.hpp Add keyword validation using a predicate function 2021-06-14 18:10:36 +02:00
phaseUsageFromDeck.cpp Move opm/core/props to opm/simulators/utils 2024-06-25 12:22:09 +02:00
phaseUsageFromDeck.hpp Move opm/core/props to opm/simulators/utils 2024-06-25 12:22:09 +02:00
PressureAverage.cpp changed: move helpers for calculation pressure averages to separate compile unit 2023-08-14 11:44:32 +02:00
PressureAverage.hpp changed: move helpers for calculation pressure averages to separate compile unit 2023-08-14 11:44:32 +02:00
PropsDataHandle.hpp add missing include 2024-02-06 10:41:36 +01:00
readDeck.cpp Do NOT delete files recursively - causes massive problems if outputdir is not specified.. 2024-06-14 13:36:15 +02:00
readDeck.hpp Add parameter InputSkipMode to parameterise the behvaviour of the SKIP100 and SKIP300 keywords 2024-05-03 09:28:14 +02:00
SerializationPackers.cpp added: file for extra serialization packers 2023-02-13 17:53:05 +01:00
SerializationPackers.hpp added: file for extra serialization packers 2023-02-13 17:53:05 +01:00
SetupZoltanParams.cpp setupZoltanParams: avoid use of sstream 2023-01-02 15:24:03 +01:00
SetupZoltanParams.hpp added: command line option for zoltan customization 2022-09-16 13:51:29 +02:00
UnsupportedFlowKeywords.cpp Enable WTMULT as an Input Operation 2024-06-06 09:14:01 +02:00
UnsupportedFlowKeywords.hpp changed: put unsupported keywords in separate compile unit 2021-05-12 14:29:33 +02:00
VectorVectorDataHandle.hpp Get rid deprecation warning for newer DUNE versions. 2022-10-14 21:29:09 +02:00