Commit Graph

412 Commits

Author SHA1 Message Date
Arne Morten Kvarving
c3ecedadb1 avoid deck usage on non-root processes setting up FluidSystem 2020-01-20 11:17:31 +01:00
Arne Morten Kvarving
cfc9cb3513 changed: avoid near-duplicate code 2020-01-17 14:55:36 +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
Bård Skaflestad
646e7d4eb1
Merge pull request #2265 from akva2/fix_serial_build
fix build without mpi
2020-01-06 17:02:08 +01:00
Arne Morten Kvarving
bd9ca91df2 fix build without mpi 2020-01-06 15:43:16 +01:00
Bård Skaflestad
dfb4946f13 Restart: Don't Access Solvent Saturation Unless Active
This commit ensures that the previous solvent restart fix (commit
afba6c8e8, PR #2023) does not attempt to index into the data member
solventSaturation_ unless solvent is activated.
2020-01-06 14:11:11 +01:00
Arne Morten Kvarving
e5c44ce1f2 avoid usage of deck on all processes setting up EclFoamModule 2020-01-06 11:20:46 +01:00
Arne Morten Kvarving
777d38e550 avoid usage of deck on all processes setting up EclPolymerModule 2020-01-06 11:20:02 +01:00
Arne Morten Kvarving
3b27df91b4 avoid usage of deck on all processes setting up EclSolventModule 2020-01-06 11:19:12 +01:00
Joakim Hove
dc5340046a Call applyActions at the end of every timestep 2019-12-06 13:18:49 +01:00
Bård Skaflestad
8a764568e1 EclProblem: Provide Mutable Access to Aquifer Model Object
This commit adds a new public member function,

    EclProblem::mutableAquiferModel()

that returns a read/write reference to the contained EclAquiferModel
object.  The immediate use-case is initializing analytic aquifers
from restart data.
2019-12-05 09:41:21 +01:00
Joakim Hove
ad00a3a891 SummaryState is updated at the end of simulator timestep 2019-12-03 15:52:47 +01:00
Joakim Hove
deb397cf0e Update output from applyActions() to show date 2019-12-03 00:44:08 +01:00
Joakim Hove
f97b76a9b5 List the matching wells for Action eval 2019-11-29 19:18:38 +01:00
dr-robertk
18c31bda0b
Merge pull request #2047 from totto82/enableRockcompFlow
enable rockcomp in flow
2019-10-17 14:12:35 +02:00
Tor Harald Sandve
8c7d7e3d2e enables rockcomp in flow 2019-10-17 12:44:49 +02:00
Tor Harald Sandve
86ef30950d Add logging in ebos
With this .PRT and .DBG files are created also for ebos
2019-10-14 10:39:10 +02:00
Halvor M. Nilsen
d873ae165d Enable single-phase runs. 2019-10-11 08:19:18 +02:00
Atgeirr Flø Rasmussen
96af6ca5f0
Merge pull request #2023 from totto82/fix_solvent_restart
Fix solvent restart
2019-10-01 15:35:22 +02:00
Tor Harald Sandve
afba6c8e8e Fix solvent restart 2019-10-01 13:07:29 +02:00
Tor Harald Sandve
dfede36018 Make is possible to test driftCompensation i Flow, Default is still false 2019-09-25 09:03:32 +02:00
Arne Morten Kvarving
1aba020ea3 changed: ewoms/disc -> opm/models/discretization 2019-09-19 11:16:26 +02:00
Arne Morten Kvarving
d3d9831fc3 changed: ewoms/common -> opm/models/utils 2019-09-19 11:14:36 +02:00
Arne Morten Kvarving
7048589ec1 changed: ewoms/models/blackoil -> opm/models/blackoil 2019-09-19 11:12:45 +02:00
Arne Morten Kvarving
5599bb6d8c changed: namespace Ewoms -> namespace Opm 2019-09-05 17:14:38 +02:00
Joakim Hove
ef3a159e89
Merge pull request #1986 from joakim-hove/enum-refactor
Adapt to enum changes
2019-09-04 16:29:32 +02:00
Joakim Hove
3d36565db7 Adapt to enum changes 2019-09-03 22:18:34 +02:00
Joakim Hove
750184cdf6 Add reportStep argument to Schedule::actions() 2019-08-29 19:38:27 +02:00
Joakim Hove
9b4c9e7dae Add applyActions() to Simulator 2019-08-19 16:26:22 +02:00
Franz G. Fuchs
7fb90bff47 Use foam module. 2019-08-07 10:39:16 +02:00
Tor Harald Sandve
fd26b61599
Merge pull request #1907 from andlaus/improve_time_integration
Improve time integration
2019-06-27 14:08:07 +02:00
Kai Bao
9a2fcdbfd5 fixing warnings in other folder under opm-simulators 2019-06-26 10:48:41 +02:00
Andreas Lauser
c2aebbb5da EclProblem: use the generic time integration mechanism
i.e., the EclProblem does no longer need to implement the
`timeIntegration()` method itself. since `flow` does not use this code
path, it is unaffected.
2019-06-25 12:39:00 +02:00
Tor Harald Sandve
4b1544469d Only apply timestep after event at the beginning of an episode 2019-06-21 08:43:13 +02:00
Joakim Hove
2950faece0 Extract the Summary::eval() call from the output call 2019-06-19 09:51:46 +02:00
Tor Harald Sandve
ba3598a6ae Let the output writer determine what to write in ebos 2019-06-14 13:57:41 +02:00
Tor Harald Sandve
9d6f20b172
Merge pull request #1870 from andlaus/ebos_cleanups
Ebos cleanups
2019-06-03 14:32:17 +02:00
Tor Harald Sandve
2df734f00e output .INIT and .GRID also on restart 2019-06-03 12:21:34 +02:00
Andreas Lauser
c315a9a473 ebos: make it possible to disable aquifiers
for now, disabling aquifers is an experimental feature...
2019-06-03 11:20:41 +02:00
Andreas Lauser
ef74025523 ebos: tone down the warning in the startup message slightly
The intend is to make the purpose of `ebos` clearer: while it can be
used in production, the stability guarantees are somewhat lower than
for `flow` and testing is a bit less rigorous (most of the time).
2019-06-03 11:11:41 +02:00
Andreas Lauser
c86470e768 tracer model: fix a few output messages
fixes some typos, adds better wording and fixes some duplication
issues on parallel runs.
2019-06-03 11:11:41 +02:00
Andreas Lauser
b699f40cee fix "checking conservativeness" debug message for parallel runs 2019-06-03 11:11:41 +02:00
Andreas Lauser
18d989c394 ebos: replace tabs with spaces and remove trailing white space
for some reason this keeps creping back in...
2019-06-03 11:11:41 +02:00
Tor Harald Sandve
8f60a5f9fc
Merge pull request #1841 from andlaus/remove_isSubstep
EclProblem: remove the isSubstep parameter from writeOutput()
2019-06-03 10:41:12 +02:00
Tor Harald Sandve
ae78cb86df Make it possible to restart without computing initial conditions 2019-05-28 13:04:28 +02:00
Andreas Lauser
8657f18075 EclProblem: remove the isSubstep parameter from writeOutput()
Now that the book keeping for time stepping is correct even in `flow`,
this parameter has become redundant.
2019-05-13 13:05:39 +02:00
Tor Harald Sandve
6887f3bc73
Merge pull request #1821 from andlaus/tickling_the_dragon
flow: provide the correct episode size
2019-05-13 12:40:35 +02:00
Arne Morten Kvarving
3327e69c7f fixed: use of restartTimeStep() before it has been read
it is read in the beginRestart() method, reorder code accordingly
2019-05-09 14:33:48 +02:00
Andreas Lauser
9b0be0f8ad flow: provide the correct episode size 2019-05-09 13:28:56 +02:00
Tor Harald Sandve
890d34a9e1 Add support for water induced compaction using
ROCKCOMP, ROCK2D, ROCK2DTR, ROCKWNOD and OVERBURD
2019-05-07 13:17:29 +02:00
Andreas Lauser
d329547463 EclProblem: clean up the time management code
- when an episode/report step is over, the next is started by endEpisode()
- the problem does not deal with updating the simulation time anymore
- rename `episodeIdx` in to `reportStepIdx` the 'EclWriter' because
  this variable is -- and always has been -- the report step number
  used by some parts of `opm-output`'s ECL writing code (the report
  step number is equivalent to the episode index plus 1). IMO, the
  output and parser code should be made more consistent in regard of
  whether it expects 0-based or 1-based indices, but this is a story
  for another day.
