Commit Graph
100 Commits
Author SHA1 Message Date
Andreas Lauser 51b24d33d5 EclWriter: remove obsolete writeOutput() overload
this has been unused for any simulator for a while. the only code
which called it was the ECL output test, but this one could be easily
ported.
2019-02-06 12:21:08 +01:00
Andreas Lauser dc1b92521a ebos: make it possible to account for external setup costs 2019-02-06 12:21:08 +01:00
Andreas Lauser 4ecda15b11 coding style fixes for the black-oil model and more style fixes for ebos 2019-02-01 17:33:30 +01:00
Andreas Lauser 7f27c4fb4b fix coding style of the ECL tracer model 2019-02-01 17:33:30 +01:00
Andreas Lauser 9afa62b78b fix some minor coding style issues in Ewoms::EclOutputBlackOilModule 2019-02-01 17:33:30 +01:00
Andreas Lauser 8b89e6ed97 unify coding style of Ewoms::AluCartesianIndexMapper 2019-02-01 17:33:30 +01:00
Andreas Lauser c600d807b6 use the eWoms coding style conventions for Ewoms::TracerVdTable 2019-02-01 17:33:30 +01:00
Andreas Lauser a9359602fc fix some minor coding style inconsistencies in EclWriter 2019-02-01 17:33:30 +01:00
Andreas Lauser 80e04aa8b4 fix style issues in EclTransmissibility and make the editNnc handling a bit simpler
the new editNNC code might be slightly slower, but I doubt that the
difference is even measureable for real decks.
2019-02-01 17:33:30 +01:00
Andreas Lauser 0aa9a2c6b8 make the coding style of femcpgridcompat.hh consistent with the rest of eWoms/ebos 2019-02-01 17:33:30 +01:00
Andreas Lauser c2377e7b10 EclNewtonMethod: make the exponent of the tolerance scaling settable by a parameter
the parameter is called `EclNewtonSumToleranceExponent`. if it is set
to 1, the specified tolerance will be used directly. (this is not
desireable in the general case though, because at the same result
quality, the sum error for large reservoirs can be larger than for
small ones.)
2019-01-11 11:24:20 +01:00
Andreas Lauser 0492796e85 address review comments 2019-01-11 11:21:23 +01:00
Andreas Lauser ec391f529d make the ebos-Newton specific parameters setable from the command line
also, tweak them a bit: increase the sum tolerance before scaling to
1e-3 and reduce the default number of strict iterations to 4.
2019-01-11 11:21:23 +01:00
Andreas Lauser c08f0008ad EclNewtonMethod: tweak the parameters a bit 2019-01-11 11:21:23 +01:00
Andreas Lauser 85a9b75076 ebos: allow larger errors for larger reservoirs
albeit, we scale the error only to the cube root of the pore
volume. the rationale is that the same amount of mass can get lost
"along" a line for each timestep.

maybe it would be a good idea to do something like this for time step
size as well because taking multiple small time steps currently allows
a much larger error in the result than doing it in one big step.
2019-01-11 11:21:23 +01:00
Andreas Lauser 07e1b4ecde ebos: introduce an EclNewtonMethod
this calculates the error and convergence differently from the
standard Newton method.
2019-01-11 11:21:23 +01:00
Andreas Lauser 18e64d0e7e fix some masochistic compiler warnings for the GCC 9 pre-release
the flags which I used are
```
-pedantic \
-Wall \
-Wextra \
-Wformat-nonliteral \
-Wcast-align
-Wpointer-arith \
-Wmissing-declarations \
-Wcast-qual \
-Wshadow
-Wwrite-strings \
-Wchar-subscripts \
-Wredundant-decls \
-fstrict-overflow \
-O3 \
-march=native \
-DNDEBUG=1
```

note that some heavy filtering is not the worst idea because DUNE is
far from not emiting any warnings with these flags.

Also, there were some pesky warnings in test_ecl_output which I don't
know how to fix:

```
tests/test_ecl_output.cc:218:73: warning: missing initializer for member ‘Opm::data::Connection::effective_Kh’ [-Wmissing-field-initializers]
```
2019-01-09 09:34:26 +01:00
Andreas Lauser 5d581bab7e ebos: fix explicit init for twophase cases
since OPM/opm-material#310 has been merged, data for deactivated
phases is not stored anymore and can thus no longer be accessed/set.

