20#ifndef OPM_SATFUNC_CONSISTENCY_CHECK_MODULE_HPP
21#define OPM_SATFUNC_CONSISTENCY_CHECK_MODULE_HPP
23#include <opm/simulators/utils/ParallelCommunication.hpp>
34 template <
typename Scalar>
35 struct EclEpsScalingPointsInfo;
44 template <
typename Scalar>
186 void addCheck(std::unique_ptr<Check> check);
251 using RandomBitGenerator = std::minstd_rand;
254 struct ViolationSample
259 std::vector<std::size_t> count{};
266 std::vector<std::size_t> pointID{};
275 std::vector<Scalar> checkValues{};
284 using ViolationCollection = std::array
291 std::string pointName_{};
294 std::size_t numSamplePoints_;
305 std::vector<typename std::vector<Scalar>::size_type> startCheckValues_{};
310 ViolationCollection violations_{};
314 std::vector<std::unique_ptr<Check>> battery_{};
322 std::unique_ptr<RandomBitGenerator> urbg_{};
341 const Parallel::Communication& comm,
349 void buildStructure(ViolationSample&
violation);
383 template <
typename PopulateCheckValues>
384 void processViolation(ViolationSample&
violation,
386 const std::size_t pointID,
405 const std::size_t pointID);
420 void incorporateRankViolations(
const std::size_t* count,
421 const std::size_t* pointID,
422 const Scalar* checkValues,
432 std::size_t getSampleIndex(
const std::size_t sampleSize);
436 void ensureRandomBitGeneratorIsInitialised();
445 std::vector<std::size_t>::size_type
446 violationPointIDStart(
const std::size_t
checkIx)
const;
458 typename std::vector<Scalar>::size_type
459 violationValueStart(
const std::size_t
checkIx,
494 void writeTabulatedReportSample(
const std::size_t
nValueChar,
510 std::pair<std::vector<std::string>, std::string::size_type>
511 formatPointIDs(
const ViolationSample&
violation,
512 const std::size_t
checkIx)
const;
521 std::vector<std::string>
534 std::vector<std::size_t>
535 sortedPointIndices(
const ViolationSample&
violation,
536 const std::size_t
checkIx)
const;
550 std::size_t numPoints(
const ViolationSample&
violation,
551 const std::size_t
checkIx)
const;
580 return static_cast<typename ViolationCollection::size_type
>(level);
599 template <
typename Body>
618 template <
typename Body>
Call-back interface for an individual check.
Definition SatfuncConsistencyChecks.hpp:52
virtual std::string description() const =0
Descriptive textual summary of this check.
virtual ~Check()=default
Virtual destructor since class has virtual functions.
virtual void test(const EclEpsScalingPointsInfo< Scalar > &endPoints)=0
Run specific check against a set of saturation function end-points.
virtual bool isCritical() const =0
Whether or not this check is critical to the simulator's ability to run the case.
virtual void exportCheckValues(Scalar *exportedCheckValues) const =0
Get a linearised copy of the Scalar values involved in the check.
virtual std::string condition() const =0
Textual representation of the consistency condition.
virtual bool isViolated() const =0
Whether or not last set of end-points violated this particular check.
virtual std::size_t numExportedCheckValues() const =0
Number of Scalar values involved in the check.
virtual void columnNames(std::string *headers) const =0
Retrieve names of the exported check values.
Platform for running sets of consistency checks against collection of saturation function end-points.
Definition SatfuncConsistencyChecks.hpp:46
bool anyFailedCriticalChecks() const
Whether or not any checks failed at the Critical level.
Definition SatfuncConsistencyChecks.cpp:171
ViolationLevel
Severity level for consistency condition violation.
Definition SatfuncConsistencyChecks.hpp:107
@ NumLevels
Implementation helper. Must be last enumerator.
@ Critical
Consistency condition violated and we're not able to continue the run.
@ Standard
Consistency condition violated, but we're able to continue the run.
SatfuncConsistencyChecks & operator=(const SatfuncConsistencyChecks &rhs)=delete
Deleted assignment operator.
void resetCheckSet()
Clear current set of end-point checks.
Definition SatfuncConsistencyChecks.cpp:86
void checkEndpoints(const std::size_t pointID, const EclEpsScalingPointsInfo< Scalar > &endPoints)
Run current set of checks against a specific set of end-points.
Definition SatfuncConsistencyChecks.cpp:122
void addCheck(std::unique_ptr< Check > check)
Add specific check to in-progress check set.
Definition SatfuncConsistencyChecks.cpp:100
SatfuncConsistencyChecks(const SatfuncConsistencyChecks &rhs)=delete
Deleted copy constructor.
~SatfuncConsistencyChecks()=default
Destructor.
bool anyFailedStandardChecks() const
Whether or not any checks failed at the Standard level.
Definition SatfuncConsistencyChecks.cpp:165
std::function< std::string(std::size_t)> PointIDFormatCallback
Call-back function type for formatting a numeric end-point ID.
Definition SatfuncConsistencyChecks.hpp:125
SatfuncConsistencyChecks & setPointIDFormatCallback(const PointIDFormatCallback &formatPointID)
Replace formatting function for end-point IDs.
Definition SatfuncConsistencyChecks.hpp:174
void collectFailures(int root, const Parallel::Communication &comm)
Collect consistency violations from all ranks in MPI communicator.
Definition SatfuncConsistencyChecks.cpp:150
void finaliseCheckSet()
Commit current set of checks and build requisite internal support structures.
Definition SatfuncConsistencyChecks.cpp:109
std::function< void(std::string_view)> ReportRecordOutput
Call-back function type for outputting a single record of a consistency condition violation report.
Definition SatfuncConsistencyChecks.hpp:122
void reportFailures(const ViolationLevel level, const ReportRecordOutput &emitReportRecord) const
Generate textual summary output of all failed consistency checks at specific level.
Definition SatfuncConsistencyChecks.cpp:178
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilboundaryratevector.hh:37
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:242
Definition SatfuncCheckPointInterface.hpp:28