2019-05-03 14:07:15 +02:00
Andreas Lauser
17a4092c82 EclProblem: introduce a simulator auxiliary variable in most most cases
in most instances, this reduces the visual clutter a bit...
2019-05-03 14:07:15 +02:00
Andreas Lauser
6e351fef2e EclProblem: limit the limitTimeStepSize() to ebos
also, fix a few mistakes in that function.
2019-05-03 14:07:15 +02:00
Andreas Lauser
b9995f697f well models: remove superfluous arguments
concretely this means the `eclState` and `schedule` arguments to the
`init()` and `beginTimeStep()` methods.
2019-05-03 14:07:15 +02:00
Andreas Lauser
7868e420c0 EclProblem: print "checking conservativeness" messages in debug mode 2019-05-03 14:06:41 +02:00
Andreas Lauser
0be0de38cb EclProblem: ensure that eclWriter_ is always present
before patch, setting the `EnableEclOutput` parameter to `false`
resulted in the `eclWriter_` not to be allocated; yet it was used in
some places. this resulted in segfaults.
2019-05-03 14:06:41 +02:00
Andreas Lauser
701eb0edd3 ebos: never write restart files using the ad-hoc format
medium term, the output and restart file writing should be refactored:
the simulator does not need to be aware of this because it can be
accomplised in the problem's endTimeStep() method.
2019-05-03 14:06:41 +02:00
Andreas Lauser
11439bca80 ebos: some small fixes to EclProblem::checkDeckCompatibility_() 2019-03-28 13:12:29 +01:00
Tor Harald Sandve
2156f15d5f Adapt to new deck specification for the boundary condition 2019-03-27 09:27:03 +01:00
Tor Harald Sandve
d1d7d0e0f5
Merge pull request #1769 from andlaus/api_tracking_stub
ebos: add a stub implementation for API tracking
2019-03-26 12:39:32 +01:00
Tor Harald Sandve
17c249fa46
Merge pull request #1765 from andlaus/minor_cleanups
Minor cleanups
2019-03-26 12:38:50 +01:00
Andreas Lauser
cdb2c6312a ebos: add a stub implementation for API tracking
the only thing which this does so far is to introduce the respective
property and `ebos` will abort the run if the deck requests API tracking.

