Commit Graph

339 Commits

Author SHA1 Message Date
Atgeirr Flø Rasmussen
a9aacb7960 Run the "gatherconvergencereport" test in parallel. 2018-11-13 10:31:23 +01:00
Andreas Lauser
d7efb362a2 make the build of flow fully parallelizable
so far, the actual specializations of the simulator were compiled into
the `libopmsimulators` library and the build of the glue code
(`flow.cpp`) thus needed to be deferred until the library was fully
built. Since the compilation of the glue code requires a full property
hierarchy for handling command line parameters, this arrangement
significantly increases the build time for systems with a sufficient
number of parallel build processes. ("sufficient" here means 8 or more
threads, i.e., a quadcore system with hyperthreading is sufficient
provided that it has enough main memory.)

the new approach is not to include these objects in
`libopmsimulators`, but to directly deal with them in the `flow`
binary. this allows all of them and the glue code to be compiled in
parallel.

compilation time on my machine before this change:

```
> touch ../opm/autodiff/BlackoilModelEbos.hpp; time make -j32 flow 2> /dev/null
Scanning dependencies of target opmsimulators
[  2%] Building CXX object CMakeFiles/opmsimulators.dir/opm/simulators/flow_ebos_gasoil.cpp.o
[  2%] Building CXX object CMakeFiles/opmsimulators.dir/opm/simulators/flow_ebos_oilwater.cpp.o
[  2%] Building CXX object CMakeFiles/opmsimulators.dir/opm/simulators/flow_ebos_blackoil.cpp.o
[  2%] Building CXX object CMakeFiles/opmsimulators.dir/opm/simulators/flow_ebos_solvent.cpp.o
[  4%] Building CXX object CMakeFiles/opmsimulators.dir/opm/simulators/flow_ebos_polymer.cpp.o
[  6%] Building CXX object CMakeFiles/opmsimulators.dir/opm/simulators/flow_ebos_energy.cpp.o
[  6%] Building CXX object CMakeFiles/opmsimulators.dir/opm/simulators/flow_ebos_oilwater_polymer.cpp.o
[  6%] Linking CXX static library lib/libopmsimulators.a
[ 97%] Built target opmsimulators
Scanning dependencies of target flow
[100%] Building CXX object CMakeFiles/flow.dir/examples/flow.cpp.o
[100%] Linking CXX executable bin/flow
[100%] Built target flow

real    1m45.692s
user    8m47.195s
sys     0m11.533s
```

after:

```
> touch ../opm/autodiff/BlackoilModelEbos.hpp; time make -j32 flow 2> /dev/null
[ 91%] Built target opmsimulators
Scanning dependencies of target flow
[ 93%] Building CXX object CMakeFiles/flow.dir/flow/flow.cpp.o
[ 95%] Building CXX object CMakeFiles/flow.dir/flow/flow_ebos_gasoil.cpp.o
[ 97%] Building CXX object CMakeFiles/flow.dir/flow/flow_ebos_oilwater_polymer.cpp.o
[100%] Building CXX object CMakeFiles/flow.dir/flow/flow_ebos_polymer.cpp.o
[100%] Building CXX object CMakeFiles/flow.dir/flow/flow_ebos_oilwater.cpp.o
[100%] Building CXX object CMakeFiles/flow.dir/flow/flow_ebos_solvent.cpp.o
[100%] Building CXX object CMakeFiles/flow.dir/flow/flow_ebos_blackoil.cpp.o
[100%] Building CXX object CMakeFiles/flow.dir/flow/flow_ebos_energy.cpp.o
[100%] Linking CXX executable bin/flow
[100%] Built target flow

real    1m21.597s
user    8m49.476s
sys     0m10.973s
```