this fixes OPM/opm-simulators#1686
2019-01-08 11:18:17 +01:00
Andreas Lauser af0d02b03d use enableEnergy consistently
thanks to [at]totto82 for noticing.
2018-12-21 10:07:58 +01:00
Andreas Lauser 0a1fa8de81 make it possible to explicitly compute the storage term of the previous time step
some weird hacks (hello, DR[SV]DT) cause a change of the storage term
in the first Newton-Raphson iteration compared to the solution of the
previous time level. In order to use the correct values, one thus must
explicitly recompute the storage term for the previous time step
instead of just reusing the result of the first Newton-Raphson
iteration of the current time step.
2018-12-20 15:52:06 +01:00
Andreas Lauser 6a29318adf ebos: only write out temperature in thermal runs 2018-12-17 11:37:47 +01:00
Andreas Lauser 781825121d some cleanups 2018-11-12 12:48:33 +01:00
Andreas Lauser a5493919da ecl base vanguard: make the schedule and summaryConfig objects user-replaceable
thanks to [at]atgeirr for the suggestion.
2018-11-08 11:32:56 +01:00
Andreas Lauser 868c4b1cc5 ebos: clean up the mess that is the schedule and summaryConfig objects a bit
IMO the simulator should not be in the business of managing low-level
parser objects in the first place, because that's what EclipseState is
supposed to do?!

anyway, since these objects are not needed to decide which simulator
to use, they are now always managed internally by the vanguard, i.e.,
setExternalDeck() does not take them anymore.
2018-11-07 12:31:20 +01:00
Andreas Lauser ec898fa8c2 extend the aquifer model so that it can initialize itself
nothing is perfect on first try...
2018-10-30 11:22:26 +01:00
Andreas Lauser 7fd640bb9e make all header files includeable on their own right again
some property definitions and includes were missing.
2018-10-29 10:05:46 +01:00
Andreas Lauser 1d16dfc3fa fix some warnings produced by clang 6
they are all harmless.
2018-10-29 10:05:46 +01:00
Andreas Lauser f03711aff6 replace tabs by spaces
for whatever reason a few tabulator characters crept in...
2018-10-29 10:05:46 +01:00
Andreas Lauser 23670c6797 ebos: add an API for aquifiers
this is similar to the mechanism for well models: the API is defined
here, but can be overloaded by downstream modules. In contrast to the
well model where the default class follows a simplistic approach the
default class for aquifiers does nothing, i.e., the actual
implemenentation must be provided by downstream.
2018-10-23 17:47:38 +02:00
Andreas Lauser d5328fe69c EclProblem: only create the eclWriter_ object once
thanks to [at]bska for catching this.
2018-09-29 10:59:42 +02:00
Andreas Lauser 1a8f3e72ee move registration of the EnableOpmRstFile parameter to EclBaseVanguard
before this patch, the parameter was registered by the problem but not
used there. Since this is quite confusing, let's move registration to
where the parameter is actually used, i.e., the vanguard.
2018-09-17 11:25:35 +02:00
Andreas Lauser e5ab52b773 ebos: avoid sign-comparison warning
seems like I didn't compile #364 with pedantic warning flags enabled.
2018-08-20 13:13:57 +02:00
Andreas Lauser fe5ccc2194 ebos: complain about old-style parameter specification explicitly
i.e., complain when detecting foo=bar positional parameters. this is
not a bullet-proof solution because it will not work if the deck file
name contains an equals character. Anyway, it's better than before
IMO.
2018-08-17 13:51:11 +02:00
Andreas Lauser 095a529f28 add some quotes to the user output
this makes it clearer that no deck has been specified.
2018-08-17 13:08:23 +02:00
Andreas Lauser ed7d4d47c1 implement line breaks in the usage message
i.e. for `--help`. this is surprisingly complicated...
2018-08-16 15:55:51 +02:00
Andreas Lauser 6e7be50610 make the "OutputDir" parameter apply universally
all disc output, i.e. VTK, restart files, ECL and -- in the future --
logfiles, goes to that directory. before this, only the ECL output
could be directed to a different than the current working directory
and the parameter for this was called "EclOutputDir".

