Commit Graph

267 Commits

Author SHA1 Message Date
Paul Egberts
797fdc278b water-gas ratio input and output plus simulator for salt precipitation and water evaporation 2022-03-01 20:52:43 +01:00
Tong Dong Qiu
6c8ada4cd2 Reduced header inclusion and updated comments 2022-02-03 10:42:22 +01:00
Paul Egberts
98c8e691c3 Allow for brine and precipitation/dissolution of salt 2022-01-14 11:46:40 +01:00
Bård Skaflestad
3317f10c4a
Merge pull request #3729 from goncalvesmachadoc/gaswater_brine
allow for gas-water + brine
2022-01-12 12:31:34 +01:00
Jose Eduardo Bueno
c7ac97e215 [OpenCL] Moves all OpenCL kernels to *.cl files.
Kernel files are located in opm/simulators/linalg/bda/opencl/kernels.
CMake will combine them for usage in
${PROJECT_BINARY_DIR}/clSources.cpp that becomes part of the library.
2021-12-22 12:43:18 +01:00
goncalvesmachadoc
7f320102c3 allow for gas-water + brine 2021-12-08 14:35:22 +01:00
Tor Harald Sandve
4f75d1ab8d Add gasoil + energy simulator
Useful when combining CO2STORE + THERMAL

This PR also fixes an issue with missing phases in computation of output temperature
2021-12-07 09:18:38 +01:00
Markus Blatt
64cdc95fac Added man pages for flow.
Generated using:

declare -A short_desc
short_desc['flow']='Eclipse compatible parallel reservoir simulator'
short_desc['ebos']='Eclipse compatible parallel reservoir simulator for research'
for key in "${!short_desc[@]}"; do
           help2man -h "-h" --version-string="2021.04" --no-discard-stderr -n "${short_desc[$key]}" -N $key >\
           $key.1
done

Gbp-Pq: Name 0002-Added-man-pages-for-flow-and-ebos.patch
2021-11-15 12:06:05 +01:00
Arne Morten Kvarving
2120cbf043 added: utility to broadcast multiple variables in one operation 2021-11-09 13:02:05 +01:00
Tong Dong Qiu
803a2ac2f4 Allow CMake to set CHOW_PATEL variables 2021-11-04 15:47:33 +01:00
Atgeirr Flø Rasmussen
5503e6ca06 Remove ISTLSolverEbosFlexible and flow_blackoil_dunecpr.
The class ISTLSolverEbos has all features of the removed class, and
is not much more complex. The flow_blackoil_dunecpr is the only
program using it, and is redundant.
2021-11-02 15:02:48 +01:00
Arne Morten Kvarving
7de50b94c7 changed: probe for cl/opencl.hpp and use if found
this to avoid a spam of warnings
2021-11-01 19:41:05 +01:00
Arne Morten Kvarving
39a94863a0 remove ebos 2021-11-01 13:08:40 +01:00
Atgeirr Flø Rasmussen
16eafcca04
Merge pull request #3649 from akva2/separate_flow_binaries
changed: build separate simulator binaries for flow
2021-11-01 13:07:07 +01:00
Arne Morten Kvarving
9395c74b3e changed: build separate simulator binaries for flow
this is very convenient during development.
we can then remove the FLOW_BLACKOIL_ONLY option,
as it is no longer needed - use the flow_blackoil binary instead.
however we need to keep this support in Main.hpp due to the python
bindings relying on it.
2021-11-01 09:31:09 +01:00
Markus Blatt
4de52a8d30 Use OpenCl's CL/cl2.hpp instead of CL/cl.hpp
We still request Standard version 1.2 only.
We need to use KernelFunctor instead of make_kernel.
In addition cl::Sources now works on std::string and
does not support std::pair<const char*, in> anymore.
2021-10-28 16:42:43 +02:00
Arne Morten Kvarving
8c7f635dc2 build flow_brine_energy as an object library
improves parallel builds
2021-10-18 14:24:55 +02:00
Arne Morten Kvarving
21af223b92 rename flow_brine_thermal to flow_brine_energy
naming should be consistent with the established convention
2021-10-18 12:48:11 +02:00
Bård Skaflestad
09b7f287a0
Merge pull request #3604 from akva2/improve_test_drivers
changed: use getopts in test drivers
2021-10-17 17:48:23 +02:00
Tor Harald Sandve
f6f5badfde Add brine and thermal simulator 2021-10-15 11:50:17 +02:00
daavid00
48b175904a first version of micp implementation in flow 2021-10-14 17:44:57 +02:00
Arne Morten Kvarving
673b049b9a changed: use getopts in test drivers
the number of options were getting unmanagable as
a flat list.