(this corresponds to a ~20% reduction of the time spend on waiting for
the compiler.)
2018-09-26 11:49:12 +02:00
Arne Morten Kvarving
dcadaff466 added: install bash tab completion for flow 2018-09-19 11:45:40 +02:00
Arne Morten Kvarving
dfe2f17dee use opm-tests 2018-03-27 11:14:23 +02:00
Arne Morten Kvarving
371ae786ca changed: only add conditionally built files if they are to be built
instead of unconditionally adding, and then conditionally removing
again.
2018-02-13 12:35:39 +01:00
Arne Morten Kvarving
05593c975d fixed: remove erroneous brace 2018-02-05 11:38:15 +01:00
Arne Morten Kvarving
5b86d8b13b add files imported from opm-core to build system 2018-01-17 18:27:19 +01:00
Arne Morten Kvarving
2ed67f8bf2 changed: put prereqs in module itself 2017-12-19 12:44:41 +01:00
Arne Morten Kvarving
efce6ef3da add imported tutorials to build system 2017-12-06 12:06:49 +01:00
Arne Morten Kvarving
080c70fa10 remove 'flow_mpi'
use 'flow' for parallel simulations
use 'flow_legacy' to run the legacy code in serial
2017-11-13 14:23:59 +01:00
Arne Morten Kvarving
5c048782ee remove 'flow_multisegment_mpi' source file
simulator has been replaced by 'flow'
2017-11-13 14:07:27 +01:00
Markus Blatt
03a94c1cde Got rid of false warning for empty opm_common_DIR. 2017-09-26 16:39:50 +02:00
Markus Blatt
54acb69d7a Drop support for OPM_COMMON_ROOT.
Users should either rely in sibling search, use opm-common_DIR, or
set CMAKE_PREFIX_PATH correctly to find opm-common.
2017-09-25 14:03:01 +02:00
Markus Blatt
a26cec6a6c Allow arbitrary clone directories and <prefix><module-name><postfix> build directories 2017-09-25 13:54:04 +02:00
Markus Blatt
0b83f68cdc Warn if OPM_COMMON_ROOT and opm-common_DIR are set and use the latter. 2017-09-25 13:53:34 +02:00
Markus Blatt
f6db28eb5d Changed find_package call to require opm-common.
Previously, QUIET was passed to opm-common which would
not even print a message if there is a problem. Now cmake
will fail if OPM_COMMON_ROOT is not set, and neither guessing
opm_common_DIR did  work nor searching in the default locations.
2017-09-25 13:53:34 +02:00
Markus Blatt
e59084c540 Added deprecation warning if OPM_COMMON_ROOT is used 2017-09-25 13:53:34 +02:00
Markus Blatt
b2c6092127 Added warning if opm-common_DIR is not an existing directory. 2017-09-25 13:53:29 +02:00
Markus Blatt
149d531c68 Added sibling search mechanism using ${PROJECT_BINARY_DIR} for opm-common
If sibling search is activated and opm-common_DIR is not set, then
we try to determine the build directory layout from ${PROJECT_BINARY_DIR}.
The following two possibilities are supported:
 + <modules-build-dir>/<project-name>
 + <project-name>/<build-dir>
where <project-name> is the case sensitive module name (in this case
opm-common).

This results in the following search precedence:
1. User set opm-common_DIR
2. sibling directories search (if the directories exist)
3. Default (system) CMake search path
2017-09-15 15:26:53 +02:00
Markus Blatt
da86d1c0bd Introduced mandatory call to project in top level CMakeLists.txt
Somehow this was never called in the OPM modules. But the CMake documentation
actually says:
"The top-level ``CMakeLists.txt`` file for a project must contain a
literal, direct call to the ``project()`` command; loading one
through the ``include()`` command is not sufficient.  If no such
call exists CMake will implicitly add one to the top that enables the
default languages (``C`` and ``CXX``).
"

Without it some variables (like CMAKE_PROJECT_NAME) are not correctly defined.
2017-09-15 15:26:53 +02:00
Robert Kloefkorn
07e0d71906 [feature][flow] Add a common executable for all flow variants, i.e.
flow_ebos, flow_ebos_polymer, flow_ebos_solvent, flow_ebos_2p.
2017-08-23 16:21:15 +02:00
Joakim Hove
deab255468 Added -Wno-dev to Eigen cmake args. 2017-05-21 16:30:27 +02:00
Arne Morten Kvarving
5cd63f6eee fixed: re-add installation of the 'flow' symlink
got lost due to a bad conflict resolution in 7c4dfa784d
2017-04-19 16:04:17 +02:00
Andreas Lauser
6c2e828a8d add 'flow_ebos' to the dependencies of the 'flow' target
this allows to use `make flow` instead of `make flow_ebos flow` to
build the stuff.
2017-04-18 18:45:47 +02:00
Andreas Lauser
d08d909c00 change the symlink for flow to flow_ebos
`flow_ebos` should be now capable of doing everything that
`flow_legacy` can and recently all testing seems to have been centered
on `flow_ebos`. note that `flow_ebos` does not yet support some more
advanced/exotic features like MPI, solvents, polymer, etc., but
neither does the plain `flow_legacy` binary. until `flow_ebos`
supports these features, the specialized simulators thus continue to
use the legacy code paths.
2017-04-11 13:25:18 +02:00
Arne Morten Kvarving
f2e1f4bef1 changed: move multisegment well test to proper regression test 2017-03-03 15:27:35 +01:00
Arne Morten Kvarving
26ebe27cad convert flow_sequential SPE1CASE1 test to actual regression test 2016-11-22 16:51:39 +01:00
Arne Morten Kvarving
a27e58c0bf changed: remove duplicated test
no reason to run spe1case2 without checking output as we have
tests checking the output in place
2016-11-22 16:51:39 +01:00
Joakim Hove
e999ad7a98 Remove python tests. 2016-11-21 18:02:21 +01:00
Andreas Lauser
7c4dfa784d Merge branch 'master' into frankenstein
* master:
  rename the 'flow' binary to 'flow_legacy' and set a symbolic link
