Simulator programs and utilities for automatic differentiation.
Go to file
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
bin Add HIP support for AMD GPUs 2024-05-06 15:56:53 +02:00
doc Update manpage for release 2023-11-09 15:34:20 +01:00
examples Move opm/core/props to opm/simulators/utils 2024-06-25 12:22:09 +02:00
flow Merge pull request #5226 from akva2/avoid_alu_poly 2024-03-11 12:35:26 +01:00
flowexperimental FlowExp: spring cleaning 2024-04-25 08:50:16 +02:00
jenkins adjust jenkins script and buildsystem 2022-12-01 14:10:43 +01:00
opm/simulators Add MPI Support to Saturation Function Consistency Checks 2024-06-28 11:04:53 +02:00
python using one day time step for SPE1CASE1a/SPE1CASE1.DATA 2024-06-19 13:42:55 +02:00
tests Add MPI Support to Saturation Function Consistency Checks 2024-06-28 11:04:53 +02:00
.clang-format removing the duplicated AlignAfterOpenBracket entries in .clang-format 2023-08-08 13:18:51 +02:00
.gitignore Add build/ to .gitignore 2020-04-22 13:22:54 +02:00
CHANGELOG.md Added entries to changelog concerning 2019.10 release 2019-10-29 13:27:07 +01:00
CMakeLists_files.cmake Add MPI Support to Saturation Function Consistency Checks 2024-06-28 11:04:53 +02:00
CMakeLists.txt Add MPI Support to Saturation Function Consistency Checks 2024-06-28 11:04:53 +02:00
compareECLFiles.cmake Add tests that compare runs using the ACTIONX keyword to those that use the PYACTION keyword 2024-04-03 16:05:48 +02:00
CTestConfig.cmake cdash: update dropsite 2015-11-11 16:50:25 +01:00
dune.module Version bump to 2024.10-pre 2024-04-25 12:59:19 +02:00
LICENSE Add LICENSE File 2021-03-30 10:41:18 +02:00
opencl-source-provider.cmake OpenclKernels: template Scalar type 2024-05-24 14:09:11 +02:00
opm-simulators-prereqs.cmake Add HIP support for AMD GPUs 2024-05-06 15:56:53 +02:00
parallelRestartTests.cmake Merge pull request #4667 from akva2/no_adap_timestep_flag_in_driver 2023-05-31 21:37:51 +02:00
parallelTests.cmake Activate Regression Tests for Region Vectors in Field UDQs 2024-04-16 10:40:53 +02:00
pyactionComparisons.cmake Merge pull request #5365 from lisajulia/feature/pyAction-insert-kw-WECON-WTEST 2024-05-27 10:45:15 +02:00
README.md Remove obsolete information from the README 2020-03-13 11:23:35 +01:00
regressionTests.cmake Remove the MOD4_GRP regression test 2024-06-16 14:02:23 +02:00
restartTests.cmake rename EclEnableDriftCompensation parameter to EnableDriftCompensation 2024-03-05 20:36:41 +01:00

Open Porous Media Simulators and Automatic Differentiation Library

CONTENT

opm-simulators contains simulator programs for porous media flow. The most important (and tested) part is the Flow reservoir simulator, which is a fully implicit black-oil simulator that also supports solvent and polymer options. It is built using automatic differentiation, using the local AD class Evaluation from opm-material.

LICENSE

The library is distributed under the GNU General Public License, version 3 or later (GPLv3+).

PLATFORMS

The opm-simulators module is designed to run on Linux platforms. It is also regularly run on Mac OS X. No efforts have been made to ensure that the code will compile and run on windows platforms.

REQUIREMENTS

opm-simulators requires several other OPM modules, see http://opm-project.org/?page_id=274. In addition, opm-simulators requires Dune and some other software to be available, for details see https://opm-project.org/?page_id=239.

DOWNLOADING

For a read-only download: git clone git://github.com/OPM/opm-simulators.git

If you want to contribute, fork OPM/opm-simulators on github.

BUILDING

See build instructions at http://opm-project.org/?page_id=36

DOCUMENTATION

Efforts have been made to document the code with Doxygen. In order to build the documentation, enter the command

make doc

in the topmost directory.

REPORTING ISSUES

Issues can be reported in the Git issue tracker online at:

https://github.com/OPM/opm-simulators/issues

To help diagnose build errors, please provide a link to a build log together with the issue description.

You can capture such a log from the build using the `script' utility, e.g.:

LOGFILE=$(date +%Y%m%d-%H%M-)build.log ;
cmake -E cmake_echo_color --cyan --bold "Log file: $LOGFILE" ;
script -q $LOGFILE -c 'cmake ../opm-core -DCMAKE_BUILD_TYPE=Debug' &&
script -q $LOGFILE -a -c 'ionice nice make -j 4 -l 3' ||
cat CMakeCache.txt CMakeFiles/CMake*.log >> $LOGFILE

The resulting file can be uploaded to for instance gist.github.com.