also add help/usage to the scripts
2021-10-13 14:24:55 +02:00
Tor Harald Sandve
24bf13c26f
Merge pull request #3429 from akva2/remove_plain
remove ebos_plain
2021-08-19 14:11:27 +02:00
Arne Morten Kvarving
0fa74c4a9d fix build without variants and/or poly grid 2021-08-17 08:52:16 +02:00
Arne Morten Kvarving
c05f67a382 changed: build polygrid simulator as a object library
allows for building in parallel with the main library
2021-08-16 12:55:40 +02:00
Arne Morten Kvarving
46087f8f00 changed: build onephase simulators as object libraries
allows for building in parallel with the main library
2021-08-16 12:55:36 +02:00
Arne Morten Kvarving
23c2dd15aa remove ebos_plain
the ebos well model is severely limited, I doubt
anyone would ever use this binary.
2021-08-05 11:48:09 +02:00
Joakim Hove
ea4cf8d28f
Merge pull request #3428 from akva2/remove_altidx
remove ebos_altidx
2021-08-03 14:10:00 +02:00
Tong Dong Qiu
f77d745b51 Factor out CUDA part of amgclSolver 2021-07-07 16:24:52 +02:00
Markus Blatt
7b004d34e8 Prevent warnings form VexCL/amgcl using system include directories. 2021-07-07 16:24:52 +02:00
Markus Blatt
adc2bf46b9 Search for VexCL and create an imported target.
Unfortunately, we cannot us the imported targets. They add some compile
parameters using generator expressions based on the CXX_COMPILER_ID.
While we are using the system CXX compiler for most of the stuff, some
cuda code is compiled with nvcc which at least for some versions does
not support -Wno-catch-value (which gets passed as normal compiler
option).
2021-07-07 16:24:52 +02:00
Tong Dong Qiu
282f611f92 Make sure amgcl can be used without CUDA 2021-07-07 16:24:52 +02:00
Markus Blatt
b197130b3e Use amgcl::amgcl target, but only extract INTERFACE_INCLUDE_DIRS.
There is no AMGCL_INCLUDE_DIRS when using find_package. We now query
the target amgcl::amgcl for INTERFACE_INCLUDE_DIRS and store the
result in AMGCL_INCLUDE_DIRS.

Note that we cannot link amgcl::amgcl target to libopmsimulators as
this sets the -fopenmp flag for all the source files and makes
compilation with nvcc fail.
2021-07-07 16:24:52 +02:00
Tong Dong Qiu
a08195a983 Use CMake config of amgcl itself 2021-07-07 16:24:52 +02:00
Tong Dong Qiu
c2869810e2 Added amgclSolverBackend 2021-07-07 16:24:51 +02:00
Arne Morten Kvarving
8443306fb6 remove ebos_altidx
building a whole simulator for this, and then not even
running a test for it, seems rather excessive. if a test for
index-conformance is wanted, a better approach should be taken.
2021-07-05 13:17:13 +02:00
Arne Morten Kvarving
ed1b36e836 fixed: do not build test_parallelwellinfo.cpp twice
mark the parallel test NO_COMPILE and specify the binary
2021-04-30 17:01:11 +02:00
Markus Blatt
13f62a718b
Merge pull request #2998 from g-marchiori/fpgasolver-integration
Added fpgaSolver, requires Xilinx Alveo U280 FPGA board
2021-04-15 11:21:39 +02:00
Arne Morten Kvarving
38b2e5a571 fixed: we have to "link" these to the fmt::fmt target
if not, the required defines are not set when building
with external libfmt
2021-04-09 11:31:56 +02:00
Markus Blatt
a53139b20a Consistently use keyword version of target_link_libraries.
Fixes:

CMake Error at CMakeLists.txt:458 (target_link_libraries):
  The keyword signature for target_link_libraries has already been used with
  the target "opmsimulators".  All uses of target_link_libraries with a
  target must be either all-keyword or all-plain.

  The uses of the keyword signature are here:

   * /var/lib/jenkins/workspace/opm-common-PR-builder/mpi/install/share/opm/cmake/Modules/OpmCompile.cmake:61 (target_link_libraries)