2016-11-15 00:32:27 +01:00
Andreas Lauser
d989c1e2fc Merge remote-tracking branch 'origin/master' into frankenstein
* origin/master:
  Do not throw for unrecognized file when merging log files.
  Do not populate cellData but issue a warning in parallel.
  Removed ternary operator in inline initialization.
  Correctly mark transfer of ownership for ouptut writer
  Indent nested #if
  Remove Solution.sdc assignment
  Cater variable name change in BCRSMatrix of DUNE 2.5
  Fix using local active cells for writing eclipse files in parallel.
  add restart test for SPE1CASE2_ACTNUM
  rename the 'flow' binary to 'flow_legacy' and set a symbolic link
  Added ctest for restart files
2016-11-11 18:29:46 +01:00
Andreas Lauser
511a9039ab rename the 'flow' binary to 'flow_legacy' and set a symbolic link
this is a precursor of merging flow_ebos into the master
branch. hopefully, this won't break any existing setups...
2016-11-04 16:19:15 +01:00
Andreas Lauser
a6f76ddace rename the 'flow' binary to 'flow_legacy' and set a symbolic link
this is a precurser of merging flow_ebos into the master
branch. hopefully, this won't break any existing setups...
2016-11-04 15:30:37 +01:00
Andreas Lauser
36b00ba570 Merge remote-tracking branch 'origin/master' into frankenstein_merge_master 2016-09-28 21:20:47 +02:00
Kristian Hole-Drabløs
af2a59d1b8 Added more cases/models to ctest 2016-09-14 13:12:58 +02:00
Robert Kloefkorn
3db63b0a22 add flow_ebos, an ebos based simulator
it uses ebos for linearization of the mass balance equations and the
current flow code from opm-simulators for all the rest. currently, the
results match the ones from plain `flow` for SPE1, SPE9 and Norne, but
performance is not optimal: on SPE9, converting from and to the legacy
data structures takes about a third of the time to do the actual mass
balance assembly. nevertheless `flow_ebos` is almost as fast as plain
`flow` for SPE9. (for Norne `flow_ebos` is about 15% slower, even
though the results match quite closely. the reason for this is that it
requires more iterations for some reason.)
2016-08-09 18:38:23 +02:00
Atgeirr Flø Rasmussen
73a4d42918 Merge pull request #764 from joakim-hove/restart-test
Restart test
2016-08-02 12:10:38 +02:00
Joakim Hove
c5b7827cbd Check more INIT keywords
- Floating point: DX,DY,DZ and DEPTH
 - Integer: PVTNUM, SATNUM, FIPNUM, EQLNUM
2016-07-28 07:57:00 +02:00
Joakim Hove
91051a687b Refactor restart test.
- Using Python to run flow repeatedly and compare results.
 - Cleaned up and removed unnecessary SPE1 runs from testing.
2016-07-28 07:54:20 +02:00
Kristian Hole-Drabløs
fc9251bd4f Added regression tests for comparing ECLfiles using CTest 2016-07-20 16:00:00 +02:00
Kai Bao
aed2760b31 updating the path for the multi-segment wells test.
due to the renaming of the folder name in opm-data.
2016-07-05 13:02:28 +02:00
Joakim Hove
b60f1ac5e7 Added Python based integration test to check TRAN? 2016-07-01 13:18:34 +02:00
Atgeirr Flø Rasmussen
80b8b5f12f Merge pull request #737 from atgeirr/sequential
Experimental sequential solvers
2016-06-27 11:38:13 +02:00
Atgeirr Flø Rasmussen
7489f15ee9 Add sequential models for black oil.
This commit adds sequential solvers, including a simulator variant
using them (flow_sequential.cpp) with an integration test (running
SPE1, same as for fully implicit).