As usual for experimental features, `flow` is unaffected.
2019-03-22 15:04:07 +01:00
Andreas Lauser
0b0eb6df5e ebos: add some checks to make sure that the simulator produces what the deck specifies
this should significantly reduce surprising behavior for users. since
this is an experimental feature, `flow` is unaffected.
2019-03-22 13:38:58 +01:00
Andreas Lauser
1b8124cc31 EclProblem: remove the initialTemperature_ array
this was not used since the fluid states that correspond to the
initial condition are kept permanently.
2019-03-21 12:35:10 +01:00
Tor Harald Sandve
a6e82886bb Fix bugs in the TUNING implementation in ebos 2019-03-11 10:18:27 +01:00
Andreas Lauser
a812041184 ebos: implement partial elimination of systematic mass defects
the idea is to compensate the residual of the final solution of a time
step by means of an opposing source term in the next time step.

This patch has been developed as a joint project with [at]totto82 and
[at]osae.

(`flow` is unaffected by this because for now drift compensation is an
experimental feature and thus disabled within the production
simulator.)
2019-03-05 11:32:11 +01:00
Andreas Lauser
d7e74e7c4e fix review comment by [at]totto82 2019-03-04 13:59:50 +01:00
Andreas Lauser
b60305082d EclBaseProblem: fix the parent type tags for the EclBaseProblem tag in the non-default cases
this bitrot a bit because it was never seen by the compiler. (I still
did not check if `ebos` compiles and works if `CpGrid` is replaced by
dune-alugrid or `PolyhedralGrid`.)
2019-03-04 13:58:38 +01:00
Andreas Lauser
3ca8b8f285 ebos: improve the messages printed during the run
the convergence behaviour can now be understood and the report step
information is printed, too. This does not affect `flow`, becase it
implements its own newton and time stepping routines.
2019-03-04 13:58:38 +01:00
Andreas Lauser
f36680bf3a EclProblem: Rename NewtonRawTolerance to NewtonTolerance
this property is not used by `flow` because `flow` implements its own
Newton method, but it not renaming the property prevents `flow` from
building.
2019-03-01 10:48:06 +01:00
Andreas Lauser
c9dfad2a3d prefix the ECL timestep tuning parameters with 'Ecl' 2019-02-20 12:47:12 +01:00
Andreas Lauser
148728973f fix the output of the size of the next time step if timestepping is done externaly 2019-02-20 12:47:12 +01:00
Andreas Lauser
b1a526e5c2 ebos: remove unused deprecated function 2019-02-20 12:47:12 +01:00
Andreas Lauser
a34a8d6b9e ebos: implement partial support for the TUNING keyword
this only implements the parameters that are currently supported by
`flow`.
2019-02-20 12:47:12 +01:00
Andreas Lauser
0b600cb824 Merge pull request #483 from totto82/massratebc
Add option for setting mass boundary rate from deck
2019-02-20 12:15:21 +01:00
Tor Harald Sandve
430e667517 Add option for setting mass boundary rate from deck
Usage
BCRATE
1 1 1 1 1 10 X WATER 1e-7 /