-- Configuring incomplete, errors occurred!
2021-04-07 18:42:28 +02:00
Markus Blatt
de6baa3c00 Stop pretending that we support CMake 2.8
We actually already require at least CMake 2.8.12 due to the embedded
pybind11 (some tests of it are even at 3.0). Anyway as Ubuntu LTS has
3.10.2 I doubt that anything less is tested by us.
2021-04-07 18:42:28 +02:00
Tor Harald Sandve
4cccd7302d remove unnecessary diffusion specializations 2021-03-23 09:48:43 +01:00
Giacomo Marchiori
a933d4da10 Modified CMakeLists.txt after comments by blattms.
Also, tentative changes to compile the FPGA library from a different module: this part needs to be revised because it assumes a fixed path for the OPM/FPGA module.
Modified CMakeLists_files.cmake to remove files moved to the OPM/FPGA module.
2021-03-12 11:15:02 +01:00
Giacomo Marchiori
b4aa28771f Added fpgaSolver 2021-03-12 11:14:59 +01:00
Markus Blatt
6766f2f81e Enable usage of fmtlib on the system.
If fmtlib is present on the system we used that one
in the normal mode (not header only). Otherwise we
fallback to the embedded one header only.
Searching for the library is done on opm-common.
2021-03-11 20:03:00 +01:00
Tor Harald Sandve
5deb410bd5 clean-up in flow_bo_diffusion.cpp and flow_co2.cpp 2021-02-16 12:23:36 +01:00
Tor Harald Sandve
361de71c96 add optional flow_bo_diffusion simulator for testing 2021-02-16 12:21:58 +01:00
Tor Harald Sandve
3457d46a00 add flow_co2 gas-oil simulator with diffusion for testing 2021-02-16 12:21:58 +01:00
Markus Blatt
9ccc953bf0 Add a flow executable that only distributes cells in z-direction.
Executable is named flow_distribute_z and uses the external
loadbalancing information. It can be used to test the distributed
standard wells on SPE9 with 4 or more processes.
2021-01-26 21:27:39 +01:00
Markus Blatt
d7ae211729 Also test ParallelWellInfo with an MPI run if possible. 2020-12-10 11:32:52 +01:00
Paul Egberts
d0421582e1 add gas-water simulator 2020-12-03 09:04:11 +01:00
Arne Morten Kvarving
b7e3ca1326
Merge pull request #2928 from akva2/simplify_buildsystem_models
Use lists in buildsystem and rename some ebos models to be consistent with flow
2020-11-27 19:39:39 +01:00
Bård Skaflestad
4ae70ee12e
Merge pull request #2927 from akva2/disable_python_tests_debian_packaging
Disable python tests in debian packaging
2020-11-23 10:52:36 +01:00
Arne Morten Kvarving
e176487cae changed: rename ebos_thermal to ebos_energy
make it the same as the flow model, allowing simplification
in the buildsystem
2020-11-18 14:04:27 +01:00
Arne Morten Kvarving
9ad927799b changed: rename ebos_oilwaterpolymer to ebos_oilwater_polymer
make it the same as the flow model, allowing simplification
in the buildsystem
2020-11-18 14:04:04 +01:00
Arne Morten Kvarving
10c3f3b438 changed: simplify build system a little
use lists for models to avoid repeating
2020-11-18 14:03:37 +01:00
Tor Harald Sandve
0ac2f922d3
Merge pull request #2851 from osae/extboSimulators
Alternative solvent extension for the black oil model.
2020-11-18 14:01:36 +01:00
Arne Morten Kvarving
16d644032c add cmake option to disable the python tests
due to bugs in the openmpi on bionic, this test fails to
execute properly in pbuilder environments. instead
of rebuilding openmpi without dynamic loading
(which is the suggested fix) and potentially break users
systems, this is a non-intrusive workaround to be used
for packaging.

also add explicit option for python support to make it
visible in cmake frontends.
2020-11-18 10:55:46 +01:00
Arne Morten Kvarving
608b27096b remove unused cmake option 2020-11-18 09:40:43 +01:00
Ove Sævareid
0f7e66e151 Alternative solvent extension for the black oil model. 2020-11-17 12:33:19 +01:00
Tor Harald Sandve
fbccdbf68e Make a flow version that uses the polyhedreal grid
Currently the simulator creats the polyhedreal grid from an eclGrid from opm-common

TODO
 - make it possible to create the grid directly from DGF or MRST format
 - fix issue on norne.