The sequential code is capable of running several (but not all) test
cases without tuning or special parameters, but reducing ds_max a bit
(from default 0.2 to say 0.1) helps with transport solver
convergence. The Norne model runs fine (esp. with a little tuning). A
parameter iterate_to_fully_implicit (defaults to false) is available,
when set the simulator will iterate with alternating pressure and
transport solves towards the fully implicit solution. Although that
takes a lot extra time it serves as a correctness check.

Performance is not competitive with fully implicit at this point:
essentially both the pressure and transport models inherit the fully
implicit model and do a lot of double (or triple) work. The point has
been to establish a proof of concept and baseline for further
experiments, without disturbing the base model too much (or at all, if
possible).

Changes to existing code has been minimized by merging most such
changes as smaller PRs already, the only remaining such change is to
NewtonIterationBlackoilInterleaved. Admittedly, that code (to solve
the pressure system with AMG) is not ideal because it duplicates
similar code in CPRPreconditioner.hpp and is not parallel. I propose
to address this later by refactoring the "solve elliptic system" code
from CPRPreconditioner into a separate class that can be used also
from here
2016-06-27 10:28:09 +02:00
Kai Bao
d27524c3a7 adding a test for flow_multisegment
it is a 2D case with H__ pressure drop specification, and it takes about
2 second to run.
2016-06-21 14:43:11 +02:00
Arne Morten Kvarving
6df328d56e added: mark flow_mpi for installation 2016-05-02 10:57:09 +02:00
Atgeirr Flø Rasmussen
b5cf0763c5 Also change library name opmautodiff -> opmsimulators. 2016-04-08 20:33:18 +02:00
Atgeirr Flø Rasmussen
37c4bd16b1 Adapt code to dune-cornerpoint -> opm-grid renaming. 2016-04-06 13:29:47 +02:00
chflo
3fc8ea4c9c Added restart test 2016-02-10 14:47:56 +01:00
Kai Bao
c5252ae1ce make compilation of flow_multisegment_mpi conditional
if(DUNE_CORNERPOINT_FOUND OR dune-cornerpoint_FOUND)
2015-12-01 00:06:46 +01:00
Joakim Hove
8302db443b Try to find opm-data and run flow on SPE1 case. 2015-10-21 18:43:08 +02:00
Joakim Hove
a879e9cd41 Removed cmake setting : NON_PUBLIC_TEST 2015-10-21 16:56:10 +02:00
Atgeirr Flø Rasmussen
98a3d1675a Merge pull request #454 from babrodtk/openpm_experiment
Parallel assembly (partial)
2015-10-19 15:32:50 +02:00
André R. Brodtkorb
a208f793d5 Set OpenMP default to off 2015-10-19 15:21:08 +02:00
Markus Blatt
82a73d969e Renamed flow_cp to flow_mpi 2015-10-12 10:59:01 +02:00
Arne Morten Kvarving
1ac43da951 fixed: make sure opm-common can be (re-)found
see https://github.com/OPM/opm-common/issues/40#issuecomment-140720316
2015-09-16 14:22:24 +02:00
Andreas Lauser
f46189ee1e restore dunecontrol compatibility after the opm-cmake -> opm-common rename 2015-09-08 11:57:14 +02:00
Arne Morten Kvarving
28ab615b06 changed: sync with renaming to opm-common 2015-09-08 10:47:05 +02:00
Arne Morten Kvarving
f7722c62ae changed: use common check-commits target from opm-cmake 2015-05-28 10:42:51 +02:00
Arne Morten Kvarving
8afa9e4749 added: look for opm-cmake in sibling directory 2015-05-27 11:51:28 +02:00
Arne Morten Kvarving
9ae6eb9b77 changed: locate opm-cmake using config mode 2015-05-27 10:48:30 +02:00
Joakim Hove
78437a29e3 Removed .cmake extension from include() 2015-05-15 15:44:02 +02:00
Joakim Hove
8150bd3075 Changed logic for finding cmake modules 2015-05-15 14:30:51 +02:00
Atgeirr Flø Rasmussen
c6d38f543c Rename sim_fibo_ad[_cp] -> flow[_cp].
In line with the decision we made to use "flow" as name for the
fully implicit black-oil simulators.
2015-02-27 12:35:03 +01:00
Arne Morten Kvarving
5dca993b69 add check-commits target 2014-12-08 15:26:18 +01:00
Atgeirr Flø Rasmussen
463e05a83d Obtain dune-istl version for config.h.
Required by DuneMatrix.hpp.
2014-09-30 13:46:01 +02:00
Arne Morten Kvarving
132657e478 added: hook for conditionally compiled files
backport from opm-upscaling PR#100
2014-06-16 15:53:01 +02:00
Atgeirr Flø Rasmussen
3b80724581 Update Eigen requirements. 2014-05-21 13:57:16 +02:00
Bård Skaflestad
897a33c788 Support older versions of Dune
Retrieving the "mpihelper.hh" from <dune/common> rather than
<dune/common/parallel> means we can still support (e.g.,) Dune 2.2.1
if needed.
2014-04-10 00:59:31 +02:00
Bård Skaflestad
433be936e4 Use full path in examples_SOURCES
That's the convention used elsewhere in the build system and we
should honour that convention.  While here, remove the assignment to
PROGRAM_SOURCE_FILES because that variable is no longer referenced
once we start to run the hooks.
2014-04-10 00:56:09 +02:00
Markus Blatt
f4812c21eb Add an example program of FIBOS that uses CpGrid. 2014-03-13 16:33:36 +01:00
Kristian Flikka
111c9ee445 Added sim_fibo_ad_test, running two identical simulations with the SPE1 case 2013-11-26 12:55:41 +01:00
Roland Kaufmann
09d2f435f8 Add a small bootstrapper to locate build system
Currently this bootstrapper only finds the macros that are located
in the cmake/ tree in this project. Projects that don't carry their
own build system can specify search locations here.
2013-08-16 23:55:45 +02:00
Roland Kaufmann
e713e5637d Separate build concerns for better maintainability
Introduce a main build file which uses modules in the cmake/ directory
for most of its bulk work, which agains retrieve information from files
in the root of the source tree (dune.module, CMakeLists_files.cmake) to
get information about the project.