This will inject 1e-7 of water (mass/time/length/length) on the x side of the
boundary cells with cartesian index [1 1 1] to [1 1 10]
2019-02-20 10:56:53 +01:00
Tor Harald Sandve
b4382c23e8 Merge pull request #481 from andlaus/add_experimental_mode
introduce an "experimental mode"
2019-02-20 09:39:33 +01:00
Andreas Lauser
c80e4c40c4 fix missing semicolon 2019-02-19 11:04:40 +01:00
Andreas Lauser
10d1d5c9a7 introduce an "experimental mode"
this is a compile time switch with the intention to be able to more
easily turn experimental features that are not yet considered to be
production quality on and off. DUNE has a similar mechanism (i.e., the
`DUNE_GRID_EXPERIMENTAL_GRID_EXTENSIONS` macro), but it relies on
the preprocessor.

For now, the property does not have any effect.
2019-02-19 10:22:34 +01:00
Tor Harald Sandve
9de0e54b63 Merge pull request #475 from andlaus/fix_ecl_restart
ebos: Fix restart from ECL files
2019-02-19 10:11:02 +01:00
Andreas Lauser
7165ae246a ebos: clarify startup message
this hopefully makes the purpose of `ebos` clear in its
description. this prose should be interpreted as "if you use ebos in
production, you are on your own and you should only expect a very
limited amount of support (or even sympathy) if something breaks".
2019-02-19 10:07:01 +01:00
Andreas Lauser
5b032a6a28 fix the issues found by [at]tosa82 in his review
in particular the missing synchronization after restarts was very
nasty to find. thanks a ton for pointing this out!

also, IIRC changing DR[SV]DT in the schedule section has been working
properly for a while, so the comment which stated the opposite is
removed as well.
2019-02-19 09:07:12 +01:00
Andreas Lauser
65d44a055f EclProblem: fix a few minor style issues 2019-02-18 15:30:28 +01:00
Andreas Lauser
427741fe84 ebos: Fix restart from ECL files
Some time loop stuff was missing in the doobly-doo, the init() method
of the well model was not called and there was the slightly deeper
issue that the initial solutions where not calculated on restarts
which breaks everything that relies on them. (at the moment, that's
everything which is related to non-trivial boundary contitions.)
2019-02-18 15:29:27 +01:00
Tor Harald Sandve
a86ee61bf6 Merge pull request #478 from andlaus/ebos_remove_mass_conservative_init
ebos: remove the code to calculate a mass conservative initial condtion if the specified condition is inconsistent
2019-02-18 11:18:12 +01:00
Andreas Lauser
3cd1252079 ebos: remove the code to calculate a mass conservative initial condtion if the specified condition is inconsistent
As far as I can see, this was always set to `false` anyway.
2019-02-15 13:45:23 +01:00
Andreas Lauser
0423676305 ebos: remove the DisableWells property
the purpose of this was a hack to be able to manipulate the Jacobian
matrix directly from outside code. Since `flow` has been converted to
the eWoms wells API, this is not required anymore.
2019-02-15 13:39:58 +01:00
Tor Harald Sandve
a5463ed1a0 Add support for using free boundary conditions in Flow
The OPM spesific keywords FREEBC[XYZ[-]] can be used to specify
boundary cells that are open. Default is a closed boundary.
2019-02-07 14:56:55 +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
Tor Harald Sandve
fb34eb304c Fix generic boundary conditions for blackoil model
Currently it doesn't allow for polymer or solvent influx
on the boundary with the free flow option
2019-01-31 15:41:47 +01:00
Kai Bao
56e829329f each phase needs to be above certain value to be treated to be present
it helps to recover some RESTART running based on single precision
format.
2019-01-22 13:53:08 +01:00
Kai Bao
9e483bed45 updating more quantities when restart
lastRs_, lastRv_, maxDRs_, maxDRv_

