Commit Graph
100 Commits
Author SHA1 Message Date
Andreas Lauser 78f7097798 adapt to the opm-core API change in the SaturationFunctionsFromDeck to always use non-uniform tables 2015-06-26 15:32:10 +02:00
Andreas Lauser 659f9e76e4 Merge pull request #3 from atgeirr/andlaus-simplify_simulator
Suggested changes to PR
2015-05-29 15:44:55 +02:00
Andreas Lauser 496c32d2a6 do not use std::shared_ptr where it is deemed inappropriate by the maintainers
note that I don't agree with this change and will assume no
responsibility if something goes down the gutter.
2015-05-29 14:34:47 +02:00
Andreas Lauser 5666df807b some stylistic changes
in particular, where to put empty lines and spaces. Also added a
copyright statement for myself to a few files and added a comment. the
new comment was requested by [at]bska, the rest was requested by
[at]atgeirr.
2015-05-29 12:35:56 +02:00
Andreas Lauser 553f32e6cf SimulatorBase: move the new method bodies from the .hpp to the _impl.hpp file 2015-05-28 13:55:54 +02:00
Andreas Lauser 662cd9791e SimulatorBase: only care about the solver in the run() method
this is necessary because some older simulations only provide the
full-fledged solver class but no physical model.

(also, this allows to use something else than the standard newton
solver.)
2015-05-28 13:55:54 +02:00
Andreas Lauser a154c8394d Simulator, Model: add everthing which is required by the polymer simulators
basically, this adds some hooks to the SimulatorBase class and the
model and introduces a few types to the SimulatorTraits.
2015-05-28 13:55:54 +02:00
Andreas Lauser 45fb80f547 SimulatorBase: remove the opaque pointer pattern
because the class is (and will stay) a template and for templates the
benefits of the opaque pointer pattern go from "small" to "zero".
2015-05-28 13:55:53 +02:00
Andreas Lauser 3eec9f3432 introduce a "SimulatorBase" class
so, far it is just a copy of the old "SimulatorFullyImplicitBlackoil"
class (which became a simple forward to the base class). The intention
is to unify the common simulator code in this class to avoid excessive
copy-and-pasting.
2015-05-28 13:55:53 +02:00
Andreas Lauser a9d0306fe8 reduce the default optimization level from -O3 to -O2
-O3 is sometimes declared "unsafe"
(cf. https://wiki.gentoo.org/wiki/GCC_optimization ) and it seems like
it bit us in https://github.com/OPM/opm-material/issues/23 if GCC 4.8
was used. so let's play safe and use -O2 for now...
2015-04-10 15:09:23 +02:00
Andreas Lauser e2180effce FindCXX11Features.cmake: check for the c++-2011 "final" specifier 2015-04-10 15:09:21 +02:00
Andreas Lauser e0dd62a226 only generate debugging symbols for the build types "Debug" and "RelWithDebInfo" 2015-04-10 15:09:21 +02:00
Andreas Lauser 89129aaaf6 build system: do not separate the debugging symbols by default
the reason is that the tools for profiling and for coverage analysis
(i.e., gprof and gcov) have trouble with this and crash. if you want
this to be enabled for whatever reason, use the cmake flag
-DSTRIP_DEBUGGING_SYMBOLS=ON or pass configure the
--enable-strip-debug option.
2015-04-10 15:09:20 +02:00
Andreas Lauser 2bb5159a97 FindAlugrid.cmake: do not try to include the whole grid
first this makes the test very slow, second (and more importantly) it
makes the test fail on dune master as the header relies on the
presence of the DUNE_GRID_VERSION* macros which are not present at the
configure stage of the build...
2015-04-10 15:09:19 +02:00
Andreas Lauser 50ec899a3d eWoms: silence an annoying bogous deprecation warning on Dune 2.4 2015-04-10 15:09:17 +02:00
Andreas Lauser fa04799855 remove the obsolete 'm4' subdirectory
as far as I can see, it provided M4 macros for autotools based
projects which wanted to use OPM. I have severe doubts that this was
used by anyone because it most likely does not even work. (e.g. the M4
macros does not seem to specify the ERT and opm-parser prerequisites.)

Note that I'm not 100% sure of the above, so if I'm wrong, state so
loudly and I'll close the PR...
2015-04-10 15:09:16 +02:00
Andreas Lauser 87afe12cda Finddune-grid.cmake: always enable the experimental grid extensions
this is now done by a config.h macro. The reason is that quite a bit
of code depends on boundary IDs which are only available as an
"experimental" grid extension in recent Dune releases...
2015-04-10 15:06:06 +02:00
Andreas Lauser ba4fca5a77 Revert "also pass the deck to the output writer"
This reverts commit 88730e855f.
2015-03-31 12:11:45 +02:00
Andreas Lauser 88730e855f also pass the deck to the output writer 2015-03-26 17:33:13 +01:00
Andreas Lauser f0c3a6f892 add glue code needed for thermal gas PVT 2015-03-17 13:34:29 +01:00
Andreas Lauser 924818f445 add glue code needed for thermal oil PVT 2015-03-17 13:34:29 +01:00
Andreas Lauser debb8a1a04 add glue code needed for thermal water PVT 2015-03-17 13:34:29 +01:00
Andreas Lauser ff09e87787 add the glue code required for temperature dependent viscosity 2015-02-03 15:27:38 +01:00
Andreas Lauser 69c4a6d591 adapt to the removal of the "strict parsing" concept 2014-12-09 14:18:42 +01:00
Andreas Lauser 6e52a7bc3b set CMake policies CMP0026 and CMP0048 to OLD
this is required for CMake 3.0 to stop it complaining that we access
the LOCATION target property and set the *_VERSION_* variables ourselves.
2014-12-08 15:24:49 +01:00
Andreas Lauser c3304ed1a1 FindQuadmath: add -fext-numeric-literals if the compiler supports it
this is required for GCC >= 4.8 to support the 'Q' suffix for floating
point literals (which are used in the quadmath.h header)

In order to prevent compilers which eat the flag but do not support it
from complaining constantly, it is tested for with "-Werror" enabled...
2014-12-08 15:24:48 +01:00
Andreas Lauser 57879ab6c9 make the regex test more thorough
it seems like the std::regex delivered up to gcc 4.8 has problems with
constructs such as ".+". (at least if they appear at the end of a
regex...)
2014-12-08 15:24:47 +01:00
Andreas Lauser 926685cc2c ERT: link to the threads library of the OS
this is required to make the opm-core build succeed if ERT was build
with -DBUILD_SHARED_LIBS=OFF . (without it, I get errors like

    /home/and/src/ert/devel/libert_util/src/thread_pool_posix.c:328: error: undefined reference to 'pthread_create'
2014-12-08 15:24:46 +01:00
Andreas Lauser cd8e4ad6a3 ewoms: make it possible to use the dune-alugrid module instead of the ALUGrid manager in dune-grid 2014-12-08 15:24:45 +01:00
Andreas Lauser 37ab6ef8a0 add support for the new DUNE-ALUGrid module
this is basically the dune-grid grid manager for ALUGrid properly
out-sourced into an own module. (it does not require an external
library anymore, so it simplifies the build quite a bit.) Also, the
DUNE-ALUGrid module has quite a few new features and performance
improvements compared to the old code from dune-grid. For details, see

http://users.dune-project.org/projects/dune-alugrid
2014-12-08 15:24:44 +01:00
Andreas Lauser 444e2be623 Build system: mark ERT as REQUIRED
de facto, this does not change anything because opm-parser is required
and it has a hard dependency on ERT. It is good style to declare all
prerequisites explicitly in each module, though. Thanks to [at]bska
for the catch.
2014-12-08 15:24:43 +01:00
Andreas Lauser 05a607c7c9 use extended regular expressions in the test for std::regex
for some compilers (e.g., GCC < 4.9) the default is buggy and
opm-parser thus uses extended expressions...

thanks to [at]bska for digging this up!
2014-12-08 15:23:51 +01:00
Andreas Lauser 4a7dea3747 FindCXX11Features: check for a usable std::regex
and add a config.h variable in the opm-parser test.
2014-12-08 15:23:28 +01:00
Andreas Lauser 8119580a8d Find-ewoms.cmake: update prerequisites 2014-12-08 15:23:07 +01:00
Andreas Lauser dff4e8f51c add the boost::regex library as a prerequisite
this is required for regex-matching keywords. Once GCC 4.9 is the
minimum compiler version to be supported, this can be dropped in favor
of std::regex ...
2014-12-08 15:23:06 +01:00
Andreas Lauser 526af686d8 Findopm-parser.cmake: Fix it up, next try
thanks to Arne Morten Kvarving, Bård Skaflestad and Roland Kaufmann
for the discussion.
2014-12-08 15:22:56 +01:00
Andreas Lauser 1b22d3ab6b RateConverter: add missing call to averageTemperature()
thanks to [at] bska for noticing this!
2014-12-02 15:56:17 +01:00
Andreas Lauser 4e3a69cc90 PVT properties: allow them to be temperature dependent
Note that this patch does not introduce any real temperature
dependence but only changes the APIs for the viscosity and for the
density related methods. Note that I also don't like the fact that
this requires so many changes to so many files, but with the current
design of the property classes I cannot see a way to avoid this...
2014-12-01 20:06:02 +01:00
Andreas Lauser 9e93fa2298 register the transmissibilities at the EcliseWriter
missing: the simulator using dune-cornerpoint. Once again, this is
because there is no good way to convert an intersection to a unique
global index (yet).
2014-11-21 13:20:53 +01:00
Andreas Lauser 4f44cde846 fix the fallout caused by the slightly too premature merge of PR #213
I should have put some message at the end of that PR when the API of
opm-parser changed...
2014-10-10 16:17:41 +02:00
Andreas Lauser b4f9a49bd6 fixup! sim_fibo_ad*: print the log messages from the parser/EclipseState 2014-10-06 10:12:57 +02:00
Andreas Lauser 566c7c03d7 sim_fibo_ad*: print the log messages from the parser/EclipseState 2014-10-03 15:53:57 +02:00
Andreas Lauser 7e472d66e6 Merge pull request #209 from atgeirr/improve-subset-superset
Improve performance of subset() and superset().
2014-09-25 14:22:30 +02:00
Andreas Lauser 0f436e12c9 adapt the the table related API changes of opm-parser 2014-09-18 16:49:29 +02:00
Andreas Lauser 5f61781afd sim_fibo_ad*: change the default for the use_cpr parameter from false to true
SPE9 and Norne are basically unusable if UMFPack is used as linear solver...
2014-09-03 13:35:28 +02:00
Andreas Lauser faa98b4f74 add a unit test for the implementation of transmissibilty multipliers in DerivedGeology
for the legacy C-style grid the unit test is more or less complete (it
does not test FAULTMULT and NNC, etc, but these could be added with
sufficient determination), for Dune::CpGrid it currently does not
really check anything because I have not found a good way for CpGrid
to produce the "global" intersection index of an intersection...
2014-07-28 11:30:13 +02:00
Andreas Lauser e07ef16a45 implement pore volume and transmissibility multipliers
this means that the NTG, MULTPV and MULT[XYZ]-? keywords are now
supported.

Actually FAULTS and MULTFAULT are supported too, but that's abstracted
away by opm-parser's TransMult class. (Kudos to [at]joakim-hove for
implementing this.)
2014-07-28 11:30:13 +02:00
Andreas Lauser 63eaecf246 DerivedGeology: pass the EclipseState object to its constructor
this is required to implement pore volume and permeability multipliers
as discussed with [at]bska and [at]joakim-hove.

Note that this implies that the DerivedGeology class can't be
instantiated anymore if there is no EclipseState object. Thus all code
paths and tests that don't load a deck are removed by this patch. If
this is undesireable, there are two options: First, don't require
EclipseState for DerivedGeology which would imply to make the about 10
required multiplier functions part of the
BlackoilPropertiesAdInterface, or second, one can copy-and-paste the
DerivedGeology class as it was before this patch, derive from a newly
introduced DerivedGeologyInterface and pass DerivedGeologyInterface
objects to the simulator. IMHO, the second solution would be a bit
better but it would involve substantial overhead to implement and to
maintain it.

Anyway, in the mean time simulators cannot be instantiated without
decks.
2014-07-24 16:37:38 +02:00
Andreas Lauser 543d8d75b6 pass the DerivedGeology to the simulators
this was decided to be a good idea by [at]bska. (If I interpreted him
correctly, obviously.)
2014-07-24 16:37:38 +02:00
Andreas Lauser 8645d2c207 pass the EclipseState and the PhaseUsage objects to EclipseWriter 2014-07-18 11:22:28 +02:00
Andreas Lauser 6727fe28fe adapt construction of to EclipseWriter
i.e., don't pass around the UnstructuredGrid object directly, but use
the "generic" interface which is also used in the case Dune::CpGrid.
2014-07-14 17:55:30 +02:00
Andreas Lauser 9169bee053 use extended regular expressions in the test for std::regex
for some compilers (e.g., GCC < 4.9) the default is buggy and
opm-parser thus uses extended expressions...

thanks to [at]bska for digging this up!
2014-07-08 13:24:34 +02:00
Andreas Lauser 4e298bb4f9 FindCXX11Features: check for a usable std::regex
and add a config.h variable in the opm-parser test.
2014-07-07 17:58:07 +02:00
Andreas Lauser af60949051 add the boost::regex library as a prerequisite
this is required for regex-matching keywords. Once GCC 4.9 is the
minimum compiler version to be supported, this can be dropped in favor
of std::regex ...
2014-07-02 11:25:57 +02:00
Andreas Lauser 5cdece9e3e Findopm-parser.cmake: Fix it up, next try
thanks to Arne Morten Kvarving, Bård Skaflestad and Roland Kaufmann
for the discussion.
2014-07-02 11:24:14 +02:00
Andreas Lauser 778e87d710 Findopm-parser.cmake: invoke FindBoost unconditionally
even if boost was found previously, it might still miss a few
libraries. thanks to @akva2 for catching this.
2014-06-16 15:50:02 +02:00
Andreas Lauser d530dcfe17 Findopm-parser.cmake: make sure that the ERT libraries are available
and some other minor cleanups to the module. For me it still works,
but this being the build system, I can't guarantee more...
2014-06-16 15:50:01 +02:00
Andreas Lauser 99b4cf5067 allow the opm-parser test to fail
since the module currently calls the tests for cJSON and boost with
the REQUIRED flag set, cmake aborts completely even if opm-parser is
not REQUIRED. For modules which depend on opm-core that's currently a
non-issue because core has a requirement on parser, but the parser may
be useful for external projects as well, so we play nice.

Also, with this patch the config.h variable HAVE_OPM_PARSER is set...
2014-06-16 15:50:00 +02:00
Andreas Lauser 7c767e8686 sim_fibo_ad_cp: make it compile
The constructor for the simulator class changed recently...
2014-06-13 18:07:51 +02:00
Andreas Lauser 776f5e9005 explicitly include <array>
it _seems_ like this causes the build  failures of the RHEL 5 build at
statoil: http://opm-project.org/CDash/viewBuildError.php?buildid=18933
2014-06-09 13:22:40 +02:00
Andreas Lauser 0219f83563 glue in support for property modifiers
i.e. reading the grid properties from EclipseState instead of from the
raw deck. This requires that all deck files exhibit a GRID and a
SCHEDULE section or else EclipseState will throw in the constructor.
2014-06-09 12:36:46 +02:00
Andreas Lauser 2fda604c3b fix a few annoying but harmless warnings appearing on newish compilers
(i.e. clang 3.3 in my case.)
2014-05-13 13:39:27 +02:00
Andreas Lauser 756de358c0 implement multi-region PVT
this requires the multi-region PVT patch for opm-core
2014-05-13 13:39:26 +02:00
Andreas Lauser ebb1da0662 replace all boost:: smart pointers by their std:: equivalents
The std variants are part of c++-2011 and it's 2014 now. (they are
also available in GCC 4.4.)
2014-05-02 16:17:54 +02:00
Andreas Lauser b7f3ee7b79 rename "newParserDeck" to "deck" 2014-05-02 15:48:04 +02:00
Andreas Lauser dbb19403fc completely remove the EclipseGridParser from the module 2014-05-02 15:47:52 +02:00
Andreas Lauser 553698a933 remove tests/integration_tests/sim_fibo_ad_test.cpp
this test seems to compare the old and the new parser which does not
make sense anymore once the old parser is no longer available...
2014-05-02 13:59:25 +02:00
Andreas Lauser 83705279bb add the TABDIMS keyword to the data file for the fluid unit test
that's necessary because the Eclipse RM references it in the table
keywords and the opm-parser needs the keyword to be present to use
it...
2014-04-30 16:49:29 +02:00
Andreas Lauser d9920e34eb make the "-Wl,--as-needed" flag optional
as there is not much harm done if it is not used but it may cause the
build to fail if it is present (read: it causes _my_ build to fail),
it defaults to OFF.
2014-04-22 13:35:26 +02:00
Andreas Lauser 4fd75a4433 do not add the "-Wl,--as-needed" linker flag in FindSuiteSparse.cmake
because if umfpack is fully linked but some other library is
underlinked, it causes the build to fail. This flag is better dealt
with in the "UseOnlyNeeded.cmake" module...
2014-04-22 13:35:25 +02:00
Andreas Lauser 73db2c388c add support for the UG grid library
recently UG has become free software (yay!), so we can now support it
with a good conscience. The CMake module is based on the "UseUG.cmake"
module of dune-grid but it is quite a bit simpler and actually
works. (I cannot see how UseUG.cmake can work without ever including
the ug-config*.cmake files...)

