Commit Graph

44 Commits

Author SHA1 Message Date
Kai Bao
4d57b641a8 adding a non-const wellCollection() in WellsManager.
For the WellModel from the simulator to use. Not decided totally,
    well_collection might need to be updated during the simualtion due
    to the update the target of wells.
2016-11-10 16:28:40 +01:00
Robert Kloefkorn
81189135bf Merge remote-tracking branch 'upstream/master' into PR/fix-wellmanager-constructor 2016-10-21 13:55:21 +02:00
Robert Kloefkorn
ca7c3070a2 [bugfix] Make WellsManager compile with c++-11. 2016-10-21 10:43:32 +02:00
Jørgen Kvalsvik
a52724ae97 Update to shared_ptr-less parser interface. 2016-10-20 10:14:41 +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
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
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
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
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
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
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
63d8d5e781 [bugfix,parallel] Deactivate non-existing wells in manager.
Previously, we used the setStatus method to set wells that do not
exist on the local grid to SHUT. Or at least this is what I thought
that ```well.setStatus(timestep, SHUT)```. Unfortunately, my
assumption was wrong. This was revealed while testing a parallel run
with SPE9 that threw an expeption about "Elements must be added in
weakly increasing order" in Opm::DynamicState::add(int, T). Seems like
the method name is a bit misleading.

As it turns out the WellManager has its own complete list of active
wells (shut wells are simply left out). Therefore we can use this
behaviour to our advantage: With this commit we not only exclude shut
wells from the list, but also the ones that do not exist on the local
grid. We even get rid of an ugly const_cast.

Currently, I have running a parallel SPE9 test that has not yet
aborted.
2015-05-26 21:01:16 +02:00
Markus Blatt
2b4ebb94cc Adds possibility of having a well not stored on a grid partitioning.
In a parallel run each process only knows a part of the grid. Nevertheless
it does hold the complete well information. To resolve this the WellsManager
must be able to handle this case.

With this commit its constructor gets a flag indicating whether this is
a parallel run. If it is, then it does not throw if a well has cells that
are not present on the local part of the grid. Nevertheless it will check
that either all or none of the cells of a well are stored in the local part
of the grid.

