Commit Graph

378 Commits

Author SHA1 Message Date
Tor Harald Sandve
f36ac3eeed
Merge pull request #3837 from totto82/wvfpexp
Add option for explicit vfp lookup for problematic wells
2022-09-09 10:00:02 +02:00
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
Tor Harald Sandve
cf1abb086f remove msw(ms) from regulariztion parameter 2022-06-29 15:39:51 +02:00
Arne Morten Kvarving
da57e15271 fixed: fix build with dune 2.6 2022-06-20 14:16:43 +02:00
Atgeirr Flø Rasmussen
ffb09ee53e
Merge pull request #3937 from atgeirr/pressure-bhp-cpr
Pressure bhp cpr
2022-06-16 17:15:49 +02:00
Tor Harald Sandve
60d0fe0f87
Merge pull request #3879 from totto82/rsrvinj2
WIP implement rsrv item 10 WCONINJE
2022-06-16 08:30:31 +02:00
hnil
8f4cf8a952 removed compiler warnings 2022-06-08 17:03:27 +02:00
hnil
6c407506a9 cleaning code 2022-06-08 17:03:27 +02:00
hnil
5a917dd11e changed diagonal elements for cprw on multiscale wells 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
Tor Harald Sandve
1f876d1800 implement rsrv item 10 WCONINJE
MSW not supported yet
2022-06-08 13:55:29 +02:00
Tor Harald Sandve
46c8aa3306 fix hydrostatic correction for branched wells in IPR 2022-06-08 12:29:05 +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
Bård Skaflestad
be4221ea92
Merge pull request #3869 from plgbrts/vapoilwat
adding three-phase simulator including water evaporation and salt precipitation
2022-05-25 15:33:53 +02:00
Kai Bao
15bf35ffe0 removing unused well_state0 in iterateWellEqWithControl
for MSW.
2022-05-18 10:18:35 +02:00
Paul Egberts
a255613452
Merge branch 'master' into vapoilwat 2022-05-11 11:55:54 +02:00
Paul Egberts
6fe10a3e23 add throw for case msw is true and vapwat is true 2022-05-11 11:50:54 +02:00
Tor Harald Sandve
dfe0982286 reset regularize_ before starting the inner iterations 2022-05-03 08:25:26 +02:00
Kai Bao
7145ec32ee renaming function updateWellState
to updatePrimaryVariablesNewton