the UG source code is available here:

https://github.com/ugfem/ug
2014-04-22 13:35:23 +02:00
Andreas Lauser e92cac6d0c fix typo: it's PVCDO, not PVDCO 2014-04-11 11:54:56 +02:00
Andreas Lauser 8437051416 make everything compile with the newly refactored EclipseWriter
the states needed to be removed from the call to writeInit()...
2014-04-02 17:06:20 +02:00
Andreas Lauser 5e7064b337 sim_fibo_ad: remove compatibility code for old parser
this makes the simulator quite a bit more maintainable: setting
USE_NEW_PARSER to 0 did not even compile after the the constructor for
the wells manager which took the old deck was removed last
week. Since, according to Atgeirr, SPE-1 is now producing exactly the
same results as before, it also does no longer make too much sense to
keep that code on life support...
2014-03-31 16:39:17 +02:00
Andreas Lauser 8cd93bf70a FullyImplicitBlackoilSolver: cleanup the residualNorm() method 2014-03-26 15:16:43 +01:00
Andreas Lauser 2f84156b91 FullyImplicitBlackoilSolver: Throw an exception uppon encountering a non-finite residual 2014-03-26 12:54:46 +01:00
Andreas Lauser 168b4379d5 don't pass the eclipsewriter to the simulator anymore
i.e., the simulator does not deal with any output operations
anymore. This makes sense because report steps are handled by
Opm::TimeMap and the constructor for the simulator already needs more
arguments than appropriate even without this...
2014-03-25 13:17:30 +01:00
Andreas Lauser 9237aa2443 FullyImplicitBlackoilSolver: make constantState() and variableState() consistent
With this, constantState() just calls variableState() and throws away
the derivatives. This might be a bit slower than necessary, but it
makes these two methods automatically consistent and constantState()
is only called once per timestep anyway...