to get better restart.
2019-01-12 17:20:44 +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
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
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
Kai Bao
c9d9023039 addressing reviewing comments from PR #444 2018-12-12 14:50:22 +01:00
Kai Bao
932e4d1bf1 cleaning up of the code
there should be no functionality change
2018-12-11 21:55:20 +01:00
Kai Bao
31c18bd70e adding the functionality to track the polymer molecular weight
it is used to evaluate the water-polymer mixture viscosities
2018-12-11 21:55:20 +01:00
Tor Harald Sandve
704fbb7b60 Add parameter for (dis)enable the tracer model
The tracer model slows down the simulation time and is disabled by
default, until the performance is improved.
2018-12-10 11:13:35 +01:00
Trine S Mykkeltvedt
ac931d1713 Add ecl tracer model
reads tracer input from deck, solves tracer equation fully implicit as a post processing step in endTimeStep

tested on a simple modified SPE1CASE1 deck and compared with eclipse

TODO: restart and parallel
2018-11-19 13:46:10 +01:00
Tor Harald Sandve
513b0b462f Add support for drsdtr and drvdtr
This PR also adds possibility for schedule dependent drsdt values
2018-11-05 13:50:44 +01:00
Tor Harald Sandve
fad7c68446 Add support for region DR[SV]DTR 2018-11-05 13:40:23 +01:00
Tor Harald Sandve
3185e8662b Merge pull request #408 from andlaus/aquifer_api_v2
extend the aquifer model so that it can initialize itself
2018-10-31 12:47:54 +01:00
Andreas Lauser
1f28aba47e Merge pull request #404 from totto82/speedup2p
Blackoil: Prepare for 2p conditional storage of fluidstate
2018-10-30 12:39:05 +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
3c94807b85 Merge pull request #405 from andlaus/aquifier_api
ebos: add an API for aquifiers
2018-10-25 16:45:57 +02: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
Tor Harald Sandve
656f055992 Blackoil: Prepare for 2p conditional storage of fluidstate
Also fix pseudo 2p case for ebos
2018-10-18 12:55:49 +02:00
Tor Harald Sandve
3a408619da add support for minpvv 2018-10-15 13:35:45 +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
Joakim Hove
b766260db7 Add --opm-rst-file parameter 2018-09-13 17:03:11 +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
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
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
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
ed0542b53b ebos: make it work in parallel 2018-07-11 13:59:29 +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
Tor Harald Sandve
95578a5d79 Fix thpress restart
THPRES is read from the restart file
We no longer need to compute it from the initial conditions if
defaulted.
2018-06-29 15:26:08 +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
Joakim Hove
3b5e746702 Load the THPRES values from the restart file 2018-05-31 11:58:27 +02:00
Joakim Hove
324a4ad307 Save THPRES values to restart file 2018-05-14 16:13:53 +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
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
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
Tor Harald Sandve
6a1f7c8006 BUGfix enableEclOutput false 2018-03-05 14:56:48 +01:00
Tor Harald Sandve
d15a86b039 clean up 2018-02-21 10:41:27 +01:00
Tor Harald Sandve
9372f9d2ca Make sure the updateMaxOilSaturation_ is called
The order of operation is left-to-right.
2018-02-21 10:38:52 +01:00
Atgeirr Flø Rasmussen
875aafe0f9 Merge pull request #289 from totto82/fix_default_output_dir
Fix default output directory
2018-02-19 17:04:41 +01:00
Tor Harald Sandve
932527d772 Pass RFT output via data::well
With this no cell data is used by the output code in opm-output
2018-02-19 13:18:56 +01:00
Tor Harald Sandve
27beb2faec Fix default output directory
Get default ecl output directory from IOConfig.
2018-02-19 13:16:49 +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
Tor Harald Sandve
154e4fd97a Obey the input given by the deck.
Don't try to make the initial condition consistent for explicitly given
initial values.
2018-02-05 14:24:11 +01:00
Tor Harald Sandve
b021ee54ca Some clean-up
Dont' output rs, rv, somax and hysteresis if they are not enabled.
We no longer output the same as legacy.
2018-02-05 14:24:11 +01:00
Tor Harald Sandve
2264b44f38 Pass region and field FIP to opm-output 2018-02-05 14:24:11 +01:00
Tor Harald Sandve
f62498440d Add FIP, INIT and EGRID output
Writes INIT and EGRID files initially
Adds Fip to summary output if required.
Output Fip to log (.PRT) if Opm-logger is set
2018-02-05 14:24:11 +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
Tor Harald Sandve
0132c3326e Add ecl output from opm-output
The new eclwriter output and restart using the eclIO from opm-output

