Commit Graph

131 Commits

Author SHA1 Message Date
Tor Harald Sandve
28a567550b removed dissolved gas and vapporized oil from RESV injection rates 2021-06-08 20:17:01 +02:00
Arne Morten Kvarving
0ef68b452a BlackoilWellModel: move runWellPIScaling to generic class 2021-06-07 15:01:10 +02:00
Arne Morten Kvarving
7219f09fdc BlackoilWellModel: mutate well_container_ directly in createWellContainer 2021-06-07 14:49:41 +02:00
Arne Morten Kvarving
2c5942595c BlackoilWellModel: put well container init in a separate method 2021-06-07 14:35:34 +02:00
Arne Morten Kvarving
30a59cd190 BlackoilWellModel: move updateWellPotentials to generic class 2021-06-07 14:22:30 +02:00
Arne Morten Kvarving
004abd942b BlackoilWellModel: put code for computing potentials in separate method 2021-06-07 14:09:36 +02:00
Arne Morten Kvarving
b0b0ae20d3 BlackoilWellModel: move some glift stuff to generic class 2021-06-07 13:36:22 +02:00
Arne Morten Kvarving
2b9141035e BlackoilWellModel: move setRepRadiusPerfLength to generic class 2021-06-07 13:36:17 +02:00
Arne Morten Kvarving
c5fae280f3 bring setWSolvent closer to original code
by introducing a getter for generic wells
2021-06-07 13:04:29 +02:00
Arne Morten Kvarving
60e7c90b1e BlackoilWellModel: move calculateEfficiencyFactors to generic class 2021-06-07 12:56:45 +02:00
Arne Morten Kvarving
811afb854b BlackoilWellModel: move updateNetworkPressures to generic class 2021-06-07 12:46:14 +02:00
Arne Morten Kvarving
172d344ab2 BlackoilWellModel: move inferLocalShutWells to generic class 2021-06-07 12:32:01 +02:00
Arne Morten Kvarving
ad4b34dc30 BlackoilWellModel: move forceShutWellByNameIfPredictionMode to generic class 2021-06-07 12:25:04 +02:00
Arne Morten Kvarving
54ff1c4c45 BlackoilWellModel: move hasTHPConstraints to generic class 2021-06-07 12:20:49 +02:00
Arne Morten Kvarving
059140f2ee split out typetag independent code from BlackoilWellModel 2021-06-07 12:04:06 +02:00
Arne Morten Kvarving
122ac87c55 GasLiftStage2: no longer a need to template on TypeTag 2021-05-28 08:24:07 +02:00
Arne Morten Kvarving
775177d73a GasLiftStage2: use GasLiftSingleWellGeneric 2021-05-28 08:24:07 +02:00
Arne Morten Kvarving
8f14e51c9e GasLiftStage2: use WellInterfaceGeneric
to lessen typetag dependence
2021-05-28 08:24:07 +02:00
Arne Morten Kvarving
7993e045c4 BlackoilWellModel: drop type alias GLiftWellState 2021-05-25 12:57:24 +02:00
Joakim Hove
23180e06d2 Rename WellStateFullyImplicitBlackoil -> WellState 2021-05-21 15:07:21 +02:00
Arne Morten Kvarving
31cb01ae24 no reason for GasLiftWellState to be typetag dependent 2021-05-20 12:17:24 +02:00
Tor Harald Sandve
1cd6ea14a9 only compute well potential when needed 2021-05-06 12:59:02 +02:00
Arne Morten Kvarving
a4c0af09d9 fixed: do not use Opm:: prefix when inside namespace Opm 2021-05-05 11:59:18 +02:00
Joakim Hove
8a78dc1c59 Add class GlobalWellInfo and use it from WellState 2021-05-03 13:28:28 +02:00
Bård Skaflestad
a6c374a27c Compute Well-Level PI For Shut Wells
This commit includes the shut wells in 'wells_ecl_' and expands the
PI/II value calculation to apply to those shut wells too.  With this
in place we are able to run cases that have a 'WELPI' keyword before
the well opens, even at the very first report step.
2021-04-27 14:51:18 +02:00
Bård Skaflestad
6e9d2bd89e Initialise More Data Members at Construction Time
In particular, apply explicit default constructors to most data
members and push initialisation to initialiser list if convenient.

While here, also split long lines and apply const in more places.
Finally, reset well- and connection-level PI values to zero in
WellState::shutWell().  This is in preparation of including shut
wells in BlackoilWellModel's internal state.
2021-04-27 14:50:37 +02:00
Joakim Hove
e1d117c59f Extract group state and create WGState to manage well & group state 2021-04-27 10:55:38 +02:00
Joakim Hove
a68589eb9a WellState will internalize PhaseUsage member 2021-04-27 00:11:04 +02:00
Joakim Hove
7d825ba9d0 Rename function wellToState -> loadRestartData 2021-04-13 21:02:36 +02:00
Håkon Hægland
61e67b143d Adds a simple test case for gas lift.
Adds a simple test case for gas lift optimization. Currently this is
very simplistic and only covers a fraction of the gas lift optimization
code. The plan is to use this as a building block to add more tests
in the future.
2021-04-01 16:41:46 +02:00
Håkon Hægland
434640fdf5 Implements gas lift optimization for groups.
Extends PR #2824 to include support for GLIFTOPT (item 2, maximum lift
gas supply for a group) and group production constraints.

