Commit Graph

79 Commits

Author SHA1 Message Date
Kai Bao
47b933a58e removing DynamicListEconLimited
it is not used anymore. A lot of related implementation has been moved
to WellTestState.

Its existence makes some logic rather confusing and some new development
not easy.
2019-01-08 11:28:11 +01:00
Joakim Hove
b9df94a70f Use Well CF and Kh calculations from opm-common 2018-09-10 12:23:59 +02:00
Joakim Hove
514cdc574c Completion refactor 2018-06-26 12:30:54 +02:00
Joakim Hove
94d57f686c Refactor of connecrions & completions 2018-06-20 11:51:00 +02:00
Joakim Hove
bd57d574d3 Rename Completion -> Connection 2018-06-11 17:23:28 +02:00
Lars Petter Øren Hauge
011143829d Allow Wells struct initialization without wells
Calling wells()->number_of_wells on nullptr causes segmentation fault. This
occurs when running a deck without wells. Allowing WellsManager::init to
continue for decks without wells enables the well struct to be set.

Authored by Sveinung Rundhovde & Lars Petter Hauge
2018-02-13 16:43:10 +01:00
Atgeirr Flø Rasmussen
cf9b7c39b9 Adapt to moved opm-grid headers. 2018-02-10 08:33:33 +01:00
Joakim Hove
19318e5019 Schedule no longer part of EclipseState. 2017-10-24 20:38:15 +02:00
Kai Bao
e0d48a366b removing well potentails from WellsManager 2017-04-11 16:53:19 +02:00
Kai Bao
b027b27452 not applying the group control in WellsManager
since the guide rates are not completed yet.
2017-04-11 16:53:19 +02:00
Kai Bao
4bd1b1cf76 not setting up guide_rates in WellsManager based on well potentials
That part is moved to well_collection, will be handled in the beginning
of time step.
2017-04-11 16:53:19 +02:00
Tor Harald Sandve
214e9764b2 Add sat table id to well struct 2017-04-06 13:52:27 +02:00
Andreas Lauser
1ae94c8db3 do not explicitly pass the permeability to the well model anymore
this information is already part of the EclipseState. The reason why
this should IMO be avoided is that this enforces an implementation
(ordering of the permeability matrices) the simulator on the well
model. If this needs to be done for performance reasons, IMO it would
be smarter to pass an array of matrices, instead of passing a raw
array of doubles.  I doubt that this is necessary, though: completing
the full Norne deck takes about 0.25 seconds longer on my machine,
that's substantially less than 0.1% of the total runtime.

in order to avoid code duplication, the permeability extraction
function of the RockFromDeck class is now made a public static
function and used as an implementation detail of the WellsManager.

finally, the permfield_valid_ attribute is removed from the
RockFromDeck class because this data was unused and not accessible via
the class' public API.
2017-01-27 12:51:12 +01:00
Jørgen Kvalsvik
ccd38c0cf7 Ask for reference depth at timestep. 2016-11-22 14:22:09 +01:00
Kai Bao
78b96d9c20 a flag to WellCollection whether group control active 2016-11-17 16:26:19 +01:00
Jørgen Kvalsvik
478ac16a1b GroupTree interface changed upstream
Updates to the slightly modified GroupTree interface from opm-parser.
2016-11-09 13:04:33 +01:00
Jørgen Kvalsvik
a52724ae97 Update to shared_ptr-less parser interface. 2016-10-20 10:14:41 +02:00
Andreas Lauser
fabdfbafcb 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.)
2016-10-10 17:50:26 +02:00
Jørgen Kvalsvik
3c2ebf9cfd Schedule::getGroup returns reference, not pointer 2016-10-05 15:24:14 +02:00
Markus Blatt
29dc9a1880 Use an unordered_set of string to identify defunct wells.
We do not rely on the order of the set and hope that the lookup
might be faster as it prevents string comparisons.
2016-09-13 10:55:15 +02:00
Markus Blatt
60ba51aea0 Do exclude SHUT wells from lookup of deactivated wells.
This should be prevent some unnecessary find calls in the set.
2016-09-13 10:55:15 +02:00
Markus Blatt
2875b64faf Revert "Use index according to eclipse schedule to identify deactivated wells."
This reverts commit 09205dfa074af24b381595d02c15e799523ddb2b.

We cannot use the index as it might change for a well between different
report steps. Unfortunately the only persistent way to identify wells
over all report steps in the schedule seems to be the well name.
2016-09-13 10:55:15 +02:00
Markus Blatt
10bfa5dfa8 Use index according to eclipse schedule to identify deactivated wells. 2016-09-13 10:55:15 +02:00
Markus Blatt
012edac7ce Use provided set of deactivated wells in parallel.
Before this commit we tried to compute whether a well is represented on
the processor using the grid information. Due to the overlap region and
possible completion on deactivated cells of the global grid this is not
even possible. E.g. we cannot distinguish whether a completion is just
not represented on the domain of a process or the corresponding cell is
not active in the simulation.

With this commit we refactor to passing the well manager an explicit
list of name of wells that should be completely neglected. This information
can easily by computed after the loadbalancer has computed partitions.
2016-09-13 10:55:15 +02:00
Kai Bao
18b76331eb addressing comments.
no functional change.
2016-06-30 16:20:38 +02:00
Kai Bao
28636aad5c adding stopped wells list to DynamicListEconLimited
when well is closed due to rate economic limits, based on the auto
shut-in configuration, the well can be STOP or SHUT.