thanks to @atgeirr for the suggestion!
2014-03-25 11:55:13 +01:00
Andreas Lauser 79c93953f8 sim_fibo_ad: don't instantiate an old parser object if USE_NEW_PARSER is set anymore
I thought I included this in a previous PR. Seems like I was wrong...
2014-03-20 15:44:53 +01:00
Andreas Lauser dee6f683cb sim_fibo_ad: re-add ouputting of the current report step when using opm-parser
in the old parser, this was called 'epoch'...
2014-03-20 13:14:34 +01:00
Andreas Lauser 49a5b67137 sim_fibo_ad: fix writing
the initial condition was written multiple times. We now fix this by
not writing anything in the simulator and moving this logic to the
main loop..
2014-03-19 17:40:51 +01:00
Andreas Lauser 66d73083b2 sim_fibo_ad: convert to the new-style wells manager
i.e. it now uses Opm::EclipseState. This change required to re-add the
the epoch concept in some sense, but the loop variables now call it
"episode" which sounds less ethernal IMO.
2014-03-19 17:40:38 +01:00
Andreas Lauser 0ce6093b69 go back to incrementing the current simulation time first, then calling EclipseWriter::writeSolution()
for this not to trigger an assertation after the last time step, the
changes of OPM/opm-parser#141 are required.
2014-03-11 16:05:00 +01:00
Andreas Lauser 1383eadf8f fix the fallout of the SimulatorTimer::currentTime() -> SimulatorTimer::simulationTimeElapsed() rename 2014-03-11 16:01:59 +01:00
Andreas Lauser d9228403d4 OpmFind.cmake: also check for CAPITALIZED found variables
thanks to @rolk for catching this
2014-02-28 17:52:24 +01:00
Andreas Lauser 113162263d OpmFind.cmake: prevent multiple calls to the same module in the same run
this prevents to check for the same module more than once in the same
cmake run and should thus speed things up a bit as well as make the
output a bit cleaner. For this I assumed that the ${name}_FOUND cmake
variable does not get cached, which it seems like it does not...
2014-02-28 17:52:23 +01:00
Andreas Lauser 5601eece73 cmake: make sure all calls to message() exhibit a type 2014-02-28 17:52:22 +01:00
Andreas Lauser 5de11630d5 use the SimulatorTimer which is based on opm-parser's TimeMap
at least if the USE_NEW_PARSER preprocessor macro in sim_fibo_ad.cpp
is set to 1. (if it is false, nothing changes.)
2014-02-27 11:56:33 +01:00
Andreas Lauser dd080c4515 first write out the result of a time step, then increment the timer
if done the other way round we would make an assertation in TimeMap
false and also the values returned by SimulationTimer would be for the
next time step and not the current one...
2014-02-21 16:06:26 +01:00
Andreas Lauser c23b38f60b re-add the epoch stuff
this is required until the new time step handling code lands...
2014-02-14 17:57:08 +01:00
Andreas Lauser d7d25253f3 adapt to the changes in the APIs of the parser-integrate branch in opm-core
Since the SimulationTimer, EclipseWriter and WellsManager stuff has
not (yet?) been merged, the old parser is required to be around. Use
my parser-integrate-hacks_for_norne branches to test your stuff on the
Norne deck...
2014-02-14 17:57:08 +01:00
Andreas Lauser 09f56b416f sim_fibo_ad: add macro to easily switch between the old and the new parser 2014-02-14 17:56:25 +01:00
Andreas Lauser f7541aa27a BlackoilPropsAdFromDeck: Add support for PVTO 2014-02-14 17:56:20 +01:00
Andreas Lauser 6b0e1d4562 sim_fibo_ad: completely replace the old eclipse parser by the new one
this required to abandon the "Epoch" stuff which the new parser does
not have (as well as the ECLIPSE file format knows nothing about
epochs). Handling well controls properly thus has to wait until Joakim
and Kristian finish refurbishing the WellsManager, so as a stop-gap
measure, only the first "epoch" is run.
2014-02-14 17:56:20 +01:00
Andreas Lauser 198f805c2a switch to the new parser's table utility classes 2014-02-14 17:56:08 +01:00
Andreas Lauser 2deeeef4e4 really use the new parser
in the previous commit this was #if 0'ed...
2014-02-14 17:56:08 +01:00
Andreas Lauser 7f485626a2 use the new parser to read the PVT and grid data from the deck
the old code has not yet been removed, but in the long term, this is
probably the way to go.
2014-02-14 17:56:07 +01:00
Andreas Lauser 627b1f3906 make the deck from opm-parser available to the black-oil PVT property classes 2014-02-14 17:56:07 +01:00
Andreas Lauser 58afaa5069 fix the rebase fallout 2013-12-06 10:33:58 +01:00
Andreas Lauser 6f2fd5ae69 use the reference pressure to calculate the transmiscibility factors 2013-12-06 10:19:08 +01:00