this should be a fallout during the well code refactoring
2022-04-29 12:55:54 +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
Tor Harald Sandve
fd6cf1ccbd regularize MSW equation when iter > strict_inner_iter 2022-04-21 08:44:50 +02:00
Tor Harald Sandve
edf8786a58 avoid throw for nan residuals instead return well as unconverged 2022-04-11 09:52:25 +02:00
Paul Egberts
ab3be6dce4 adjustments to account for vaporized water 2022-04-08 22:36:39 +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
32dfdc6198 improve initialization msw new wells 2022-03-24 09:53:46 +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
Joakim Hove
6b92443cb4 Downstream filesystem reorganisation in opm-common 2022-01-02 14:33:34 +01: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
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
cb9254636b rename and cleanup 2021-09-30 09:01:07 +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
49dfe1006f cleanup 2021-09-13 15:11:38 +02:00
Tor Harald Sandve
c8a59946e3 avoid iter in computeBhpFromThp 2021-09-13 14:01:56 +02:00
Tor Harald Sandve
972a832d65 make scalar version of computePerfRate 2021-09-13 09:36:16 +02:00
Arne Morten Kvarving
ce4028b2f0 drop using statement for getAllowCrossFlow
rather qualify member function calls with this->
2021-09-09 11:53:48 +02:00
Arne Morten Kvarving
7609f7e1f7 drop using statement for ebosCompIdxToFlowCompIdx
rather qualify member function calls with this->
2021-09-09 11:53:35 +02:00
Arne Morten Kvarving
36cec80269 drop using statement for flowPhaseToEbosPhaseIdx
rather qualify member function calls with this->
2021-09-09 11:53:35 +02:00
Arne Morten Kvarving
d2fb4f3266 drop using statement for flowPhaseToEbosCompIdx
rather qualify member function calls with this->
2021-09-09 11:53:35 +02:00
Arne Morten Kvarving
fc882fbc29 drop using statement for name
rather qualify member function calls with this->
2021-09-09 11:53:35 +02:00
Arne Morten Kvarving
ddf621acdd drop using statement for phaseUsage
rather qualify member function calls with this->
2021-09-09 11:53:35 +02:00
Arne Morten Kvarving
824232b7c9 drop using statement for ipr_b_
rather qualify member variable with this->
2021-09-09 11:53:35 +02:00
Arne Morten Kvarving
115cfe26df drop using statement for ipr_a_
rather qualify member variable with this->
2021-09-09 11:53:35 +02:00
Arne Morten Kvarving
14273b8c2d drop using statement for connectionRates_
rather qualify member variable with this->
2021-09-09 11:53:35 +02:00
Arne Morten Kvarving
15b4ea672f drop using statement for num_components_
rather qualify member variable with this->
2021-09-09 11:53:35 +02:00
Arne Morten Kvarving
9970fb4ab4 drop using statement for perf_depth_
rather qualify member variable with this->
2021-09-09 11:53:35 +02:00
Arne Morten Kvarving
78a4aa3ede drop using statement for gravity_
rather qualify member variable with this->
2021-09-09 11:53:34 +02:00
Arne Morten Kvarving
5c3e13abd5 drop using statement for well_efficiency_factor_
rather qualify member variable with this->
2021-09-09 11:53:34 +02:00
Arne Morten Kvarving
4a0aa788ee drop using statement for saturation_table_number_
rather qualify member variable with this->
2021-09-09 11:53:34 +02:00
Arne Morten Kvarving
b34808895a drop using statement for well_index_
rather qualify member variable with this->
2021-09-09 11:53:34 +02:00
Arne Morten Kvarving
bfb7d2a466 drop using statement for param_
rather qualify member variable with this->
2021-09-09 11:53:34 +02:00
Arne Morten Kvarving
6f4f41f080 drop using statement for well_cells_
rather qualify member variable with this->
2021-09-09 11:53:34 +02:00
Arne Morten Kvarving
d10fa061c3 drop using statement for number_of_phases_
rather qualify member variable with this->
2021-09-09 11:53:34 +02:00
Arne Morten Kvarving
72b14cf07e drop using statement for number_of_perforations_
rather qualify member variable with this->
2021-09-09 11:53:34 +02:00
Arne Morten Kvarving
aa389ff4f8 drop using statement for ref_depth_
rather qualify member variable with this->
2021-09-09 11:53:34 +02:00
Arne Morten Kvarving
0f6e07676e drop using statement for well_ecl_
rather qualify member variable with this->
2021-09-09 11:53:34 +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
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
2f504536f4 Add well potentials 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
5cb81d36c9 re-compute potentials for pressure controlled wells with trivial rates 2021-08-09 13:41:50 +02:00
Tor Harald Sandve
5368343512 handle GRUP in wellState from target 2021-06-23 14:46:35 +02:00
Joakim Hove
3c3a4afcfc Use PerfData for connection productivity index 2021-06-10 14:32:45 +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
68fc2b0bc6 add MultisegmentWellEval 2021-06-09 15:17:36 +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
c623fba017 add MultisegmentWellGeneric
avoid rebuilding this for all simulators when code
is only dependent on Scalar. instanced for double
2021-06-08 10:43:10 +02:00
Arne Morten Kvarving
4c09b5dde3 add WellInterfaceEval 2021-06-07 08:26:43 +02:00
Joakim Hove
e83d4d0dbd
Merge pull request #3336 from joakim-hove/wellpotential_wellcontainer
Manage well potentials with WellContainer<>
2021-06-06 08:33:26 +02:00
Arne Morten Kvarving
62bee530cb MSW: drop unused method 2021-06-05 22:58:57 +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
1a6737aff3 Use well index for perforation rates 2021-06-03 13:29:45 +02:00
Joakim Hove
ac12c8b3a4 Use SegmentState for rates 2021-06-03 10:46:26 +02:00
Joakim Hove
357cb11667 Use SegmentState::scale_pressure() 2021-06-03 10:46:04 +02:00
Joakim Hove
eac69061c2 Use SegmentState when copying pressure 2021-06-03 10:46:04 +02:00
Joakim Hove
6a859c0664 Segmentstate for accelarition pressure drop 2021-06-03 10:46:04 +02:00
Joakim Hove
33f18279d7 Use segmentstate for hydrostatic pressure drop 2021-06-03 10:46:04 +02:00
Joakim Hove
9801469488 Use segmentstate for friction pressure 2021-06-03 10:46:04 +02:00
Joakim Hove
2d67d085ef Remove segment pressure drop as separate variable 2021-05-31 09:10:33 +02:00
Joakim Hove
953de0c6b9 Remove unused variable 2021-05-28 11:14:19 +02:00
Joakim Hove
a1b45b06e4 Use well index for segment acceleration pressure loss 2021-05-28 07:32:30 +02:00
Joakim Hove
960de96d75 Use well index for segment hydrostatic pressure drop 2021-05-28 07:32:30 +02:00
Joakim Hove
ee1a1c6afc Use well index for segment friction pressure drop 2021-05-28 07:32:29 +02:00
Joakim Hove
92e31b4ee3 Use well index for segment pressure drop 2021-05-28 07:32:29 +02:00
Bård Skaflestad
57cf8c2c98
Merge pull request #3311 from joakim-hove/segpress-fix
Bug in wellstate handling for pressure drop in MSW wells?
2021-05-27 20:11:00 +02:00
Tor Harald Sandve
e1ace15602
Merge pull request #3302 from totto82/useRatesAsPotforPress
use rates for potentials for pressure controlled controled wells
2021-05-27 16:33:22 +02:00
Joakim Hove
abadb7aba5 Fix access to segment pressure drop vectors 2021-05-27 11:40:29 +02:00
Joakim Hove
5ac53f8106 Use well index for segment rates 2021-05-27 10:45:33 +02:00
Joakim Hove
34ef516472 Use well index for segment pressure 2021-05-27 10:45:33 +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
b34c161805 Use WellContainer<double> for RS / RV 2021-05-24 10:01:00 +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
db731ac1ad Use well local indices when iterating over segments 2021-05-20 08:17:19 +02:00
Joakim Hove
b0458cee33
Merge pull request #3268 from joakim-hove/wellstate-iget
Wellstate iget
2021-05-19 14:29:26 +02:00
Tor Harald Sandve
dacd782639
Merge pull request #3270 from akva2/well_small_optims
Some small code eliminiations in well code
2021-05-19 12:35:57 +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
Atgeirr Flø Rasmussen
32d0854f14 Fix incorrect indices for 1 and 2-phase cases with MSW. 2021-05-18 15:32:15 +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
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
Arne Morten Kvarving
a4c0af09d9 fixed: do not use Opm:: prefix when inside namespace Opm 2021-05-05 11:59:18 +02:00
Bård Skaflestad
f273e06c66
Merge pull request #3198 from akva2/janitoring
Remove some unused members and quell some warnings
2021-04-30 15:08:48 +02:00
Arne Morten Kvarving
3c77b97cae MultisegmentWellContribution: remove unused members 2021-04-30 13:09:25 +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
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
Tor Harald Sandve
c23094b299 make another throw tread safe 2021-02-24 15:54:02 +01:00
Kai Bao
f00b4d9aa8
Merge pull request #3059 from alfbr/fix-error
Do not report confusing error
2021-02-23 14:21:59 +01:00
Alf Birger Rustad
034dab84f9 Messages sent to debug file 2021-02-23 12:17:51 +01:00
Joakim Hove
fda1d65494 Pass table argument to VFP getFLo() 2021-02-15 22:21:56 +01:00
Alf Birger Rustad
40800da0a8 Do not report confusing error 2021-02-11 23:48:30 +01:00
Kai Bao
e77f8b2f7d
Merge pull request #2997 from totto82/avoidDoubleCopy
dont copy the well model in computeWellPotentials
2021-01-28 11:45:41 +01:00
Joakim Hove
e4789d4eb7 Use std::reference_wrapper for VFP tables 2021-01-26 07:56:59 +01:00
Atgeirr Flø Rasmussen
18a8d78f02
Merge pull request #3008 from GitPaean/cleaningup_after_aicd_pr
refactoring the pressure assemble equations for ICD
2021-01-22 08:26:16 +01:00
Tor Harald Sandve
91ab0f4d93 fix phase index for WELLPI for MSW 2021-01-21 11:58:24 +01:00
Kai Bao
00ca6dc492 putting all the pressure assmeble function to one function
assemblePressureEq for MSW
2021-01-08 16:46:32 +01:00
Kai Bao
2dc63b7a57 putting the three ICD assembleEq function to be one
to reduce the code duplication.
2021-01-08 15:09:27 +01:00
Tor Harald Sandve
967f99500c dont copy the well model in computeWellPotentials 2020-12-22 09:25:56 +01:00
Tor Harald Sandve
273538e1f4 some cleanup 2020-12-16 12:58:17 +01:00
Tor Harald Sandve
30ce605713 use the old initSegmentRates when opening up wells 2020-12-15 15:15:59 +01:00
Tor Harald Sandve
d027205c34 Initial well rates with the well potentials and scale the segment rates
Initialize the well rates with well potentials when computing rates from bhp or bhp(thp)
The bhp was already initialized.

Scale the segment rates and pressure to adapt to changes in well rate and bhp

Improves convergence of the well potential calculations
2020-12-15 08:39:22 +01:00
Tor Harald Sandve
5fb73c9714 Only check well operability for wells under THP and BHP limits 2020-12-08 12:38:25 +01:00
Tor Harald Sandve
8ca9cc241a remove unused warnings 2020-12-08 12:38:25 +01:00
Tor Harald Sandve
bc04fb68ef check the sum not individual phases for operability 2020-12-08 12:38:25 +01:00
Tor Harald Sandve
90050372ae keep msw wells open even if bhp from thp fails 2020-12-08 12:38:25 +01:00
Tor Harald Sandve
a7664f9ea6 Add check for operability of MSW 2020-12-08 12:38:25 +01:00
Atgeirr Flø Rasmussen
83a6c2abae
Merge pull request #2947 from blattms/fix-parallel-well-red
Prepares for apply distributed standard wells.
2020-12-04 20:32:30 +01:00
Kai Bao
61bebb2ec5 addressing reviewing comments for OPM/opm-simulators#2951 2020-12-03 15:23:14 +01:00