Commit Graph
100 Commits
Author SHA1 Message Date
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
Andreas Lauser 0690cad957 equil init: get rid of boost::iterator_range
this class is rather simple and it was the only thing from Boost used
by the hydrostatic equilibrium code...
2018-01-02 14:28:06 +01:00
Andreas Lauser d142060386 equil init: replace opm-core's linear interpolation function by Tabulated1DFunction 2018-01-02 14:28:06 +01:00
Andreas Lauser 3f875fb8f2 equel init: pass the type tag to the InitialStateComputer
also, get rid of Opm::extractPvtTableIndex()
2018-01-02 14:28:06 +01:00
Andreas Lauser 028a8c808b equil init: get rid of opm-core's "root finders"
instead, let's bit the bullet and add the few lines required for
regula-falsi-Pegasus method whenever the old RegulaFalsi class was
used. note that this leads to slightly different results for the
SPE5CASE1 flow test. I suspect that the old solvers behave in
unexpected ways, though...

Note that because the inverted functions are usually piecewise linear,
inversion can be done in a much smarter way.
2018-01-02 14:28:06 +01:00
Andreas Lauser db9e26761f equil init: get rid of some UgGridHelpers usage
this only deals with the easy things, i.e. UgGridHelpers::numCells()
and UgGridHelpers::dimensions(). a more thorough cleanup is needed in
the future to make ebos work with grids other than Dune::CpGrid again.
2018-01-02 14:28:06 +01:00
Andreas Lauser 669d3fcd2a equil init: re-indent EquilibrationHelpers.hpp 2018-01-02 14:28:06 +01:00
Andreas Lauser 6f07f38fb1 equil init: get rid of initStateEquil_impl.hpp
now, all the beauty of that part of the code can be admired in
initStateEquil.hpp.

During this exercise, I stumbled over some serious code-quality issues
like a different order of the template arguments for the declaration
and the definition, mismatching argument names and no forward
definition of some functions. besides this, some functions were
already defined in the non-_impl.hpp file and EquilibrationHelpers.hpp
used that approach from the outset.
2018-01-02 14:28:06 +01:00
Andreas Lauser 6871e1cf88 move the hydrostatic equilibrium code to its proper location and make it compile
this just moves the hydrostatic equilibrium code from its historc
location at opm/core to ebos/equil and adds minimal changes to make it
compile. this allows to clean up that code without disturbing the
legacy simulators.
2018-01-02 14:28:06 +01:00
Andreas Lauser 6f36076516 consolidate the unit system to opm-parser
since the unit code within opm-parser is now a drop-in replacement,
this simplifies things and make them less error-prone.

unfortunately, this requires quite a few PRs. (most are pretty
trivial, though.)
2018-01-02 14:28:06 +01:00
Andreas Lauser 0d9629a282 set the Rv and Rs factors to the saturated values for cells which have no gas and no oil
the purpose of this is to get a more defined behaviour when doing the
gravity correction/upstream cell determination in the flux term.

I consider this to be just a kludge, so if anyone has a better idea of
what the composition for the non-existing gas and oil phases is,
please tell me. (note that generic compositional models do not exhibit
this issue because the composition of all fluids is always fully
defined because each component is assumed to dissolve in every phase.)
2018-01-02 14:28:06 +01:00
Andreas Lauser 89361792e2 InitStateEquil: fix valgrind complaint about uninitialized values
it seems that it was pure luck that this worked so far!
2018-01-02 14:28:06 +01:00
Andreas Lauser 18c641e0c7 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...
2018-01-02 14:28:06 +01:00
Andreas Lauser 5518843275 adapt the the table related API changes of opm-parser 2018-01-02 14:28:06 +01:00
Andreas Lauser 897f64c21a incorperate the review comments/decisions for multi-region PVT
the largest change is that all classes below opm/core/props/pvt take
the PVT region index as an argument, the higher-level ones (i.e.,
BlackoilProps*) take cell indices.
2018-01-02 14:28:06 +01:00
Andreas Lauser 68623918a7 Implement multi-region PVT for all property classes
since they are not using a single PVT table anymore, their "Single"
prefix has been removed...
2018-01-02 14:28:06 +01:00
Andreas Lauser 5194a1a782 rename all "newParserDeck" objects to "deck"
The "new" parser is now "the" parser...
2018-01-02 14:28:06 +01:00
Andreas Lauser bd45d3e693 remove EclipseGridParser compatibility methods from all classes 2018-01-02 14:28:06 +01:00
Andreas Lauser 3bf249e1ab adapt to the renames of the table classes in opm-parser
basically, "Opm::SimpleTable" becomes "Opm::SingleRecordTable".
2018-01-02 14:28:06 +01:00
Andreas Lauser ab72522e6c grid managers: update the GridPart / GridView after loadBalance()
depending on the grid implementation, the grid view / grid part object
does not necessarily follow the change. For some reason, the grid part
still does not work in the parallel case (tested with dune-fem 2.4),
but that seems to be an issue on the dune-fem side.
2017-12-11 15:19:09 +01:00
Andreas Lauser 0cad40e420 black-oil: do not write the saturated oil formation factor to VTK anymore
this quantity is pretty useless, and the analogous one for wet gas was
never written...
2017-12-06 15:06:29 +01:00
Andreas Lauser 6598df59cc Revert "ebos: don't break the downstream build because of the SimulatorParameter mess"
This reverts commit c873e8c92da389bc1d6bc4ed2a5241faddfa7630.

since OPM/opm-simulators#1287 has been merged there are no "in tree"
upstreams which use that mechanism anymore.
2017-10-11 16:12:41 +02:00
Andreas Lauser d51934ce37 ebos: don't break the downstream build because of the SimulatorParameter mess
this now works with the unmodified master version of flow from
opm-simulators. we take the liberty to emit a deprecation warning,
though. this complicates things quite a bit.
2017-10-10 13:18:09 +02:00
Andreas Lauser ef2e60e454 ebos: simplify passing of pre-parsed ECL decks
This gets rid of some special-purpose code in generic places (i.e. the
`SimulatorParameter` class) and no special hacks to the property and
parameter system are required anymore.
2017-10-07 21:28:25 +02:00
Andreas Lauser 415fdfd113 EclCpGridManager: remove unused private typedef 2017-10-03 12:48:21 +02:00