2020-11-10 15:49:59 +01:00
Arne Morten Kvarving
9cab259b38 changed: compile each flow simulator as a object library
increases parallelism
2020-10-23 11:53:50 +02:00
Arne Morten Kvarving
10b2e540fb changed: run tests on 4 processors
more than 4 is problematic on some build machines
2020-10-20 08:13:31 +02:00
Markus Blatt
3a41c78114
Merge pull request #2811 from akva2/python_binding_reuse
changed: reuse objects if building python inline
2020-09-29 15:57:13 +02:00
Joakim Hove
0b5134521e Add inline fmtlib code in source tree 2020-09-28 11:01:13 +02:00
Arne Morten Kvarving
d286079393 changed: reuse objects if building python inline 2020-09-25 13:47:39 +02:00
Atgeirr Flø Rasmussen
0205f54caf Fix CMake variable case bug.
This caused compile failure on a system without the c++ OpenCL binding header cl.hpp.
2020-07-28 12:42:55 +02:00
Markus Blatt
faaee51d09
Merge pull request #2682 from Tongdongq/openclSolver
Added openclSolver
2020-07-10 13:38:32 +02:00
Tor Harald Sandve
fce0ba6759 Add oil water brine specialization 2020-06-30 10:41:28 +02:00
T.D. (Tongdong) Qiu
8913e1d057 Make sure OpenCL can be used without CUDA 2020-06-25 18:44:49 +02:00
T.D. (Tongdong) Qiu
f974a5f6db Added openclSolver
Usage: --gpu-mode=[cusparse|opencl|none] on command line
2020-06-22 18:26:49 +02:00
Arne Morten Kvarving
6ab90bb0e3 fixed: fix parallel builds
we need the update-version target to run to generate the
necessary headers.
2020-06-09 15:08:30 +02:00
Arne Morten Kvarving
5d423e2300 changed: move moduleVersion to a separate object library
this to minimize re-linking due to compile timestamp support
2020-06-08 10:07:22 +02:00
Markus Blatt
6a0bad0243 Need to set ENV{CUDAHOSTCXX}, too.
No variables are used by check_language and hence we need
ti make nvc aware of the host compiler by the environment
variable.
2020-04-29 13:58:48 +02:00
Markus Blatt
2d32fde1c9 Fix CMake CUDA documentation. 2020-04-29 13:29:45 +02:00
Markus Blatt
2c7556d286 Use CMAKE_CUDA_HOST_COMPILER instead of ENV{CUDAHOSTCXX}. 2020-04-29 13:29:45 +02:00
Markus Blatt
46ccc77959 Use CMAKE_CUDA_FLAGS_${CMAKE_BUILD_TYPE} if appropriate. 2020-04-27 22:05:47 +02:00
Markus Blatt
4e0cd2a77e Prevent multiple "-ccbin g++" in nvcc command.
If ENV{CUDAHOSTCXX} is set then this will cause CMake to add
"-ccnin ${ENV{CUDAHOSTCXX}}" to variable CMAKE_CUDA_FLAGS
even if there already is one.
2020-04-27 22:05:47 +02:00
Markus Blatt
ddb0940336 Prevent Cmake error for CUDA with incompatible c++.
At least on Debian 10 the standard c++ compiler is g++-8,
but CUDA only supports g++-7 and our test for CUDA in cmake
did send an error in that case/combination which is quite
annoying.

The reason was that check_language(CUDA) did not honor
the CMAKE_CUDA_FLAGS variable and always used the default g++7,
but enable_language(CUDA) did honor it. As we do set the underlying
host compiler the fromer reported that CUDA is available while the
latter marked the CUDA compiler as broken.