Wells with no perforated cells on the local will still be present but set to SHUT.
2015-05-08 16:35:00 +02:00
Atgeirr Flø Rasmussen
529662ca1a Complete function argument cleanup. 2015-02-17 13:56:02 +01:00
Atgeirr Flø Rasmussen
a38bdaf4c3 Remove unused argument from several functions. 2015-02-17 10:28:11 +01:00
Bård Skaflestad
6ab31022fc WellsManager: Support NTG and horizontal completions
This commit extends the feature set of the WellsManager to support
horizontal ("X" and "Y") completions and include the net-to-gross
ratio in the Peaceman index ("Completion Transmissibility Factor,
CTF") of a well completion.  The NTG factor is included if present
in the input deck represented by the "eclipseState".

There are two separate, though related, parts to this commit.  The
first part splits the calculation of Peaceman's "effective radius"
out to a separate utility function, effectiveRadius(), and
generalises WellsManagerDetail::computeWellIndex() to account for
arbitrary directions and NTG factors.  The second part uses
GridPropertyAccess::Compressed<> to extract the NTG vector from the
input if present while providing a fall-back value of 1.0 if no such
vector is available.

Note: We may wish to make the extraction policy configurable at some
point in the future.
2014-08-31 21:24:37 +02:00
Bård Skaflestad
8766e6468c createWellsFromSpecs: Use ref-to-const cart2active
This commit tightens the function header of method

    WellsManager::createWellsFromSpecs()

to accept a reference-to-const 'cartesian_to_compressed' map.  It
used to be a complete, copy-constructed object, so this is a slight
performance enhancement as we no longer need to copy a (somewhat)
large object on every call to the method.
2014-08-29 12:13:38 +02:00
Andreas Lauser
f360562aee remove EclipseGridParser compatibility methods from all classes 2014-05-21 11:22:43 +02:00
Markus Blatt
7aa8728be9 Removed last artefact of checkCellExistence (in constructor taking wells)
Somehow this slipped one of the merges. With the last
patch this module failed to compile as we use the new
definition without the bool parameters.
2014-03-29 10:35:12 +01:00
Markus Blatt
c282949400 Merge remote-tracking branch 'upstream/master' into master-refactor-for-cpgrid-support
Manually resolved conflicts:
	opm/core/io/eclipse/EclipseWriter.cpp
	opm/core/io/eclipse/EclipseWriter.hpp
	opm/core/props/BlackoilPropertiesFromDeck.cpp
	opm/core/simulator/initState_impl.hpp
	opm/core/wells/WellsManager.cpp
	opm/core/wells/WellsManager.hpp
2014-03-27 15:27:11 +01:00
Joakim Hove
f0126b2501 Removed WellsManager constructor which takes an ole Eclipsegridparser instance. 2014-03-25 18:57:58 +01:00
Atgeirr Flø Rasmussen
5fc6cbc16f Made single-argument constructors explicit.
Avoids unintended implicit conversions.
2014-03-17 13:27:50 +01:00
Markus Blatt
c6daebc35d Merge branch 'refactor-for-cpgrid-support' into master-refactor-for-cpgrid-support
Manually resolved conflicts in:
	opm/core/props/BlackoilPropertiesFromDeck.cpp
	opm/core/wells/WellsManager.cpp
2014-03-13 13:41:45 +01:00
Markus Blatt
2d54a7398b Refactored WellsManager to partial use without UnstructuredGrid. 2014-02-25 17:52:51 +01:00
Kristian Flikka
a055b529ec Add handling of WGRUPCON to new-parser friendly WellsManager constructor 2014-02-24 15:24:33 +01:00
Markus Blatt
21864388bd Merge remote-tracking branch 'origin/opm-parser-integrate' into refactor-for-cpgrid-support
Resolved Conflicts:
	opm/core/props/BlackoilPropertiesFromDeck.cpp
	opm/core/props/rock/RockFromDeck.hpp
	opm/core/props/satfunc/SaturationPropsFromDeck.hpp
	opm/core/props/satfunc/SaturationPropsFromDeck_impl.hpp
2014-02-19 15:22:18 +01:00
Markus Blatt
d5f470cb68 Refactored parts needed for Blackoil in autodiff to get rid of UG dependency.
This patch refactors (hopefully) all parts of opm-core that are needed
by the fully implicite black oil solver in opm-autodiff and that inherently
relied on UnstructuredGrid.

We added a new simple grid interface consisting out of free functions
that will allow us to use CpGrid without copying it to an UnstructuredGrid
by the means of the GridAdapter. Using this interface we have add methods that
allow specifying the grid information (global_cell, cartdims, etc.) wherever
possible to prevent introducing grid parameters for the type of the grid.
Unfortunately this was not possible everywhere.
2014-02-17 13:23:01 +01:00
Kristian Flikka
ab42682399 Removed old EclipseGridParser from WellsManager constructor, WGROUPCON still missing 2014-02-14 15:36:32 +01:00
Kristian Flikka
3c93c7a781 Added building of WellsCollection group structure from new opm-parser objects 2014-02-14 13:43:25 +01:00
Kristian Flikka
3d215691da Removed WELTARG commented code, moved wellperf_data into createWellsFromSpecs function 2014-02-03 09:22:28 +01:00
Kristian Flikka
76dff2e326 Extracted well controls setup to separate function 2014-02-03 09:07:58 +01:00
Kristian Flikka
e12ec1b25d Extracted well specification and completion data setup to a function 2014-02-03 08:58:54 +01:00
Kristian Flikka
7ce9cb9055 Compdat extraction from new CompletionXXX classes 2014-01-29 11:58:13 +01:00
Kristian Flikka
731fe7d3f4 Changed new WellsManager constructor to take in EclipseStateConstPtr instead of SchedulePtr 2014-01-08 16:10:55 +01:00
Kristian Flikka
1f1c0ebcf3 New constructor for WellsManager that also takes the new parser as argument. New test comparing old and new 2014-01-07 16:10:45 +01:00
Júlio Hoffimann
c077912466 Remove trailing whitespaces 2013-07-28 08:34:13 -03:00
Bård Skaflestad
d6154d8961 Clone wells object when constructing from existing.
This installs a measure of safety on the part of the interface in that
the caller is free to dispose of the wells object upon returning from
the WellsManager constructor.
2012-10-05 10:15:06 +02:00
Halvor Møll Nilsen
044c13e9fb Added constuctor to WellManager which used Wells struct. 2012-10-05 10:14:55 +02:00
Atgeirr Flø Rasmussen
611cd53380 Reorganized, added opm/core/wells/ and opm/core/simulator/. 2012-06-05 15:42:49 +02:00