Simulator programs and utilities for automatic differentiation.
Go to file
Markus Blatt 7551229e77 Do a graceful exit instead of MPI_Abort for expected exceptions.
Instead of unconditionally issuing MPI_Abort if we encounter a fatal
exception, we try to test whether all processes have experienced this
exception and if this is the case just terminate nomally with a exit
code that signals an error. We still use MPI_Abort if not all
processes get an exception as this is the only way to make sure that
the program aborts.

This approach also works around issues in some MPI implementations
that might not correctly return the error.

Multiple messages like this are gone now:
```
--------------------------------------------------------------------------
MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD
with errorcode 1.

NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes.
You may or may not see output from other processes, depending on
exactly when Open MPI kills them.
--------------------------------------------------------------------------
[smaug.dr-blatt.de:129359] 1 more process has sent help message help-mpi-api.txt / mpi-abort
[smaug.dr-blatt.de:129359] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
```

Bu we still see something like this:
```
--------------------------------------------------------------------------
Primary job  terminated normally, but 1 process returned
a non-zero exit code. Per user-direction, the job has been aborted.
--------------------------------------------------------------------------
--------------------------------------------------------------------------
mpirun detected that one or more processes exited with non-zero status, thus causing
the job to be terminated. The first process to do so was:

  Process name: [[35057,1],0]
  Exit code:    1
--------------------------------------------------------------------------
```
2023-07-19 13:44:12 +02:00
doc Updated flow manpage. 2022-10-31 10:12:14 +01:00
ebos Hook New WBPn Calculation Up to Well Model 2023-07-10 13:42:46 +02:00
examples fixed: these fields are ROOT_ONLY 2023-04-24 09:57:40 +02:00
external/fmtlib Add inline fmtlib code in source tree 2020-09-28 11:01:13 +02:00
flow Add gaswater solvent 2023-05-26 16:24:38 +02:00
jenkins adjust jenkins script and buildsystem 2022-12-01 14:10:43 +01:00
opm Do a graceful exit instead of MPI_Abort for expected exceptions. 2023-07-19 13:44:12 +02:00
python changed: make the deck an implementation detail in Opm::readDeck 2022-11-24 13:00:38 +01:00
tests Add Parallel Calculation Support for WBPn/WPAVE 2023-07-07 15:01:05 +02:00
.clang-format Add flexible solver and preconditioner infrastructure. 2019-06-03 11:42:30 +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 Merge pull request #4745 from akva2/filtercake_separate_class 2023-07-07 16:51:23 +02:00
CMakeLists.txt Add Parallel Calculation Support for WBPn/WPAVE 2023-07-07 15:01:05 +02:00
compareECLFiles.cmake simplify cmake code for tuning tests 2023-07-03 09:05:45 +02:00
CTestConfig.cmake cdash: update dropsite 2015-11-11 16:50:25 +01:00
dune.module bump version to 2023.10-pre 2023-04-12 11:32:54 +02:00
LICENSE Add LICENSE File 2021-03-30 10:41:18 +02:00
opencl-source-provider.cmake Move opencl files to separate folder 2022-02-01 16:51:32 +01:00
opm-simulators-prereqs.cmake Add rocsparseSolver 2023-04-06 13:14:19 +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 adding regression tests for filtration cake model 2023-07-06 23:38:53 +02:00
README.md Remove obsolete information from the README 2020-03-13 11:23:35 +01:00
regressionTests.cmake Add tuning for WGRUPCON regression tests 2023-07-07 13:19:38 +02:00
restartTests.cmake Enable Restart Tests for Constant Flux Aquifers 2023-05-26 20:21:52 +02: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.