All tests in opm-simulator pass and
MPI restart works.

Standard initialization is done prior to restart in order
to compute correct initial thpressure values. This is not
necessary if thpressures are written to the restart file

TODO: Some trivial fields are written out in order mimic legacy code,
this should be cleaned up

TODO: Output of wells, FIP, NNC is still done in opm-simulators.
This should be moved later.
2018-01-09 11:05:50 +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
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
Tor Harald Sandve
321af5ff4d Start using the BlackoilFluidState 2017-12-15 08:20:09 +01:00
Tor Harald Sandve
8ac306b50a Prepare flow for ebos initialization
Apply swatInit in the initialization
Stop using the equilGrid in the initialization code
Keep The initialFluidState until end of first time step to make it
possible for flow to output it.
2017-11-30 09:30:26 +01:00
Joakim Hove
029de3542e Schedule: explicitly instantiated 2017-10-31 13:14:12 +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
Arne Morten Kvarving
fde56c93b2 Merge pull request #209 from andlaus/remove_dune_2_3_support
remove support for dune < 2.4
2017-09-22 11:39:59 +02:00
Robert Kloefkorn
f18b1cdf59 [feature][Simulator] allow parameters to be passed from outside to
simulator. The default behavior is unchanged and the parameters are
empty.
2017-08-23 15:51:51 +02:00
Andreas Lauser
79fc6c68cd add a template class for conditionally storing attributes and use it in ebos 2017-07-21 21:38:13 +02:00
Andreas Lauser
96381e3ed7 remove support for dune < 2.4
this allows quite a substantial amount of code decluttering, mainly
because Dune 2.4 renamed mapper.map() to mapper.index().
2017-07-13 14:08:02 +02:00
Robert Kloefkorn
f1da775f41 [bugfix] dimension was renamed in Geometry, so use from Element to be
consistent with earlier DUNE versions.
2017-06-23 22:58:50 +02:00
Robert Kloefkorn
2aada96d8c [bugfix] fix build of ebos for Grid != CpGrid. 2017-06-23 22:58:49 +02:00
Tor Harald Sandve
195209982e Add support for PLMIXNUM
also fix some issues with the MISCNUM
2017-06-21 10:27:25 +02:00
Tor Harald Sandve
ecae9d3a78 Address comments frow the review. 2017-06-21 08:03:44 +02:00
Tor Harald Sandve
3dd7fd0b3a Add polymer model to ebos
Adds a conservation equation for polymer.
Polymer concentration in the water phase is used as primary variable
The polymer influences the viscosity of the water, and leaves gas and oil
uneffected.

A shear multiplier is computed if PLYSHLOG and/or SHRATE is specified
based on either velocity or shrate.
The shear multiplier effects the water and polymer viscosity.