note that the Dune VTK writing infrastructure makes it harder than it
needs to be: suddenly Dune::VTKWriter::write() does not work in
parallel anymore, but Dune::VTKWriter::pwrite() must be called with
the right arguments.
2018-08-14 12:04:51 +02:00
Andreas Lauser 0d864f8e71 ebos: handle positional parameters more robustly
previously, the exact behaviour was dependent on wheter the
--ecl-deck-file-name parameter was defined or not. now the positional
parameter is hopefully an exact alias for the value of --ecl-deck-file-name.
2018-08-10 18:21:16 +02:00
Andreas Lauser e7606d2afd ebos: complain more explicitly about the input deck being unspecified
the previous error message was a bit confusing.
2018-08-07 11:37:12 +02:00
Andreas Lauser 2f1f14483b ebos: change the brief description slightly
the purpose is to make it exceedingly clear that ebos is not developed
by the ECL group who started ECLIPSE which is an backcronym for
"ECL's Implicit Program for Simulation Engineering" and ECL stands for
"Exploration Consultants Limited" which is now a division of
Schlumberger Limited.

thanks to [at]atgeirr for pushing this.
2018-08-07 10:48:43 +02:00
Andreas Lauser 0a8a791c49 ebos: make the brief description settable from the exterior
this allows `flow` to print something else than plain-`ebos`.
2018-08-06 10:46:28 +02:00
Andreas Lauser 935b5a5a9d adapt to the fluid system naming convention change in opm-material 2018-07-27 12:56:19 +02:00
Andreas Lauser ef845bb4f4 ebos: add possibility to disable the FIP output even if requested in the deck
this significantly reduces the noise level of debug files if the FIP
values are not of interest.
2018-07-26 12:31:32 +02:00
Andreas Lauser 29e113f1fd ebos: get rid of HAVE_ECL_{IN,OUT}PUT
there are about a trillion places within ebos where the availability
of the ECL I/O routines is hardcoded, so it does not make sense to
pretent that the EclWriter can be useful without them.

(in fact, ebos is deactivated at build system level if the ECL I/O
routines have not been detected.)
2018-07-12 13:47:01 +02:00
Andreas Lauser b5ac85b5d0 ebos: simplify the output writing code if the default timeloop is used
`flow` doesn't, so it is unaffected.
2018-07-12 13:47:01 +02:00
Andreas Lauser 24fc04a102 collecttoiorank.hh: use camelCase consistently 2018-07-12 11:15:37 +02:00
Andreas Lauser b92aee90b5 CollectToIORank: remove unnecessary whitespace, braces 2018-07-12 11:15:24 +02:00
Andreas Lauser 4342210b5e CollectToIORank: fix formatting of function declarations reduce unnecessary usage of whitespace 2018-07-12 11:00:56 +02:00
Andreas Lauser 88135e9f7c CollectToIORank: minor fixes to the boiler plate 2018-07-12 11:00:31 +02:00
Andreas Lauser d9b3b5c2e5 CollectToIORank: reindent code 2018-07-12 11:00:26 +02:00
Andreas Lauser 4b2d114f90 properly handle exceptions in auxiliary modules and the problems pre- and postprocessing routines
so far, exceptions thrown there caused MPI to desynchronize.
2018-07-11 13:59:29 +02:00
Andreas Lauser ed0542b53b ebos: make it work in parallel 2018-07-11 13:59:29 +02:00
Andreas Lauser 2c97fa302f auxiliary modules: add a callback that is called after the linear solver but before the solution update
amongst others, this allows to properly implement Schur complements.
2018-07-09 12:13:58 +02:00
Andreas Lauser a395a6d6ce switch auxiliary modules from std::shared_ptr to raw pointers
lifetime management of these objects by shared pointers is not always
feasible; at least it is not always doable without awful hacks.
2018-07-09 12:13:58 +02:00
Andreas Lauser cd725aeb8a ebos ECL output: move the parameter extraction code for the well data to the well model
this is supposed to be an implementation detail of the well model.
2018-07-09 12:13:58 +02:00
Andreas Lauser 8319a67862 ebos: make the well model user definable
this introduces a new property `EclWellModel` and uses the class which
it specifies instead of `EclWellManager` directly.
2018-07-09 12:13:57 +02:00
Andreas Lauser 864fc12469 fix extra compiler warnings
this is only relevant people who are masochistic enough to go beyond
`-Wall`. (note that at this warning level, there is plenty of noise from
Dune and other upstream dependencies.)
2018-07-02 09:17:56 +02:00
Andreas Lauser 57f98d1612 ebos: allow to specify the ECL case name
... instead of just the full file name of the deck. this mirrors
flow's behavior.
2018-06-20 09:24:29 +02:00
Andreas Lauser c402ae4854 implement an "ECL output interval"
i.e., the ECL restart files are not necessarily updated after each
report step, but only each N-th (where N is the number specified by
the EclOutputInterval parameter). if this value is set to something
smaller than zero, the value which is computed by the EclipseState
object is used.
2018-06-15 20:27:42 +02:00
Andreas Lauser 26e6d56930 do explicit put properties into the the Ewoms::Properties namespace anymore
instead, do it implicitly by using the BEGIN_PROPERTIES and
END_PROPERTIES macros.
2018-06-15 20:22:07 +02:00
Andreas Lauser 739a0ef0d0 parameter system: add support for positional parameters
further, this cleans up the code of the parameter system and the
startup routines a bit and finally, it adds positional parameters
support to ebos as well as brief descriptions to ebos and the lens
problem.
2018-06-14 11:13:30 +02:00
Andreas Lauser 91c209eb09 some stylistic cleanups of the ECL writer 2018-06-14 11:13:30 +02:00
Andreas Lauser a53ef08699 ecloutputblackoilmodule.hh: adapt coding style to the rest of eWoms
the style was mostly fine, but there were a few leftovers from the
pre-eWoms epoch of that code.
2018-04-30 19:06:07 +02:00
Andreas Lauser f96d553d8e ebos: salvage temperature from the initial fluid states for isothermal simulations
this is required because temperature needs to be always specified. in
the case of isothermal simulations, the temperature is assumed to be
the initial one, i.e., freeing up the initial fluid states also makes
the temperature undefined.