With this commit we work around this by setting the environment
variable ENV{CUDAHOSTCXX} which nvcc will use. Hence now we only try
to enable CUDA if it is compatible with the C++ compiler
2020-04-27 15:22:56 +02:00
Joakim Hove
2696160f56
Merge pull request #2520 from akva2/extra_tests
add norne and norne_parallel as ExtraTests
2020-04-22 13:35:25 +02:00
Arne Morten Kvarving
16a1ddfe5e fixed: use PROJECT_BINARY_DIR, not CMAKE_BINARY_DIR
tests fail to execute in super-build otherwise
2020-04-21 08:50:51 +02:00
Markus Blatt
695e6c9449 Only warn abou CUDA version if CUDA was actually found. 2020-04-15 14:21:36 +02:00
Arne Morten Kvarving
e5b32dd82d add norne and norne_parallel as ExtraTests
to execute these you have to use ctest -C ExtraTests
or 'make extra_test'
2020-04-14 16:02:21 +02:00
Markus Blatt
340bad4b17 Fix policy warnings (needed by OPM/opm-common#1675 2020-04-02 20:31:54 +02:00
Markus Blatt
59916a7526 Move CUDA tests to a later stage to make time for setting policies. 2020-04-02 20:30:20 +02:00
Markus Blatt
1f876e693b Check for cuda 9.0 or newer as we are supposed to.
9.7 was a local change to see whether deactivating CUDA for old
version works.

Completes #2488
2020-03-23 11:10:17 +01:00
Markus Blatt
74051ebf01 Fix CUDA version check to allow versions 9.0 or newer. 2020-03-20 14:36:24 +01:00
T.D. (Tongdong) Qiu
04fe46a9da Only accept CUDA 9.0 for the WellContributions kernel. Also removed unused variables 2020-03-19 11:46:57 +01:00
Markus Blatt
843903dfdc Make Cmake version check for CUDA work for CMake 3.6.
It seems like the VERSION_GREATER_EQUAL operator for boolean
expressions was introduced after CMake 3.6 and hence the current
check whether to activate CUDA or not is broken in version 3.6 and
below.

This PR fixes this by using VERSION_GREATER.

Closes #2375.
2020-03-02 12:10:45 +01:00
Arne Morten Kvarving
42b290133a
Merge pull request #2366 from blattms/makes-mixing-incompatible-gcc-nvcc-fail
Make mixing incompatible host compiler/device compiler versions fail.
2020-02-26 09:00:34 +01:00
Markus Blatt
80c7bc179b Make mixing incompatible host compiler/device compiler versions fail.
We experienced weired linker errors when using host compiler version for
compilation that were not supported by the nvcc used to compile the
cuda code:
```
[ 15%] Linking CXX executable bin/test_timer
/usr/bin/ld: /home/mblatt/src/dune/opm-2.6/opm-common/opm-seq/lib/libopmcommon.a(Parser.cpp.o): in function `Opm::(anonymous namespace)::file& std::vector<Opm::(anonymous namespace)::file, std::allocator<Opm::(anonymous namespace)::file> >::emplace_back<std::filesystem::__cxx11::path&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&>(std::filesystem::__cxx11::path&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)':
Parser.cpp:(.text+0x1096): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()'
/usr/bin/ld: Parser.cpp:(.text+0x10ad): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()'
/usr/bin/ld: /home/mblatt/src/dune/opm-2.6/opm-common/opm-seq/lib/libopmcommon.a(Parser.cpp.o): in function `Opm::(anonymous namespace)::ParserState::loadFile(std::filesystem::__cxx11::path const&)':
Parser.cpp:(.text+0x23a1): undefined reference to `std::filesystem::canonical(std::filesystem::__cxx11::path const&)'
/usr/bin/ld: Parser.cpp:(.text+0x24e0): undefined reference to
`std::filesystem::__cxx11::path::_M_split_cmpts()'
```
The reason turned out to be that the library path was build up by
paths of the old (g++-7) compiler used by nvcc and the actual (newer) compiler
g++-8. This completely messed up the linker paths for CMake.

To detect this situation already when running cmake we have resorted
to first setting the CMAKE_CUDA_FLAGS to force cmake to make nvcc use
the host compiler and to activate CUDA (if available) before calling
`find_package(CUDA)`. If the host compiler is not supported CMake will
error out during `enable(CUDA)`

Note that we still use (deprecated) FindCUDA later to determine the
libraries to link to.

The users has the option to either deactivate CUDA by setting
`-DCMAKE_DISABLE_FIND_PACKAGE_CUDA=ON` or to use a compiler supported
by nvcc (setting `-DCMAKE_CXX_COMPILER=compiler`).

Additionally we do not try to activate CUDA the CMake version is <
3.8. Please note that previously CMake would have errored out here
anyway since we used the unsupported `enable_language(CUDA)` even in
this case.

Closes #2363.
2020-02-25 16:54:53 +01:00
Arne Morten Kvarving
8e8d187805 disable building of tests if Boost::test is not found 2020-02-19 12:41:27 +01:00
Robert Kloefkorn
e04bb6e91a [feature][flow_blackoil] Added a variant to compile the blackoil option
only for faster development.
2020-02-10 12:11:30 +01:00
Joakim Hove
1e26b7333e
Remove the stale flag ENABLE_3DPROPS_TESTING 2020-01-24 17:06:56 +01:00
Joakim Hove
0e9535319b
Simulate with only active cells (#2213)
Use FieldProps implementation for 3D properties
2020-01-13 15:46:50 +01:00
Tor Harald Sandve
c3424a5716 remove depricated ebos_saltwater from install list 2020-01-09 14:14:38 +01:00
Tor Harald Sandve
8b93953ef5 clean-up after rebase 2020-01-09 14:14:38 +01:00
Trine S. Mykkeltvedt
99e7785fb5 renamed saltwater-->brine and removed keywords from missingFeatures 2020-01-09 14:14:38 +01:00
Trine S. Mykkeltvedt
5749615bd8 addd simple salt/brine implementation 2020-01-09 14:14:38 +01:00
Markus Blatt
b9062396be
Merge pull request #2209 from Tongdongq/master
Added cusparseSolver, needs GPU to be used
2019-12-20 11:37:27 +01:00