The optimization is split into two phases. First the wells are optimized
separately (as in PR #2824). In this phase LIFTOPT and WLIFTOPT constraints
(e.g. maxmimum lift gas injection for a well, minimum economic gradient) are
considered together with well production constraints.

Then, in the next phase the wells are optimized in groups. Here, the ALQ
distribution from the first phase is used as a starting point. If a group
has any production rate constraints, and/or a limit on its total rate of
lift gas supply, lift gas is redistributed to the wells that gain the most
benefit from it by considering which wells that currently has the largest
weighted incremental gradient (i.e. increase in oil rate compared to
increase in ALQ).
2021-03-30 15:41:46 +02:00
Joakim Hove
98f6a9a7ac Update collection of wells after ACTIONX 2021-03-29 16:20:10 +02:00
Joakim Hove
5fe43c09cb Implement updateEclWell() as an internal function in wellPI code 2021-03-29 16:20:10 +02:00
Joakim Hove
405b9d2244 Add accessor functions to maintain WellState objects in well model 2021-03-29 15:30:32 +02:00
Tor Harald Sandve
8283b53f3b only compute Bavg once pr timestep and use the stored variable instead of passing it around 2021-03-23 15:30:36 +01:00
Tor Harald Sandve
8882b8027a
Merge pull request #3115 from totto82/onlyComputeGuideRateOnce
only compute guiderates at the beginning of a timestep
2021-03-23 08:43:47 +01:00
Joakim Hove
e2d75b608b Rename well filter -> not_on_process_() 2021-03-20 20:33:28 +01:00
Tor Harald Sandve
78d351676f only update guide rates at the beginning of a timestep 2021-03-19 11:09:14 +01:00
Bård Skaflestad
b982ad0fd2 Record Dynamic Well Status in 'wellData()' Output
This commit sets the 'data::Well::dynamicStatus' based on the
dynamically updated 'Schedule' object (i.e., from ACTIONX and
similar) and the results of well/operability testing (WECON and/or
WTEST).  If a well is closed due to economic limits (WECON) we still
provide summary-style data at the timestep that closed the well, but
omit this data at later steps until the well reopens.

We add a new parameter to WellState::report() to distinguish these
situations.

This is in preparation of making the 'BlackoilWellModel' manage both
open and shut wells alike.
2021-03-18 17:28:28 +01:00
Bård Skaflestad
65edfb702c Preparations for Recording Dynamic Well State
Coalesce blocks with same conditions, split long lines, and apply
'const' where appropriate.  While here, also tighten the "rate = 0"
criterion to include denormalised numbers.
2021-03-18 17:28:28 +01:00
Joakim Hove
cd7c4d9927
Merge pull request #3112 from totto82/refact_ginj
Add support for explicit guiderate for injection groups
2021-03-18 17:03:53 +01:00
Tor Harald Sandve
58fa3eaf31 replace asserts with OPM_DEFLOG_THROW 2021-03-18 11:58:05 +01:00
Tor Harald Sandve
f4ac7f555b Add support for explicit guiderate for injection groups
With this commit the guiderate logic used for the production groups is also used for injectors
This allows for setting guiderates explicit at different group levels
Only RATE, NETV and VOID guiderate type is suppored.
2021-03-16 15:56:31 +01:00
Paul Egberts
646dafe78f introduced computeWellTemperature() to be called at each timestep 2021-03-08 15:11:50 +01:00
Joakim Hove
ff51c2d7ee Handle WELLPI keyword in ACTIONX
When an ACTIONX has evaluated to True we inspect the keyword payload and if it
contains WELPI we query the well model for current wellpi values and pass that
along as context to the Schedule::applyAction()
2021-02-18 16:53:50 +01:00
Joakim Hove
99a61e120b Implement BlackoilWellModel::hasWell() method 2021-02-13 10:37:45 +01:00
Joakim Hove
0299af26ed Extract method wellPI() from existing lambda implementation 2021-02-12 11:49:04 +01:00
Joakim Hove
89eb6e5659 Extract functionality to update ecl wells to separate function 2021-02-10 15:17:36 +01:00
Arne Morten Kvarving
9b74b5dfac changed: this is known on compile time
use info to disable code
2021-01-28 14:33:56 +01:00
Arne Morten Kvarving
77692c1f99 quell unused parameter warning 2021-01-28 12:52:19 +01:00