Commit Graph

108 Commits

Author SHA1 Message Date
Joakim Hove
0f8dec5224 Move parallelWellInfo() 2021-05-21 14:57:38 +02:00
Joakim Hove
40e8632f24 Move resetConnectionFactors() 2021-05-21 14:57:38 +02:00
Joakim Hove
a891a44756 Move wellIsOwned() 2021-05-21 14:57:38 +02:00
Joakim Hove
7695abfe25 Move wellMap() and numWells() accessors 2021-05-21 14:57:38 +02:00
Joakim Hove
6ac9e722fc Move reportConnections 2021-05-21 14:57:38 +02:00
Joakim Hove
5b86ecd3e2 Move WellState::report to WellStateFullyImplicitBlackOil 2021-05-21 14:57:38 +02:00
Joakim Hove
506a349085
Use wellcontainer2 (#3255)
Use WellContainer<> to manage members in WellState
2021-05-20 16:16:12 +02:00
Joakim Hove
2ac7b5e4bf Reorder variables and remove .reserve() calls 2021-05-15 08:49:14 +02:00
Arne Morten Kvarving
7c29453512 cosmetics
do not indent for namespace
2021-05-13 12:04:43 +02:00
Arne Morten Kvarving
861899de2e changed: put WellStateFullyImplicitBlackoil in separate compile unit 2021-05-13 12:01:03 +02:00
Arne Morten Kvarving
a032c5a80e changed: put WellState in separate compile unit 2021-05-13 00:38:08 +02:00
Bård Skaflestad
57d45011af Restore Debug Builds
This was broken in commit b5580f39f (PR #3222) which removed the
'start_perf_next_well' symbol but did not update every use location.
2021-05-12 08:37:19 +02:00
Joakim Hove
b5580f39fa Let the perforation index run over the indices for one well 2021-05-11 22:38:11 +02:00
Joakim Hove
846809ec29 Rename mutable perfPhaseRates() 2021-05-11 18:48:05 +02:00
Joakim Hove
f52398a32e Use WellContainer<Events> to manage per well events 2021-05-09 16:42:50 +02:00
Joakim Hove
a1f1d1047e Use mutable WellGroupEvents instance to track events in WellState 2021-05-06 14:02:03 +02:00
Joakim Hove
fe9a627aa3 Store the number of connections in separate vector 2021-05-05 11:30:33 +02:00
Joakim Hove
8a78dc1c59 Add class GlobalWellInfo and use it from WellState 2021-05-03 13:28:28 +02:00
Bård Skaflestad
dae6b61370
Merge pull request #3189 from joakim-hove/alqstate
Add class ALQState to manage the ALQ state in the WellState
2021-04-28 11:52:40 +02:00
Joakim Hove
8bae5e0127 Add class ALQState to manage the ALQ state in the WellState 2021-04-28 09:33:06 +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
1de5c9539c
Merge pull request #3174 from joakim-hove/use-groupstate2
Use groupstate2
2021-04-27 14:15:49 +02:00
Joakim Hove
e1d117c59f Extract group state and create WGState to manage well & group state 2021-04-27 10:55:38 +02:00
Bård Skaflestad
1f14c6ddef Forward Potential Rates to Next Report Step
These are used as part of calculating the BHP/THP when computing new
potential rates in models that feature VFP tables and must therefore
be properly initialised in the next report step's well state object.
2021-04-27 07:58:21 +02:00
Joakim Hove
a68589eb9a WellState will internalize PhaseUsage member 2021-04-27 00:11:04 +02:00
Tor Harald Sandve
93ac6e8283
Merge pull request #3165 from joakim-hove/wellstate-split
Wellstate split
2021-04-22 12:28:33 +02:00
Joakim Hove
7fecd9f433 Create new class GroupState to maintain runtime state of groups 2021-04-21 13:07:57 +02:00
Joakim Hove
c8db0d1090 Assign number of phases in WellState constructor 2021-04-21 13:07:57 +02:00
Joakim Hove
7131647362 Use Well.insert_index() instead of maintaining extra counter 2021-04-21 10:34:57 +02:00
Joakim Hove
ed2fb11084 Avoid superfluos code to reset globalIsProductionGrup to false 2021-04-21 09:04:55 +02:00
Tor Harald Sandve
9d56588906 Make gaslift parallel 2021-04-14 14:14:39 +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
43925ae4f2 Explicily assign CMODE_UNDEFINED when controls vector is resized 2021-03-29 16:20:10 +02:00
Bård Skaflestad
f980ff5f77
Merge pull request #3128 from totto82/fixTarget
reset target from wconprod and wconinje
2021-03-23 23:59:27 +01:00
Tor Harald Sandve
3a65a7ba22 reset target from wconprod and wconinje 2021-03-23 09:23:35 +01:00
Joakim Hove
44eb07e621 Don't Initialize Well State for Shut Wells 2021-03-20 20:33:28 +01:00
Joakim Hove
4fd5d52f2f Retrieve Number of Connections from Well Map 2021-03-20 20:33:28 +01:00
Joakim Hove
f0c738ea34 Reflect Well Object's Status Flag in Well State 2021-03-20 20:33:28 +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
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
Tor Harald Sandve
858856adec update solution for WAG injectors 2021-03-09 13:37:03 +01:00
Tor Harald Sandve
a098d76c19 fix issue when switching from injection to/from production 2021-03-08 11:13:34 +01:00
Tor Harald Sandve
f861188d60 make sure wells has valid controls 2021-03-08 08:44:55 +01:00
Joakim Hove
237eb2b7ee Fetch events from ScheduleState 2021-01-11 17:42:30 +01:00
Tor Harald Sandve
33e3102983 output stopped wells 2020-12-21 13:51:21 +01:00
Joakim Hove
ab143d15c7 Make sure well is open before copying MSW well state from previous 2020-12-14 09:01:42 +01:00
Joakim Hove
aa345a36f1 Fetch connpos and number of perforations from WellInfo for MSW wells 2020-12-14 09:01:37 +01:00
Joakim Hove
cd19e987cf
Merge pull request #2981 from joakim-hove/skip-prev-closed-well
Skip previously shut wells in WellState init
2020-12-11 17:01:46 +01:00
Markus Blatt
354ae1f319
Merge pull request #2976 from blattms/stdwell-comm-works-on-spe9
Make distributed standard well work on SPE9.
2020-12-11 13:43:03 +01:00