Thus, the cmake/ directory is shared between all the projects down to
the last bit; only project-specific customizations go into the main file
in form of _hook macros (which are called in specific places).
2013-08-14 23:39:05 +02:00
Roland Kaufmann
9ee29561c8 Recognize lib dirs that may be used later
This let you specify a bunch of directory names on the command line
to *all* packages, without getting annoying warnings that they are
defined but not used.
2013-08-14 23:02:40 +02:00
Roland Kaufmann
48a1e36914 Revert "New sentence -> capital first letter."
This reverts commit 970f308f59.
2013-08-14 23:02:19 +02:00
Arne Morten Kvarving
29d7e2a323 fixed: workaround issues with ExternalProject_Add
if you use the builtin git update command, a build is triggered
every time. instead, manually use a checkout
2013-07-10 09:57:57 +02:00
Bård Skaflestad
a9b90b34f8 Use UMFPACK solver if available in sim_simple.cpp.
Fall back to Eigen's BiCGSTAB solver if UMFPACK is not available.  The
BiCGSTAB is built into Eigen and consequently always available when
Eigen is found.
2013-07-09 14:39:44 +02:00
Bård Skaflestad
09bd9a44ac Fix mismerge in commit b54df70.
We lost the SuiteSparse detection.
2013-07-09 13:54:47 +02:00
Bård Skaflestad
b54df706a9 Merge branch 'master' into optional-umfpack
Conflicts:
	CMakeLists.txt

Import akva2's modified Eigen support.
2013-07-09 13:50:45 +02:00
Bård Skaflestad
221a7261a8 Exclude examples/sim_simple.cpp if UMFPACK is unavailable
Not all systems provide UMFPACK so even if Eigen provides the required
bindings, we should not assume that the underlying library and/or
headers are available.  Currently, only examples/sim_simple.cpp uses
UMFPACK unconditionally, so the simplest solution is to exclude that
example unless UMFPACK is available.
2013-07-09 13:32:35 +02:00
Arne Morten Kvarving
d6563b298f added: download and build eigen3 from git if not found on system 2013-07-09 12:44:30 +02:00
Roland Kaufmann
82c217d0e3 Require the newer 3.1 version of Eigen 2013-06-25 14:49:10 +02:00
Bård Skaflestad
409cfb1578 White-space cleanup.
No functional changes.
2013-05-16 11:23:59 +02:00
Atgeirr Flø Rasmussen
d59363d681 Now Eigen is found properly. 2013-05-16 10:49:05 +02:00
Bård Skaflestad
970f308f59 New sentence -> capital first letter. 2013-05-16 00:10:51 +02:00
Bård Skaflestad
b74d988a7b New sentence -> capital letter. 2013-05-16 00:10:32 +02:00
Bård Skaflestad
2500f1ae58 Adopt imported build system to OPM-Autodiff specifics
Updated include statements &c to follow.
2013-05-15 15:49:48 +02:00
Bård Skaflestad
582a947d9b Complete import of CMake support from OPM-Core 2013-05-15 10:40:00 +02:00