Tested and verified on the test cases in polymer_test_suite
2017-06-21 08:00:31 +02:00
Robert Kloefkorn
c8bf519e5e [bugfix] fix propName for ROCKNUM. 2017-06-20 18:08:12 +02:00
Joakim Hove
05bc61e4ba Using std::time_t from TimeMap 2017-06-19 22:13:25 +02:00
Andreas Lauser
bff4c8ade9 ebos: add the raw array of PVT numbers.
this can be used by flow_ebos to be passed to legacy code.
2017-06-16 15:12:27 +02:00
Andreas Lauser
f334bb32b9 ebos: add support for the ROCKOPTS keyword
this becomes important if th region which is supposed to be used by
ROCK is not the same as the region for the PVT properties.
2017-06-16 15:12:26 +02:00
Andreas Lauser
3b37038043 ebos: do not mistake the pressure for the gas saturation anymore
this is a copy-and-pasto that was introduced with #189.
2017-06-16 09:25:56 +02:00
Andreas Lauser
89b21eb641 ebos: fix the compilation
one must use eclProps.getDoubleGridProperty() while the has() method
is called eclProps.hasDeckDoubleGridProperty() (mind the Deck!).
2017-06-14 13:36:37 +02:00
Andreas Lauser
55a5a3a848 ebos: reduce direct deck usage
this reduces the number of direct deck accesses in `EclProblem` in
favour of `EclipseState`-grid properties. as far as i can see,
directly using the deck object cannot fully be avoided because
`EclipseState` does not seem to provide internalized versions of all
these keywords yet.
2017-06-13 16:54:39 +02:00
Tor Harald Sandve
f14ea0e3af Add support for miscible solvent runs
- initialization only via Ecl Deck
- adds modification of relperms and cap-pressures for miscible runs
- adds TL mixing model for effective viscosity and density calculations

Tested on SPE1CASE2_SOLVENT_MISC_TL, SPE9_CP_CO2_MISC_TL, SPE5CASE1-3
and SPE3CASE1_SOLVENT_MISC
2017-05-24 10:52:04 +02:00
Andreas Lauser
bcdc4e5e38 blackoil: implement the immiscible solvent extension
Conceptually this is IMO pretty questionable, since it adds a second
"gas phase" that does not mix with "ordinary" gas. I suppose the
reason why this extension was conceived by E100 is that if all you
have is hammer, everything looks like a nail...