When well is closed due to all the connections are closed, it should be
SHUT.
2016-06-30 14:41:14 +02:00
Kai Bao
eb163e648c handling connection closing in DynamicListEconLimited
due to econ limits.
2016-06-30 14:41:14 +02:00
Kai Bao
c64d33fbd3 adding list_econ_limited to setupWellControls 2016-06-30 14:41:14 +02:00
Kai Bao
7dac2201bb WIP in adding class DynamicListEconLimited
to handle the closed wells and connection dynamically based on the
economic limits provied by keyword WECON
2016-06-30 14:41:14 +02:00
Jørgen Kvalsvik
03104f2320 WellPtr and GroupPtr deprecated
shared_ptr aliases are considered deprecated and has largely been
removed upstream (and replaced by raw pointers).
2016-06-16 09:33:43 +02:00
Liu Ming
1cb66d2b4f write well related information into OpmLog. 2016-05-20 16:14:16 +08:00
Pål Grønås Drange
75936c1d9c Using getInputGrid API from Parser, changed GridManager to no longer accept Deck in constructor 2016-04-20 08:51:10 +02:00
Tor Harald Sandve
092d7c44ff Minor fixes based on PR comments
- fix comments, typos add missing reference arguments.
2016-04-04 08:10:24 +02:00
Tor Harald Sandve
9c4015dae9 Calculate default guide rates using the well potentials
The default guide rates are caculated using the well potentials.
The well potentials are calculated in the simulator and given as input
to the wellsManager.
2016-04-01 15:00:21 +02:00
Tor Harald Sandve
0f6a821903 BUGFIX. Call setupGuideRates before groupcontrol is applied 2016-03-31 09:32:09 +02:00
Jørgen Kvalsvik
33f8446a4e Add missing opm-parser headers
opm-parser pull #695
https://github.com/OPM/opm-parser/pull/695
2016-02-26 11:49:40 +01:00
Jørgen Kvalsvik
50c1bbdc85 Fixes includes wrt opm-parser PR-656
Several files stopped compiling due to relying on opm-parser headers
doing includes. From opm-parser PR-656
https://github.com/OPM/opm-parser/pull/656 this assumption is no longer
valid.
2016-01-21 09:42:51 +01:00
Markus Blatt
3e8381be20 Renamed well_index to well_index_on_proc and added comment.
This should prevent misunderstandings about what the
well_index_on_proc is. It is not the well_index according to
the eclipse state (on open wells count) but the index of the
wells that are stored on this process' domain.
2015-10-28 13:09:12 +01:00
Markus Blatt
4bfc921957 Fix grammar and spelling in warning. 2015-10-27 14:26:01 +01:00
Markus Blatt
02df6dd963 Fixes well manager for wells crossing into cells that overlap.
In the parallel run there are cases where wells perforate cells
that are neighbors of overlap/halo cells. On other process only
parts of the well are seen as perforations. These wells should be
ignored there. While the well was indeed ignored, the perforations
found where mistakenly added to the well found due not clearing the
wellperf_data[well_index]. This commit now does this clearing and
results in the right handling of wells for e.g. SPE9.
2015-10-27 14:02:26 +01:00
Atgeirr Flø Rasmussen
10b4d6c6f7 Merge pull request #897 from totto82/crossflow
Add boolean flag to determine whether crossflow is allowed in a well
2015-10-14 09:36:27 +02:00
Andreas Lauser
d41f989a78 use the error macros from opm-common 2015-10-08 11:42:15 +02:00
Tor Harald Sandve
da44c2cfd6 Set wd.allowCrossFlow directly 2015-10-07 12:50:00 +02:00
Tor Harald Sandve
40ec39fa71 Add boolean flag to determine whether crossflow is allowed in a well
This PR adds allow_cf to the wells structure that determine whether
crossflow is allowed or not. An extra argument is added to addWell(..)
to specify the allow_cf flag.
2015-10-06 15:54:20 +02:00
Atgeirr Flø Rasmussen
061b283a03 Merge pull request #888 from totto82/avoid_throw_wellManager
WARN instead of THROW if completion is not found in the grid
2015-09-28 10:02:06 +02:00
Markus Blatt
e2e9ea1bf5 Prevent WellsManager from subscripting empty container.
While hopefully not a bug it raises an exception with gcc's
libc debugging mode. Therefore we resort to using C++11's
std::vector::data instead.

The exception was rosen when running SPE9 in parallel.
2015-09-23 09:28:59 +02:00
Tor Harald Sandve
fb127aeb9a WARN instead of THROW if completion is not found in the grid
Completions that are not found in the grid are ignored.
2015-09-22 13:51:06 +02:00
Atgeirr Flø Rasmussen
99d3ca24bb Use compressedToCartesian() to avoid possible null reference. 2015-09-15 14:23:10 +02:00
Tor Harald Sandve
8d9bdb8d47 Use cell thickness from EclipseGrid in well transmissibility
calculations

The dz calculated in WellDetails::getCubeDim is not correct in cases
where the face centroid of the horizontal faces is located above or
below the face centroid or the vertical faces. The cell thickness in
EclipseGrid, calculated using the Z-coordinates, is therefore used
instead.
2015-09-15 10:50:56 +02:00
Markus Blatt
af2f3a0a90 Allow a few well completions in the overlap.
If on one process a well completion is next to border then
it might also be stored in the neighbor process. Still not
all the completions of the well are known to the neighbor.
This breaks the previous assumption that for each well all
completions must belong to the partition of the process.

Therefore with this commit we allow wells that only have a
part of their completions assigned to the partition of the process.
This wells are deactivated under the assumption that they must
exist completely on another process due to the partitioning.
2015-09-08 20:38:02 +02:00