Arne Morten Kvarving
a9590215dc
changed: consistently use std::array
2022-08-26 08:28:46 +02:00
Arne Morten Kvarving
1a348c0d29
changed: get rid of duplicate MatrixBlock headers/classes
...
this has already led to some confusion. move some of the code
upstream to opm-models and remove the rest of the duplicated code.
the remainder of MatrixBlock.hpp is renamed to SmallDenseMatrixUtils.hpp
2022-08-25 12:48:53 +02:00
Bård Skaflestad
a56cd6752c
Revert "changed: reduce some code duplication"
2022-08-24 20:34:52 +02:00
Arne Morten Kvarving
447d77b579
changed: get rid of duplicate MatrixBlock headers/classes
...
this has already led to some confusion. move some of the code
upstream to opm-models and remove the rest of the duplicated code.
the remainder of MatrixBlock.hpp is renamed to SmallDenseMatrixUtils.hpp
2022-08-24 15:54:01 +02:00
Tor Harald Sandve
96222f8afb
dont use explicit vfp lookup for newly opened wells
2022-08-19 10:33:19 +02:00
Arne Morten Kvarving
d2ba2e75e8
remove include of Well header
2022-08-11 11:49:42 +02:00
Markus Blatt
941957c13e
Fix shadowed variable warning.
2022-07-28 19:50:24 +02:00
Markus Blatt
f7dec58ee2
Fix deadlock for distributed wells when calculating densities/pressures
...
There was a check that is supposed that all rates are zero but for
distributed wells it only checked local perforations. Of course that
can lead to different outcome on processes for distributed wells.
2022-07-15 17:58:04 +02:00
Markus Blatt
412cf1d6cd
Merge pull request #3976 from blattms/well-fix-distributed-tw
...
[bugfix] Fix well transmissibility weights for distributed wells.
2022-07-15 10:39:48 +02:00
Markus Blatt
bfd1d3187a
[bugfix] Fix well transmissibility weights for distributed wells.
...
If we compute a sum over all perforations than we need to cater for the
case of distributed wells. That is we need to also sum up over all processes
involved after performing the local sum.
One of these global sums was missing in computeWellConnectionDensitesPressures
for producers when we compute the weights based on well transmissibilities.
2022-07-13 13:40:16 +02:00
Tor Harald Sandve
cf1abb086f
remove msw(ms) from regulariztion parameter
2022-06-29 15:39:51 +02:00
Tor Harald Sandve
eef455106d
regularize equation for std wells
2022-06-29 12:47:44 +02:00
Arne Morten Kvarving
da57e15271
fixed: fix build with dune 2.6
2022-06-20 14:16:43 +02:00
hnil
4ead854b69
- taking pullrequest information into account
...
- Moving transfere level to be template of OwningTwolevelPrecontitioner
2022-06-08 17:03:27 +02:00
hnil
8f4cf8a952
removed compiler warnings
2022-06-08 17:03:27 +02:00
hnil
541edeaf67
- add default for CPRW
...
- cleanded code
2022-06-08 17:03:27 +02:00
hnil
6c407506a9
cleaning code
2022-06-08 17:03:27 +02:00
hnil
a8acd40f4a
Changes to make ms wells work with cprw
2022-06-08 17:03:27 +02:00
hnil
4975d5d9e7
- fixed extended communicator
...
- fixed scaling of well cpr
2022-06-08 17:02:02 +02:00
hnil
da572d1f60
-Fixed buges related to cpr with wells.
...
- change interfaces to have access to pressureVarIndex
- added option in cmake files to propagate checking in dune-istl
2022-06-08 17:02:02 +02:00
Atgeirr Flø Rasmussen
fef06a77af
Updated for upstream changes.
2022-06-08 17:02:02 +02:00
hnil
f3acfcde0b
Adding functions for pressure system manipulation to well models.
...
Also add well-aware operator and transfer policy.
This will be used for CPR with custom operators.
2022-06-08 17:01:33 +02:00
Tor Harald Sandve
3adaa1b987
fix component/phase mixup
2022-06-07 14:14:13 +02:00
Tor Harald Sandve
e965dac3ee
Only flag a bhp producer/injector operable if the sum of IPR are negative/positive
2022-06-07 10:47:22 +02:00
Paul Egberts
a255613452
Merge branch 'master' into vapoilwat
2022-05-11 11:55:54 +02:00
Paul Egberts
5a23084846
restored MultisegmentWellEval.cpp
2022-05-03 11:54:41 +02:00
Tor Harald Sandve
c8bef3bcd5
only check if wells has negative potentials if check_well_operabilty=true(default)
2022-04-22 08:19:33 +02:00
Håkon Hægland
9d04895ddb
Fix assertion error for 2p oil water
...
VFP calculations for two phase gas lift does not work unless the
rates are adpated to include a zero gas rate.
2022-04-20 21:47:15 +02:00
Paul Egberts
17f2365406
clean up comments
2022-04-11 22:15:35 +02:00
Paul Egberts
c2fa5fc5a8
adding three-phase simulator including water evaporation and saltpreciopitation
2022-04-11 21:56:44 +02:00
Paul Egberts
ab3be6dce4
adjustments to account for vaporized water
2022-04-08 22:36:39 +02:00
Tor Harald Sandve
fba9046201
Some more clean-up based on review
2022-04-04 11:37:31 +02:00
Tor Harald Sandve
69ffed06de
Address comments from review
...
1) Add debug messages
2) Fix bug of missing else in the code
2022-04-04 08:24:32 +02:00
Tor Harald Sandve
5b53fcd8a6
guard against d = 0
2022-04-04 08:24:32 +02:00
Kai Bao
aa633ff98f
reconstructing the if structure for has_energy
...
in StandardWell<TypeTag>::
calculateSinglePerf()
2022-03-31 22:38:55 +02:00
Tor Harald Sandve
519b5dd8cc
Merge pull request #3810 from totto82/refactor_bhpFromThpLimit_1
...
Refactor bhp from thp limit
2022-03-22 13:57:52 +01:00
Tor Harald Sandve
c067e5fafd
Merge pull request #3834 from totto82/avoid_closing
...
Handle case where bhp target is violated
2022-03-22 11:56:21 +01:00
Tor Harald Sandve
7d5a0a74eb
Handle case where bhp target is violated
2022-03-21 09:52:41 +01:00
Håkon Hægland
438a712e54
Gas lift optimization for two-phase oil-water.
...
Add gas lift optimization support for two-phase oil-water flow.
2022-03-07 15:19:43 +01:00
Tor Harald Sandve
cb99a2fc74
check also the validity of the iterated solution
2022-02-15 12:39:42 +01:00
Tor Harald Sandve
e0573e99b1
iterate in computeBhpAtThpLimitProdWithAlq if no solution or potentials are negative
2022-02-15 12:39:42 +01:00
Tor Harald Sandve
1001d35418
Move computeBhpAtThpLimitProd MSW code to common and apply it for both MSW and STW
...
The computeBhpAtThpLimitProd for MSW is faster and sufficiently robust and should also be used by STW
2022-02-15 12:39:42 +01:00
Håkon Hægland
54160827de
Add gaslift optimization support for MSW.
...
Implements gas lift optimization support for multisegmented wells (MSW).
2022-02-14 21:38:50 +01:00
Håkon Hægland
4970b0641e
Improve debugging tools in gaslift code.
...
Introduces a gaslift debugging variable in ALQState in WellState. This
variable will persist between timesteps in contrast to when debugging
variables are defined in GasLiftSingleWell, GasLiftGroupState, or GasLiftStage2.
Currently only an integer variable debug_counter is added to ALQState,
which can be used as follows: First debugging is switched on globally
for BlackOilWellModel, GasLiftSingleWell, GasLiftGroupState, and
GasLiftStage2 by setting glift_debug to a true value in BlackOilWellModelGeneric.
Then, the following debugging code can be added to e.g. one of
GasLiftSingleWell, GasLiftGroupState, or GasLiftStage2 :
auto count = debugUpdateGlobalCounter_();
if (count == some_integer) {
displayDebugMessage_("stop here");
}
Here, the integer "some_integer" is determined typically by looking at
the debugging output of a previous run. This can be done since the
call to debugUpdateGlobalCounter_() will print out the current value
of the counter and then increment the counter by one. And it will be
easy to recognize these values in the debug ouput. If you find a place
in the output that looks suspect, just take a note of the counter
value in the output around that point and insert the value for
"some_integer", then after recompiling the code with the desired value
for "some_integer", it is now easy to set a breakpoint in GDB at the
line
displayDebugMessage_("stop here").
shown in the above snippet. This should improve the ability to quickly
to set a breakpoint in GDB around at a given time and point in the simulation.
2022-01-23 20:37:26 +01:00
Bård Skaflestad
abf92eed52
Accumulate Dissolved Gas and Vaporized Oil Flow Rates Across Ranks
...
This is needed to get consistent estimates for the summary vectors
* {F,G,W}OP{R,T}{F,S} -- Free/Vaporized Oil Production
* {F,G,W}GP{R,T}{F,S} -- Free/Dissolved Gas Production
in the case of distributed wells.
Thanks to [at]blattms for the suggested fix.
2022-01-10 14:14:39 +01:00
Joakim Hove
6b92443cb4
Downstream filesystem reorganisation in opm-common
2022-01-02 14:33:34 +01:00
Tor Harald Sandve
51d9b7ee11
Merge pull request #3719 from totto82/noIterPot
...
Do not iterate when computing well potentials for standard wells
2021-12-10 16:20:10 +01:00
Tor Harald Sandve
fac3ca3507
do not iterate when computing well potentials
2021-12-02 13:48:22 +00:00
Tor Harald Sandve
2c17b1942c
Move getPerfCellPressure to wellInterface
...
The cell pressure is independent of well model and belongs to the interface
This should move the MSW model one step closer to supporting GasWater cases
2021-11-30 10:48:02 +00:00
Tor Harald Sandve
50ab26c330
cleanup
2021-11-23 14:01:07 +00:00
Tor Harald Sandve
43fd50e355
only mark negative potentials as not operable
2021-11-22 11:27:45 +00:00
Tor Harald Sandve
b5cdb1048a
Mark wells with negative and trivial potentials as not operable
...
The simulator will try to compute potentials at every iterations to
try to reopen the well.
2021-11-22 08:44:17 +00:00
Tor Harald Sandve
1c9c5c484b
check operability injectors
2021-10-15 12:32:02 +02:00
Tor Harald Sandve
70c9d2e237
Merge pull request #3590 from daavid00/micp-2021-10
...
micp
2021-10-14 22:28:28 +02:00
daavid00
48b175904a
first version of micp implementation in flow
2021-10-14 17:44:57 +02:00
Tor Harald Sandve
fdf6ce9c54
change assert with throw for isfinite primary variable
2021-10-08 15:26:52 +02:00
Tor Harald Sandve
cb9254636b
rename and cleanup
2021-09-30 09:01:07 +02:00
Joakim Hove
a527dc7fdd
Remove stale TODO
2021-09-28 23:45:40 +02:00
Joakim Hove
3aaaa23ed1
Implement connection rate summation in SingleWellState
2021-09-28 23:45:40 +02:00
Joakim Hove
a11e3222bd
Merge pull request #3534 from joakim-hove/use-single-well-state
...
Use single well state
2021-09-22 12:35:15 +02:00
Tor Harald Sandve
21942f0cc2
use getMobilityScalar in updateIPR
2021-09-21 09:50:20 +02:00
Joakim Hove
5531120411
Use SingleWellState argument instead of full WellState
2021-09-20 11:45:24 +02:00
Tor Harald Sandve
bd066d9300
Merge pull request #3524 from totto82/speedUpPot
...
Do not iterate inside computeBhpFromThp in MSW
2021-09-15 12:44:52 +02:00
Tor Harald Sandve
81d9a8c178
add option for relaxed convergence for stw
2021-09-14 14:32:14 +02:00
Tor Harald Sandve
43a858ef25
rename computeBhpFromThpPotential to computeBhpFromThpIterations in std wells
2021-09-13 14:07:21 +02:00
Arne Morten Kvarving
ae212ff883
drop using statement for ipr_b_
...
rather qualify member variable with this->
2021-09-07 11:26:33 +02:00
Arne Morten Kvarving
870cb04e68
drop using statement for ipr_a_
...
rather qualify member variable with this->
2021-09-07 11:26:33 +02:00
Arne Morten Kvarving
ad39dbdaf0
drop using statement for bore_diameters_
...
rather qualify member variable with this->
2021-09-07 11:26:33 +02:00
Arne Morten Kvarving
001d69c17b
drop using statement for perf_length_
...
rather qualify member variable with this->
2021-09-07 11:26:33 +02:00
Arne Morten Kvarving
475bea085c
drop using statement for perf_rep_radius_
...
rather qualify member variable with this->
2021-09-07 11:26:33 +02:00
Arne Morten Kvarving
2cc38ed396
drop using statement for connectionRates_
...
rather qualify member variable with this->
2021-09-07 11:26:33 +02:00
Arne Morten Kvarving
9b92837673
drop using statement for num_components_
...
rather qualify member variable with this->
2021-09-07 11:26:33 +02:00
Arne Morten Kvarving
1d15c3064a
drop using statement for index_of_well_
...
rather qualify member variable with this->
2021-09-07 11:25:09 +02:00
Arne Morten Kvarving
10b756d08c
drop using statement for well_index_
...
rather qualify member variable with this->
2021-09-07 11:25:09 +02:00
Arne Morten Kvarving
aaf216a29a
drop using statement for saturation_table_number_
...
rather qualify member variable with this->
2021-09-07 11:25:09 +02:00
Arne Morten Kvarving
55b52c3bd4
drop using statement for number_of_phases_
...
rather qualify member variable with this->
2021-09-07 11:25:09 +02:00
Arne Morten Kvarving
79801bb63a
drop using statement for number_of_perforations_
...
rather qualify member variable with this->
2021-09-07 11:25:09 +02:00
Arne Morten Kvarving
66e938b13e
drop using statement for well_cells_
...
rather qualify member variable with this->
2021-09-07 11:24:51 +02:00
Arne Morten Kvarving
97cbbe910a
drop using statement for perf_depth_
...
rather qualify member variable with this->
2021-09-07 11:24:51 +02:00
Arne Morten Kvarving
68786651f5
drop using statement for well_efficiency_factor_
...
rather qualify member variable with this->
2021-09-07 11:24:51 +02:00
Arne Morten Kvarving
73be71bff5
drop using statement for param_
...
rather qualify member variable with this->
2021-09-07 11:24:06 +02:00
Arne Morten Kvarving
79d8cf90fd
drop using statement for well_ecl_
...
rather qualify member variable with this->
2021-09-07 11:24:06 +02:00
Arne Morten Kvarving
874a7a3830
drop using statement for getALQ
...
rather qualify member function calls with this->
2021-09-07 11:24:06 +02:00
Arne Morten Kvarving
45de63f0f5
drop using statement for mostStrictBhpFromBhpLimits
...
rather qualify member function calls with this->
2021-09-07 11:24:06 +02:00
Arne Morten Kvarving
83671b3448
drop using statement for wfoam
...
rather qualify member function calls with this->
2021-09-07 11:24:06 +02:00
Arne Morten Kvarving
6cfd259f2f
drop using statement for wpolymer
...
rather qualify member function calls with this->
2021-09-07 11:24:06 +02:00
Arne Morten Kvarving
fd2185d3f9
drop using statement for wsolvent
...
rather qualify member function calls with this->
2021-09-07 11:23:25 +02:00
Arne Morten Kvarving
2c0743c888
drop using statement for wsalt
...
rather qualify member function calls with this->
2021-09-07 11:23:25 +02:00
Arne Morten Kvarving
dae0e73327
drop using statement for ebosCompIdxToFlowCompIdx
...
rather qualify member function calls with this->
2021-09-07 11:23:25 +02:00
Arne Morten Kvarving
9ebb315002
drop using statement for flowPhaseToEbosPhaseIdx
...
rather qualify member function calls with this->
2021-09-07 11:23:24 +02:00
Arne Morten Kvarving
35cc1b9a2a
drop using statement for flowPhaseToEbosCompIdx
...
rather qualify member function calls with this->
2021-09-07 11:23:24 +02:00
Arne Morten Kvarving
48e282bd65
drop using statement for getAllowCrossFlow
...
rather qualify member function calls with this->
2021-09-07 11:23:24 +02:00
Arne Morten Kvarving
2b1ac22c99
drop aliases for Indices entries
...
using Indices directly more clearly shows where the data comes
from without having to hop through hoops to do so.
2021-09-06 12:49:01 +02:00
Tor Harald Sandve
7c8a39fdb6
fix after rebase
2021-08-26 10:32:58 +02:00
Tor Harald Sandve
514c2a67a9
always compute potentials
2021-08-26 10:29:25 +02:00
Tor Harald Sandve
7e3cca1316
iterate to get more accurate potentials for stw wells
2021-08-26 10:29:25 +02:00
Joakim Hove
579aba8d08
Include perforation data in SingleWellState
2021-08-24 12:46:24 +02:00
Joakim Hove
755de65eb4
Use SingleWellState to manage well surface rates
2021-08-24 12:46:24 +02:00
Joakim Hove
67bd2fd333
Add productivity_index to SingleWellState
2021-08-23 12:05:26 +02:00
Joakim Hove
e84eaa3179
Add dissolved_gas_rate and vaporized_oil_rate to SingleWellState
2021-08-23 12:05:26 +02:00
Joakim Hove
581f571c9d
Use SingleWellState for production and injection control
2021-08-15 09:07:39 +02:00
Joakim Hove
a54daf75e8
Add trivial class SingleWellState with bhp and thp
2021-08-15 09:01:21 +02:00
Tor Harald Sandve
ac4ee51a5f
Merge pull request #3465 from totto82/updateWTS
...
Make sure potentials are computed in some corner cases
2021-08-10 14:15:22 +02:00
Tor Harald Sandve
5cb81d36c9
re-compute potentials for pressure controlled wells with trivial rates
2021-08-09 13:41:50 +02:00
Tor Harald Sandve
153cd678c6
Add a derivative free version of the well rate calculations
2021-08-04 11:32:50 +02:00
Tor Harald Sandve
60f59cd6e6
Potentially reduce gaslift when under well is under group control
...
Current implemention only support ORAT and GRAT controlled groups
2021-06-30 09:59:09 +02:00
Håkon Hægland
fbb24e2a5a
Check group limits in gas lift stage 1.
...
Check group limits in gas lift stage 1 to avoid adding too much ALQ which must
anyway later be removed in stage 2. This should make the optimization
more efficient for small ALQ increment values. Also adds MPI support.
2021-06-16 12:00:54 +02:00
Joakim Hove
3c3a4afcfc
Use PerfData for connection productivity index
2021-06-10 14:32:45 +02:00
Joakim Hove
81c5ce8843
Use PerfData for water throughput, water velocity and skin pressure
2021-06-10 14:32:45 +02:00
Joakim Hove
db02b9f112
Use PerfData for solvent perforation rates
2021-06-10 14:27:37 +02:00
Joakim Hove
49e9b51269
Use PerfData for polymer rates
2021-06-10 07:19:21 +02:00
Joakim Hove
3010b96611
Use PerfData for perforation rates
2021-06-10 07:19:21 +02:00
Joakim Hove
76838cd8a4
Use PerfData for perforation pressure
2021-06-10 07:19:21 +02:00
Arne Morten Kvarving
eb06c4bd70
add StandardWellEval
2021-06-09 08:32:30 +02:00
Joakim Hove
023edc67e5
Remove first perf member from Well classes
2021-06-08 14:24:26 +02:00
Arne Morten Kvarving
10ff86af52
add StandardWellGeneric
...
avoid rebuilding this for all simulators when code
is only dependent on Scalar. specialized for double
2021-06-08 08:08:50 +02:00
Arne Morten Kvarving
4c09b5dde3
add WellInterfaceEval
2021-06-07 08:26:43 +02:00
Joakim Hove
32a6f32660
Use WellContainer to manage perf phase rate
2021-06-05 07:50:56 +02:00
Joakim Hove
6a21371b59
Use WellContainer to manage perf phase rates
2021-06-04 18:23:20 +02:00
Joakim Hove
76292552ec
Use WellContainer for perf rate of polymer/solvent/brine
2021-06-04 18:23:20 +02:00
Joakim Hove
104036d4b8
Use WellContainer for perf water velocity
2021-06-04 18:23:20 +02:00
Joakim Hove
b0fd14a597
Use WellContainer<> for perforation skin pressure
2021-06-04 18:23:20 +02:00
Joakim Hove
1a6737aff3
Use well index for perforation rates
2021-06-03 13:29:45 +02:00
Joakim Hove
739f6ad28a
Use well index for solvent perf rates
2021-06-03 13:21:23 +02:00
Joakim Hove
a2195f367d
Use well index for brine perf rates
2021-06-03 13:21:23 +02:00
Joakim Hove
fa829cce7a
Use well index for polymer perforation rates
2021-06-03 13:21:23 +02:00
Joakim Hove
f62b0a5d1e
Use well index for well water perf velocity
2021-06-03 13:21:23 +02:00
Joakim Hove
8f9a3f0140
Use Well index for perf skin pressure
2021-06-03 13:21:23 +02:00
Joakim Hove
89ae75b46c
Use well index to access WellState::perfThroughput()
2021-06-03 13:21:23 +02:00
Arne Morten Kvarving
c76803b913
changed: make bhp template hidden and use explicit instantations
...
this to avoid includes in headers.
2021-05-31 11:42:29 +02:00
Tor Harald Sandve
cccece4104
use rates for potentials for pressure controlled (bhp or thp) controled wells
2021-05-26 13:54:14 +02:00
Joakim Hove
86c75ee4fe
Merge pull request #3298 from akva2/no_opm_in_opm
...
fixed: do not use Opm:: prefix when inside namespace Opm
2021-05-26 10:15:46 +02:00
Joakim Hove
c400b6eeef
Merge pull request #3290 from joakim-hove/wellcontainer-rsrv
...
Use WellContainer<double> for RS / RV
2021-05-26 07:22:51 +02:00
Arne Morten Kvarving
d55df4330e
fixed: do not use Opm:: prefix when inside namespace Opm
2021-05-25 12:06:06 +02:00
Joakim Hove
b34c161805
Use WellContainer<double> for RS / RV
2021-05-24 10:01:00 +02:00
Joakim Hove
89a712603f
Use well index for misc perforation data
2021-05-24 09:14:36 +02:00
Joakim Hove
d6151e2f00
Use well index for perf water throughput
2021-05-24 09:14:36 +02:00
Joakim Hove
2f901f1012
Use well index when iterating over brine perforation rates
2021-05-24 09:14:36 +02:00
Joakim Hove
f9e142dc8d
Use well index when iterating over polymer perforation rates
2021-05-24 09:14:36 +02:00
Joakim Hove
5437cfa37a
Use well index when iterating over solvent perf rates
2021-05-24 09:14:36 +02:00
Arne Morten Kvarving
1614767362
GasLiftSingleWell: split typetag independent code to separate class
2021-05-21 09:09:10 +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
b0458cee33
Merge pull request #3268 from joakim-hove/wellstate-iget
...
Wellstate iget
2021-05-19 14:29:26 +02:00
Joakim Hove
6af03f4a6a
Update WellState::thp()
2021-05-19 10:05:11 +02:00
Joakim Hove
3ec7feba75
Update WellState::bhp()
2021-05-19 10:05:11 +02:00
Arne Morten Kvarving
bcfab1fed3
use if constexpr to eliminate some brine code
2021-05-18 15:04:47 +02:00
Arne Morten Kvarving
db668e8d80
make has_energy constexpr and use if constexpr to eliminate code
2021-05-18 15:04:47 +02:00
Arne Morten Kvarving
268201eeb1
make has_polymermw constexpr and use if constexpr to eliminate code
2021-05-18 15:04:47 +02:00
Arne Morten Kvarving
dd04eb128a
use if constexpr to eliminate some zFraction code
2021-05-18 10:18:11 +02:00
Arne Morten Kvarving
83595d84c3
use if constexpr to eliminate some polymer code
2021-05-18 10:18:11 +02:00
Arne Morten Kvarving
1fa74b5889
use if constexpr to eliminate some foam code
2021-05-18 10:18:11 +02:00
Arne Morten Kvarving
6157122bd8
use if constexpr to eliminate some solvent code
2021-05-18 10:17:21 +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
Tor Harald Sandve
80413e0794
add useInnerIteration method and move assembleWellEq to the well interface to avoid code duplication
2021-05-10 09:41:18 +02:00
Tor Harald Sandve
eeb1b7e36c
Initialize empty producers using the mobility ratio and the transmissbility ratio
2021-05-05 08:31:36 +02:00
Tor Harald Sandve
70150ab212
Remove code duplication between STW and MSW
2021-04-30 09:27:35 +02:00
Joakim Hove
e1d117c59f
Extract group state and create WGState to manage well & group state
2021-04-27 10:55:38 +02:00
Tor Harald Sandve
12880be916
Merge pull request #3159 from totto82/updateWellTargetFix
...
get bhp from thp without solving
2021-04-26 13:15:30 +02:00
Tor Harald Sandve
ebcaea3faa
get bhp from thp without solving
2021-04-14 15:58:58 +02:00
Tor Harald Sandve
9d56588906
Make gaslift parallel
2021-04-14 14:14:39 +02:00
Håkon Hægland
a80ad54d7d
Parallel runs not supported yet.
...
Gives a warning if gas lift optimization is attempted for more than one
process in the MPI communicator. The plan is to implement support for
muliple processes in a later commit.
2021-03-30 15:42:33 +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
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
Joakim Hove
9662d4019e
Use enum Well::Status to indicate well status instead of bool
2021-03-20 20:33: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
fda1d65494
Pass table argument to VFP getFLo()
2021-02-15 22:21:56 +01:00
Joakim Hove
e4789d4eb7
Use std::reference_wrapper for VFP tables
2021-01-26 07:56:59 +01:00
Tor Harald Sandve
036a021c63
fix well model for gasoil thermal
2021-01-21 11:37:25 +01:00
Atgeirr Flø Rasmussen
3a0dbdc6e7
Merge pull request #2993 from blattms/stdwell-comm-rebase-split-cont-clean
...
Final fixes to make distributed wells work for Norne.
2021-01-15 15:42:45 +01:00
Kai Bao
286a7d2e5b
Merge pull request #3002 from totto82/moveWellOpCheck
...
move well operability check for STW
2021-01-08 11:28:35 +01:00
Joakim Hove
c1e10d81ba
Use ScheduleState to access nupcol
2021-01-06 15:10:05 +01:00
Tor Harald Sandve
5ee75c45e3
move well operability check for STW
2021-01-05 15:10:40 +01:00
Markus Blatt
5b943761d7
Fixes StandardWell::computeConnectionDensities.
...
This computation is serial and needs a complete representation
of data attached to all preforations (even those stored on
another process). This commit uses the newly created factory to
correctly compute the connection densities for distributed wells.
2020-12-18 14:48:19 +01:00
Markus Blatt
4dff6fb168
Fixes StandardWell::updateProductivityIndex for distributed wells.
2020-12-18 14:48:19 +01:00
Markus Blatt
12f5a6aaff
Fixes StandardWell::allDrawDownWrongDirection for distributed wells.
2020-12-18 14:48:19 +01:00
Markus Blatt
ba1feadb63
Added missing parallel reduction to computeCurrentWellRates.
...
This is supposed to be summation over values at all perforations.
Hence, it needs a parallel sum.
2020-12-18 14:48:19 +01:00
Markus Blatt
fc4a7fa3c1
Fixes StandardWell::updateIPR for distributed wells.
...
Of course the summation needs to be over all perforations of the
wells, no matter where they reside. Hence we need communication.
2020-12-18 14:48:19 +01:00
Markus Blatt
c09797355d
Sum well rates in computeWellRatesWithBhp for distributed wells.
...
This needs summation over all procs that share the well as it needs
information from all perforations. Some of them might reside on other
processes.
2020-12-18 14:48:19 +01:00
Markus Blatt
c0c1897ea9
Fix computeConnectionPressureDelta for distributed wells.
...
As this is as sequential (ordering matters!) as it can get we need to
communicate all perforations, do the partial sum with them and save
result back to the local perforations.
2020-12-10 11:32:52 +01:00
Atgeirr Flø Rasmussen
6e87ec6266
Merge pull request #2955 from blattms/stdwell-comm-rebase-split-pwell-info
...
Last part of current distributed standard wells.
2020-12-10 08:56:00 +01:00
Tor Harald Sandve
a7664f9ea6
Add check for operability of MSW
2020-12-08 12:38:25 +01:00
Markus Blatt
f7ed1b21fa
Determine pressure and depth above for distributed wells.
2020-12-07 16:32:33 +01:00
Markus Blatt
2e5b1c8d54
Use reference for WellInterface::parallel_well_info_
2020-12-04 13:24:31 +01:00
Markus Blatt
8ee58096ba
Make the parallel reduction when applying the Wells.
...
The B matrix is basically a component-wise multiplication
with a vector followed by a parallel reduction. We do that
reduction to all ranks computing for the well to save the
broadcast when applying C^T.
2020-12-03 11:10:36 +01:00
Markus Blatt
ab114b2e95
Use WellInterface::perf_data_ to calculate PI.
...
that simplifies the code a bit and will work with
distributed wells. Previously, we assumed that all
non-shut perforations are stored locally. That does
not hold any more.
2020-12-01 14:11:05 +01:00
Bård Skaflestad
bd79d4b9d5
PI/II: Switch to Using Values Only
...
We don't need to do the calculations in terms of EvalWell when we're
going to reduce this to the .value() before calling the PI/II
calculation routine. We can also get by with a simpler approach to
computing the II by assuming we always inject pure phases and no
cross flow in injectors.
Suggested by: [at]atgeirr
2020-11-24 21:53:58 +01:00
Bård Skaflestad
92589a697b
PI/II Loop: Switch Order of Injection/Production Branches
...
For readability reasons.
Suggested by: [at]atgeirr
2020-11-24 21:53:58 +01:00
Bård Skaflestad
c8a43b982c
PI/II Loop: Check That We Process All Active Connections
...
Assert that the 'subsetPerfID' is equal to number_of_perforations_
at the end of the loop.
Suggested by: [at]atgeirr
2020-11-24 21:53:58 +01:00
Bård Skaflestad
a46a732f9e
PI: Treat Production Differently From Injection
...
This commit makes the PI/II calculation more closely mirror the
approach taken when computing connection flow rates. In particular,
we switch to using total mobility, mixing and volume ratios for
injecting connections while producing connections continue to use
the phase mobilities and formation volume factors derived from
conditions in the connecting cells. We also include dissolved
gas/oil ratios and vaporised oil/gas ratios in order to fully
capture the surface flow conditions.
We split the handling of producing/injecting connections out to
separate helper functions in order to make the overall logic in
updateProductivityIndex() more manageable.ex() more manageable.
2020-11-24 21:53:58 +01:00
Bård Skaflestad
75156cd872
Unconditionally Calculate PI at End of Timestep
...
This commit ensures that we calculate the well and connection level
per-phase steady-state productivity index (PI) at the end of a
completed time step (triggered from endTimeStep()).
We add a new data member,
BlackoilWellModel<>::prod_index_calc_
which holds one WellProdIndexCalculator for each of the process'
local wells and a new interface member function
WellInterface::updateProductivityIndex
which uses a per-well PI calculator to actually compute the PI
values and store those in the WellState. Implement this member
function for both StandardWell and MultisegmentWell. Were it not
for 'getMobility' existing only in the derived classes, the two
equal implementations could be merged and moved to the interface.
We also add a new data member to the WellStateFullyImplicitBlackoil
to hold the connection-level PI values. Finally, remove the
conditional PI calculation from StandardWell's well equation
assembly routine.
2020-11-24 21:53:58 +01:00
Cintia Goncalves Machado
f0ba56652e
restructure if
2020-11-24 09:05:18 +01:00
Cintia Goncalves Machado
82c8201f00
fix well Control Single-Phase
2020-11-23 18:40:37 +01:00
Atgeirr Flø Rasmussen
e15db6a892
Merge pull request #2934 from blattms/stdwell-assign-totalrate-once
...
StandardWell only assing primary_variables_[WQTotal] once.
2020-11-20 07:54:43 +01:00
Markus Blatt
fb5f2eb9d0
StandardWell only assing primary_variables_[WQTotal] once.
...
There seems to be no need to assign the same value consecutively
as often as there are phases.
2020-11-19 19:50:01 +01:00
Atgeirr Flø Rasmussen
8a5203814b
Make consistent use of const for alq-related state.
...
A const well state was passed to functions that were modifying it by
calling setALQ(). Now the setALQ() method is made non-const, mutable
references to the well state are passed where sensible. The getALQ()
method uses map::at() instead of map::operator[] and no longer modifies
current_alq_. With this, it is now easy to see which methods modify the
well state and which don't. The alq-related members in the
WellStateFullyImplicitBlackoil class are no longer 'mutable'-qualified.
2020-11-19 10:09:52 +01:00
Ove Sævareid
63c97d54d0
Rebase issue.
2020-11-17 14:50:57 +01:00
Ove Sævareid
98b2ed5bd4
Cleaning up various issues.
2020-11-17 12:39:21 +01:00
Ove Sævareid
0f7e66e151
Alternative solvent extension for the black oil model.
2020-11-17 12:33:19 +01:00
Atgeirr Flø Rasmussen
cb928f90f0
Refactor per-perforation code into separate function.
...
Also make some methods const.
2020-11-16 11:19:03 +01:00
Tor Harald Sandve
73b384f8cd
Merge pull request #2902 from totto82/fixWlift
...
Fixes to the wlift implementation
2020-11-06 15:58:24 +01:00
Paul Egberts
7ef854f32f
Two fixes
...
1) Corrected phaseIsActive with PhaseIdx argument instead of CompIdx argument in "subtraction of dissolved gas from oil phase and vapporized oil from gas phase".
2) Fix for well accumulation calculation in case oil is absent.
2020-11-05 17:09:25 +01:00
Tor Harald Sandve
bd370c6470
fixes to the wlift implementation
2020-11-05 13:05:01 +01:00
Tor Harald Sandve
990ce70287
Merge pull request #2849 from goncalvesmachadoc/aquifer
...
Prepare Well Implemantion For Water and Water-Gas System
2020-10-22 14:08:12 +02:00
Atgeirr Flø Rasmussen
7e87ea3200
Refactor to put updateWellStateRates() in base class.
2020-10-15 14:15:05 +02:00
Atgeirr Flø Rasmussen
52c695937b
Implement extended network model.
2020-10-15 10:54:03 +02:00
Cintia Goncalves Machado
a697e7faf6
fix return position
2020-10-14 14:55:38 +02:00
Cintia Goncalves Machado
920f071f5f
fix fractions
2020-10-12 16:46:39 +02:00
Cintia Goncalves Machado
23e7886297
prepareWellImplForLackOfOil
2020-10-10 16:05:12 +02:00
Håkon Hægland
52f6f819ee
Simplified using fmt::format()
...
Simplified debug output formatting by using fmt::format(). Also switched
off glift debug output by default.
2020-10-01 18:40:05 +02:00
Håkon Hægland
d707967f58
Implements support for gas lift optimization.
...
Implements gas lift optimization for a single StandardWell. Support for
gas lift optimization for multi-segment wells, groups of wells and
networks is not implemented yet.
The keywords LIFTOPT, WLIFTOPT, and VFPPROD are used to supply parameters for
the optimization. Also adds support for summary output of liftgas
injection rate via keyword WGLIR.
2020-09-30 10:04:39 +02:00
Kai Bao
a38dc27bcb
refactoring for iterateWellEquations
2020-08-11 09:10:19 +02:00
Kai Bao
11807747cb
renaming solveWellEqUntilConverged to be iterateWellEquations
2020-08-11 09:10:19 +02:00
Tor Harald Sandve
fc45b1bd47
Add inner iterations for standard wells also
2020-08-11 09:10:19 +02:00
Markus Blatt
faaee51d09
Merge pull request #2682 from Tongdongq/openclSolver
...
Added openclSolver
2020-07-10 13:38:32 +02:00
Tor Harald Sandve
88ee892fdf
pass the saltConcentration to the waterPVT
2020-07-02 13:44:01 +02:00
Tor Harald Sandve
6a7e816368
Add brine to output
2020-06-30 14:15:54 +02:00
T.D. (Tongdong) Qiu
8913e1d057
Make sure OpenCL can be used without CUDA
2020-06-25 18:44:49 +02:00
Atgeirr Flø Rasmussen
c59f4f7118
Make ghost-last feature available in PreconditionerFactory.
2020-06-25 10:56:11 +02:00
Tor Harald Sandve
39e23c4d41
store polymer rates for output
2020-06-23 12:01:34 +02:00
Tor Harald Sandve
8a5c9e82df
add run time parameters for msw convergence tuning. Default values are set to minimize convergence failures for model2 based tests. These parameters are also tested on bigger models with good results
2020-05-22 20:52:14 +02:00
Tor Harald Sandve
cf702a5384
use relaxed tolerance for MSW when solution stagnates
2020-05-22 20:52:14 +02:00
Tor Harald Sandve
904353367d
compute initial volume fractions on the well copies also
2020-05-08 19:29:20 +02:00
Atgeirr Flø Rasmussen
e7e4cf6f20
Silence warnings and fix whitespace.
2020-04-08 10:41:20 +02:00
Atgeirr Flø Rasmussen
3a5a8c23df
Use generic control equation implementation.
2020-04-02 13:54:58 +02:00
Atgeirr Flø Rasmussen
766d02cacc
Unify group control equation codes.
2020-04-02 13:54:58 +02:00
Tor Harald Sandve
92ee56c3b3
scale guiderate by current well rate
2020-04-02 13:54:47 +02:00
Atgeirr Flø Rasmussen
27f62399f5
Handle guide-rate based well constraints from groups.
2020-04-02 10:41:57 +02:00
T.D. (Tongdong) Qiu
ab2d9a8c76
Changed int idx to indicate which matrix is added to WellContributions to an enum
2020-03-20 10:04:58 +01:00
T.D. (Tongdong) Qiu
8223cd1db8
Simplified filling of WellContributions object. Added comments
2020-03-19 11:15:49 +01:00
T.D. (Tongdong) Qiu
fdcf46792a
BdaBridge and WellContributions are only included and compiled when CUDA is found
2020-03-18 19:03:14 +01:00
T.D. (Tongdong) Qiu
581cbc6a3e
cusparseSolver can now apply wellcontributions separately, so --matrix-add-wellcontributions=true is not required anymore
2020-03-13 14:21:59 +01:00
Joakim Hove
9268bcb2ac
InjectorType enum is moved out from Well class
2020-03-03 09:08:02 +01:00
Arne Morten Kvarving
bea2459c65
replace boost::optional with std::optional
2020-02-19 11:20:16 +01:00
Tor Harald Sandve
2d2ec82640
fix MPI
2020-02-11 09:33:58 +01:00
Tor Harald Sandve
e39e327451
fix 2p
2020-02-11 09:33:58 +01:00
Tor Harald Sandve
469ffa2cbe
allow for multiple group injection phases
2020-02-11 09:30:19 +01:00
Trine S. Mykkeltvedt
99e7785fb5
renamed saltwater-->brine and removed keywords from missingFeatures
2020-01-09 14:14:38 +01:00
Trine S. Mykkeltvedt
5749615bd8
addd simple salt/brine implementation
2020-01-09 14:14:38 +01:00
Tor Harald Sandve
7a0ff52bbc
set bhp control explicilty for well potential calculations
2019-12-20 13:18:10 +01:00
Arne Morten Kvarving
c14a991b25
Merge pull request #2235 from totto82/wellEffFix
...
Fix bug in the well efficiency factor
2019-12-20 08:31:16 +01:00
Tor Harald Sandve
29c2a3da3f
only count group under group control when accumulating the group potentials
2019-12-18 11:40:06 +01:00
Tor Harald Sandve
6aafdba80d
fix well efficency factor
2019-12-18 10:29:04 +01:00
Tor Harald Sandve
4d8d9a7a05
Fix vrep
2019-12-06 09:04:50 +01:00
Tor Harald Sandve
876f5587e5
Add GCONSALE and fix conversion from UDA
2019-12-05 13:08:17 +01:00
Tor Harald Sandve
615e4422b9
BUGFIX REIN
2019-12-05 13:08:17 +01:00
Tor Harald Sandve
c930ac9858
fix spelling
2019-12-04 11:39:26 +01:00
Tor Harald Sandve
9e64896054
fix issue when GRUP is used in WCONPROD and WCONINJE and NONE group control
...
Use a bhp control when a well is controlled by a unvalied group control
2019-12-04 11:37:00 +01:00
Tor Harald Sandve
cab2f4b41f
use common WellGroupEvent map
2019-11-27 13:12:53 +01:00
Atgeirr Flø Rasmussen
87188f5862
Avoid using the Wells struct.
2019-11-25 08:36:18 +01:00