Functionality-wise, this patch is still not fully complete because
miscibility of the solvent "phase" is not yet implemented. As far as I
can see, the API changes required by miscibility are quite limited,
though.
2017-05-05 10:46:53 +02:00
Andreas Lauser
96869b6a2f make explicit initialization for twophase cases work
if the initial solution is explicitly given by the deck using the
PRESSURE, SWAT, etc. keywords, the specified state can be
thermodynamically impossible. To avoid inconsistencies, we use a flash
calculation to find a state that is in thermodynamic equilibrium and
exhibits the same masses as the explicitly specified solution. Since
the flash solver needs to compute quantities for all fluid phases, but
two-phase blackoil simulations usually do not specify the properties
of one phase, the flash solver crashed. This patch works around that
issue by simply not using the flash solver in the twophase case, i.e.,
the explicit initial condition must be thermodynamically consistent in
order to produce the stable results for a different choice of primary
variables.
2017-04-18 16:11:44 +02:00
Andreas Lauser
346710c5af ebos: hysteresis needs to be updated for all elements
in the parallel case, this avoids the participating processes from
desyncronizing if the solution is consistent on all processes.
2017-04-15 15:12:15 +02:00
Andreas Lauser
b429af41b1 ebos: no longer fail if the EQLDIMS keyword is not explicitly mentioned in the deck
we use the "Eqldims" object which is exposed EclipseState.
2017-02-13 19:20:27 +01:00
Robert Kloefkorn
7f81518b0d When EnableEclOutput is false the EclWriter should not be created.
This fixes a problem with collecttoiorank which needs to be investigated
separately.
2017-02-10 13:45:44 +01:00
Andreas Lauser
a284089d73 adapt to the move of the valgrind client requests into the Opm namespace 2017-02-09 18:25:44 +01:00
Andreas Lauser
7a7d6d868d ebos: fix the interactions between SWATINIT and threshold pressures
hopefully this makes standalone `ebos` arrive at the same initial
condition as `flow_ebos` if both, SWATINIT and threshold pressures are
enabled. we need to calculate the initial condition twice either
threshold pressures and SWATINIT are enabled. (`ebos` and `flow_ebos`
diverged after OPM/opm-core#1129.)

the proposed patch is a kludge IMO, but in the light that in my
opinion, SWATINIT and threshold pressures are both physically not
justified and given the fact that SWATINIT must not be considered for
the threshold pressues should be considered to be a bug of the
reference simulator, I think the patch is okay.
2017-01-18 16:46:53 +01:00
Andreas Lauser
61c501a31d change the order of OPM_UNUSED and variable name
it seems like some compilers (GCC 4.9.2?) are picky about this and
require

```c++
TypeName VariableName __attribute__ ((__unused__))
```
2017-01-17 13:28:56 +01:00
Atgeirr Flø Rasmussen
3d9f1af26b Silence release mode unused argument warnings. 2016-12-30 10:12:08 +01:00
Atgeirr Flø Rasmussen
5724244b4f Silence unused argument warnings with OPM_UNUSED. 2016-12-30 10:03:14 +01:00
Andreas Lauser
8c6e6dc410 ebos: refactor the way SWATINIT is dealt with
we now store the maximum oil-water capillary pressure and apply it to
the material parameters later. this simplifies things within the
EquilInitializer somewhat and also allows external code (i.e.,
flow_ebos) to choose when SWATINIT gets applied.
2016-12-16 18:48:34 +01:00
Andreas Lauser
de9eea31bd EclProblem: provide access to the "raw" transmissibilities object 2016-12-16 18:47:52 +01:00
Andreas Lauser
a6191a2345 the new home of Valgrind.hpp is opm-common! 2016-12-14 12:38:12 +01:00
Andreas Lauser
e1d11da6d6 EclProblem: fix the type returned by the const version of materialLawManager()
it is supposed to a shared pointer to a constant object, not a
constant pointer to a mutable object...
2016-12-10 10:53:28 +01:00
Andreas Lauser
4b2156a071 ebos: update the PffGridVector for transmissibility after geologic events 2016-12-08 12:26:32 +01:00
Andreas Lauser
5067ce2f27 ebos: use the transmissibilities as edge weights for load balancing
this makes creating the grid a bit slower because the
transmissibilities need to be calculated twice: once for the
sequential grid and once for the distributed one. while corresponds to
the way `flow_legacy` does the load balancing and it should allow
better results, this does not seem to be the case for the Norne deck
if ZOLTAN is not available:

After loadbalancing process 3 has 4413 cells.
After loadbalancing process 2 has 12390 cells.
After loadbalancing process 0 has 13629 cells.
After loadbalancing process 1 has 21253 cells.

i.e., process 1 is responsible for almost 5 as many cells as process
3.
2016-12-07 20:24:48 +01:00
Andreas Lauser
36c010c956 ebos: replace the opm-parser related pointers/smart pointers by references
this seems to be the spirit of the season. note that now the deck
object must be copied, but I suppose that copying it is pretty cheap.
2016-12-07 20:24:48 +01:00
Jørgen Kvalsvik
3088068e37 Mini deck is reference, not pointer 2016-12-01 16:17:52 +01:00
Andreas Lauser
4a0832030c EclProblem: add docstrings for the materialLawManager() methods 2016-11-30 14:24:15 +01:00
Andreas Lauser
4ef6d5d1ce EclProblem: add a porosity(elemIdx) method
this is not a generic API but makes emulating legacy stuff which
requires the porosity quite a bit easier in flow_ebos.
2016-11-30 14:21:04 +01:00
Andreas Lauser
a3ddd2066b ebos: make it possible to easily disable SWATINIT
in flow_ebos, this code collides with the flow part.
2016-11-30 14:20:44 +01:00
Andreas Lauser
c4c00bdaaa implement two-phase blackoil simulations 2016-11-22 15:22:41 +01:00
Andreas Lauser
6cf1eab4f4 ebos: export the ECL material law manager
this allows external code (i.e., flow_ebos) to reuse it.
2016-11-22 14:08:07 +01:00
Andreas Lauser
a5e859e4c6 discretizations: no longer depend on the problem to provide the mappers
Dune entity mappers seem to be dirt-cheap to create so there is not
much point in jumping through hoops to avoid this...
2016-11-17 19:44:17 +01:00
Andreas Lauser
759c2dbdaa move all applications into their top-level directory
thanks to [at]akva2 for the suggestion.
2016-11-11 15:04:04 +01:00