I suspect that the reason why this did not lead to crashes is that for
isothermal `BlackOilFluidState` objects, the temperature is stored in
a static member variable.

thanks to at [at]bska for catching this issue.
2018-04-12 14:22:10 +02:00
Andreas Lauser ae779f2132 make all headers autonomous again 2018-04-11 13:06:56 +02:00
Andreas Lauser b64ca374c3 make ebos compile with dune-fem being around for dune 2.6
dune 2.6 seems to expect a referenceElement(geo) free function.
2018-04-10 13:31:04 +02:00
Andreas Lauser ede2ef35af rename compatibility.hh to ebos/femcpgridcompat.hh
the purpose of this seems to be to make 'Opm::CpGrid' usable with
'dune-fem'. This is quite a fringe case, and the code should better go
to opm-grid.
2018-04-10 13:31:04 +02:00
Andreas Lauser 1af2996b2a move the base class for auxiliary modules to ewoms/disc/common
that's where it belonged in the first place.
2018-04-10 10:05:18 +02:00
Andreas Lauser ffe3914ddd thermal blackoil: fix a few issues with thermal conductivity 2018-04-05 19:31:55 +02:00
Andreas Lauser 26228ec5f3 fix the issues that emerged in the context of [at]totto82's review 2018-04-05 19:31:55 +02:00
Andreas Lauser 54c96aa1c2 blackoil, ebos: implement non-trivial boundary conditions
with this, it is possible do define fluxes of conservation quantities
over the domain boundaries by specifying the thermodynamic state on
the boundary when using the black-oil model. The main motivation is
are thermal fluxes which are required to maintain geothermal
temperature gradients over time.
2018-04-05 19:31:55 +02:00
Andreas Lauser 815be1451b implement the ebos part of energy conservation
I.e. everything which is ECL specific.
2018-04-05 19:31:55 +02:00
Andreas Lauser 4241986e94 equil initializer: use TEMPI to specify the initial temperature
this also implicitly takes care of RTEMPVD, RTEMP and all the other
ways of specifying the initial reservoir temperature.
2018-04-05 19:31:12 +02:00
Andreas Lauser 3288548c7e disable asynchronous output for the ECL output test
this leads to crashes deeply inside libecl. My cursory hypotheses are
that this test makes the assumption that the output is written
synchronously (it tries to read back the results from disk
immediately) and/or that libecl is not threadsafe.
2018-03-21 10:31:15 +01:00
Andreas Lauser ddb6ef2acb generalize the tasklet mechanism to an arbitrary number of worker threads
this has been quite a bit more complicated than I initially thought.
2018-03-15 11:05:10 +01:00
Andreas Lauser b39b60109d cosmetic changes to EclWriter
this commit does not do any logic changes, just identation, variable
names, etc.
2018-03-12 16:51:30 +01:00
Andreas Lauser 8f61fe03fa switch the EclWriter to the new tasklet infrastructure 2018-03-12 16:51:30 +01:00
Andreas Lauser 7b56e9e9df clean up the determination of the directory for output
this should be done by the vanguard, not by the problem!
2018-03-12 16:51:30 +01:00
Andreas Lauser 5f8fdb2324 make all headers fully autonomous again 2018-03-12 14:31:37 +01:00
Andreas Lauser 21cce7514e fix a few "unused variable" warnings that occur on more uncommon compilers
i.e. on ICC. the compiler is right in producing warnings here, though.
2018-03-03 13:27:48 +01:00
Andreas Lauser 436c9f8791 rename the "grid manager" to "vanguard"
IMO the term "vanguard" expresses better what these classes are
supposed to do: level the ground for the cavalry. Normally this simply
means to create and distribute a grid object, but it can become quite
a bit more complicated, as exemplified by the vanguard classes of
ebos..
2018-02-08 16:26:58 +01:00
Andreas Lauser 260d62c2b8 adapt to the move of code from opm-common to opm-material 2018-02-08 12:11:20 +01:00
Andreas Lauser 9e7857ec1c allow to specify the ECL output directory
by default, it is the current directory.
2018-02-05 14:24:11 +01:00
Andreas Lauser 8b7c14c4db adapt to the reordering template arguments of get*_(fluidState) in opm-material 2018-01-19 11:49:06 +01:00
Andreas Lauser 49289c272d use a named constant for the value of saturation that determines the presence of free gas 2018-01-10 15:06:24 +01:00
Andreas Lauser 7c2c0052b2 use infinity as the value for the last Rs
hopefully this does not screw anything up.
2018-01-10 15:06:24 +01:00
Andreas Lauser 3b30134a29 adress [at]atgeirr's review comments 2018-01-10 15:06:24 +01:00
Andreas Lauser 5a1413476a implement support for the 'FREE' option of DRSDT
funnily enough, DRVDT does not exhibit such a flag...
2018-01-10 15:06:23 +01:00
Andreas Lauser 9a5a8c53dc move the maximum oil saturation stuff into the problem
this also simplifies creating a more proper selection logic for the
DR[SV]DT keywords or VAPPARS.
2018-01-10 15:06:23 +01:00
Andreas Lauser 853d64c12c deactivate DR[SV]DT if VAPPARS is present
actually, it depends on the ordering of these keywords, but this
requires some probably rather extensive changes in opm-parser.
2018-01-10 15:01:43 +01:00
Andreas Lauser 404b8d38b9 implement the ebos part of DRSDT 2018-01-10 15:01:43 +01:00
Andreas Lauser 4957a301f1 fix all Dune 2.6 related compiler warnings in ebos 2018-01-08 12:23:58 +01:00
Andreas Lauser c8d7be3848 make all headers autonomous again 2018-01-03 19:03:22 +01:00
Andreas Lauser 817f91d176 make the equil test work in the presence of dune-fem 2018-01-03 18:53:03 +01:00
Andreas Lauser 4e37c53038 restore the hydrostatic equilibration test from opm-core
This involved quite a bit of kicking and screaming. The result
certainly is not pretty, but it works.
2018-01-03 12:28:12 +01:00
Andreas Lauser f65e9fbb69 remove the runtime parameter system from all time critical code paths
it was not supposed to be used there in the first place, but it crept
into the discretization code.
2018-01-02 14:28:52 +01:00
Andreas Lauser 794fc3f588 equil init: reduce the tolerance of the regula falsi solvers to 1e-10 2018-01-02 14:28:06 +01:00
Andreas Lauser 2f00e7804a equil init: rename the files according to the eWoms standard convention
the eWoms file naming convention should probably be changed to the one
of the remaining OPM modules, but this is quite a bit of work and IMO
it is more important to be consistent within the module.
2018-01-02 14:28:06 +01:00
Andreas Lauser 69b1a5ca5a equil init: formating fixes to make it more consistent with the rest of ewoms
in particular, this removes excessive whitespace usage.
2018-01-02 14:28:06 +01:00
Andreas Lauser 79856b3b0a equil init: change all variables to camelCase
this makes it more integrated with the rest of eWoms.
2018-01-02 14:28:06 +01:00
Andreas Lauser 01c2a2da97 equil init: re-indent
this makes the indentation style of the equil init code consistent
with the rest of eWoms.
2018-01-02 14:28:06 +01:00