Commit Graph

314 Commits

Author SHA1 Message Date
Stein Krogstad
44e17fa615 cleanup thp-solve 2023-12-07 13:09:00 +01:00
Stein Krogstad
b287981e5e testing 2023-12-07 13:09:00 +01:00
Stein Krogstad
7aa50f149f updates 2023-12-07 13:09:00 +01:00
Stein Krogstad
94c0b49cf7 revert changes 2023-12-07 13:09:00 +01:00
Tor Harald Sandve
e1aa233026 Adapt wdfac to wpimult 2023-11-23 15:22:51 +01:00
Stein Krogstad
b08bc029e6 Fix shut-in logic for wells with shut-intructions 2023-11-22 16:53:48 +01:00
Tor Harald Sandve
be06132702 remove trans multiplier from dake 2023-11-22 13:59:06 +01:00
Tor Harald Sandve
4879896789 adapt to refactoring of getDFactor 2023-11-22 09:17:28 +01:00
Tor Harald Sandve
ecd9930225 dont scale d factor from wdfaccor 2023-11-21 17:51:36 +01:00
Markus Blatt
de50fe5702 Fixed typo: control model -> control mode. 2023-11-20 08:29:24 +01:00
Tor Harald Sandve
82cb3c3b53 Fix connection and well dfactor
The well dfactor is scaled by the well index

If postive the connection dfactor is threated as a well factor
and also scaled. If negative the connection dfactor is not scaled
2023-11-16 14:50:59 +01:00
Tor Harald Sandve
0f12977b17 only use d factor for gas wells 2023-11-14 12:45:25 +01:00
Bård Skaflestad
bf72698310
Merge pull request #4832 from totto82/wdaccor_refactor
Implement Forchheimer term in wellIndex
2023-10-31 17:46:49 +01:00
Kai Bao
beda7a0b35 checking LIFTOPT active before trying to optimizing alq
in gliftBeginTimeStepWellTestIterateWellEquations.

otherwise, if the increment is 0 (inactive), the function
gliftBeginTimeStepWellTestIterateWellEquations
might return undesired results or enter endless loop.
2023-10-25 23:00:54 +02:00
Kai Bao
2b97c3fe1d checking LIFTOPT active before gliftBeginTimeStepWellTestUpdateALQ
to avoid meaningless message output related to GLIFT and WTEST
2023-10-25 21:45:19 +02:00
Tor Harald Sandve
90e791877c Implement Forchheimer term in wellIndex
Add output of CDFAC

Add effect of compaction on CTFAC
2023-10-23 08:55:21 +02:00
Kai Bao
a525f0865f removing white spaces in the wells folder 2023-10-09 11:14:48 +02:00
Kai Bao
b1974bbe45 recovering the SHUT during iteration beahvoir in prepareWellBeforeAssembling
when local_well_solver_control_switching_ is off
and incoporating commenst regarding resetting wellStatus_ in StandardWell within
the function iterateWellEqWithSwitching.
2023-09-29 10:55:19 +02:00
Kai Bao
e38e557bbc cleaning up to preapre for pull request 2023-09-29 10:55:19 +02:00
Stein Krogstad
035d216641 adding function iterateWellEqWithSwitching
when we do the local solve for well equations, control/status will be
updated during the iteration process, such that the converged well gets
correct control/status regarding to the current reservoir state.

various change in the other parts of the code were made to make the
function work as intended.
2023-09-29 10:51:04 +02:00
Bård Skaflestad
bb04054d2c
Merge pull request #4842 from totto82/wellPressGW
use gas pressure for gas-water system in the well model
2023-09-07 12:47:05 +02:00
Kai Bao
529af98ce9 setting uninitialized bhp to be bhp_limit in updateWellStateWithTarget
to avoid uninitialized bhp 0. to be used.
2023-09-07 08:50:37 +02:00
Tor Harald Sandve
8796fa1ccc use gas pressure for gas-water system in the well model 2023-09-06 13:46:18 +02:00
Arne Morten Kvarving
92fa9577da consistently use std::size_t 2023-08-15 09:32:10 +02:00
Arne Morten Kvarving
60b92d02eb WellFilterCake: make stateful 2023-07-07 16:08:42 +02:00
Kai Bao
1981a3bf4d switching to scale the mobility instead of the well index
mostly to make the calculation of productivity easier.
2023-07-06 15:58:30 +02:00
Kai Bao
eb08e2e863 cleaning up implementation related to filter cake 2023-07-05 13:25:03 +02:00
Kai Bao
7e5f1a1642 slightly different way to calculate the skin factor
for the radial model of the filter cake.

not tested yet.
2023-07-05 13:25:03 +02:00
Kai Bao
4cb3574e0f incoporate keyword WINJCLN
still in draft state.
2023-07-05 13:25:03 +02:00
Kai Bao
43196800b6 a draft version for for RADIAL model for WINJDAM 2023-07-05 13:25:03 +02:00
Kai Bao
aa5062683d a draft version for the linear geomery WINJDAM 2023-07-05 13:25:03 +02:00
Kai Bao
5e4cb8aeed WIP in using the filter cake to generate the skin factor 2023-07-05 13:25:03 +02:00
Kai Bao
49774186ab calculating the accumulative water injection volume
for each connection
2023-07-05 13:25:03 +02:00
Arne Morten Kvarving
7b33cc6d62 move computeConnLevel(Inj|Prod)Ind to WellInterface
now code is shared between STW and MSW
2023-06-22 09:58:58 +02:00
Arne Morten Kvarving
01c4aa1927 move updateWellStateWithTHPTargetProd to WellInterface
to share implementation between STW and MSW
2023-06-22 09:10:38 +02:00
Kai Bao
5f344eef26 avoid dividing by zero in updateWellStateRates() 2023-06-20 23:14:50 +02:00
Arne Morten Kvarving
2630522d7f avoid unused variable warning with NDEBUG 2023-05-24 12:39:24 +02:00
Arne Morten Kvarving
0406a033a2 introduce getMobility in WellInterface
we now share implementation between StandardWell and MultisegmentWell
2023-05-15 21:39:59 +02:00
Kai Bao
1542f2c087 refactor the network update
moving the well controls and network update out of assembleImpl to avoid
call assmebleImpl in a recursive manner
2023-04-20 14:59:50 +02:00
Håkon Hægland
e241fccbca Only iterate wells activated for gaslift 2023-04-13 11:08:30 +02:00
Håkon Hægland
4ba5e3efad Iterate ALQ when testing gaslift well
When testing a gaslift well under THP control, if the
well does not converge with maximum alq, try to reduce alq
in increments until well equations converge.
2023-04-13 10:40:29 +02:00
Kai Bao
9304542dbe combining wellIsStopped and wellUnderZeroRateTaget
for better readability.
2023-03-29 14:40:50 +02:00
Kai Bao
b6eecf5c55 not updating the THP for zero rate controlled wells 2023-03-29 13:48:34 +02:00
Kai Bao
f4e0a996b9 wells under zero injection target are also treated as stopped well
when formulating the well control equations
2023-03-29 13:48:34 +02:00
Bård Skaflestad
9524348401
Merge pull request #4549 from totto82/resv_undersat
fix RESV for undersaturated wells
2023-03-29 10:35:33 +02:00
Tor Harald Sandve
42527ac829 fix RESV for undersaturated wells 2023-03-27 16:03:40 +02:00
Kai Bao
2c5a4398c9 make sure zero production rates are obtained for the following wells
1. stopped production wells
2. production wells under zero rate control

We guarantee the objective through enforce zero values for the WQTotal
primary variable during the initialization and update process during the
Newton solution.
2023-03-27 13:24:08 +02:00
hnil
aa40d2f0f3 -- prepared for possibliy of not using cached intentensive quantities 2023-03-24 19:57:31 +01:00
Kai Bao
57bf959efd update well state when switching to THP control for producers
hopefully, it begins at a reasonably good initial point. When the Newton
iteration begins with certian solution region, the nonlinear solution
might fail.
2023-02-07 14:50:07 +01:00
Markus Blatt
d2f55c59fc
Merge pull request #4359 from totto82/fixGPMAINT2
Fix GPMAINT for groups without control
2023-01-23 14:12:00 +01:00
Arne Morten Kvarving
7b2b18045e adjust to upstream enum changes 2023-01-18 11:24:25 +01:00
Arne Morten Kvarving
c0e9193e50 WellInterface: move code using WellMICPProperties to compile unit 2023-01-13 14:11:46 +01:00
Arne Morten Kvarving
f74f2ded8e add missing WellMICPProperties.hpp includes 2023-01-13 14:01:56 +01:00
Arne Morten Kvarving
d011bb29ae StandardWell: move code using WellPolymerProperties to compile unit 2023-01-13 13:02:37 +01:00
Arne Morten Kvarving
f860490c9f WellInterface: move code using WellPolymerProperties to compile unit 2023-01-13 13:02:37 +01:00
Arne Morten Kvarving
97f76412ae add missing WellPolymerProperties.hpp includes 2023-01-13 13:02:37 +01:00
Arne Morten Kvarving
71bf868ddb WellInterface: move code using WellBrineProperties to compile unit 2023-01-13 11:14:18 +01:00
Arne Morten Kvarving
131f52773f add missing WellBrineProperties.hpp includes 2023-01-13 11:14:18 +01:00
Arne Morten Kvarving
a29d5f81b6 WellInterface: move code using WellFoamProperties to compile unit 2023-01-13 10:18:26 +01:00
Arne Morten Kvarving
a0f85c8a93 add missing WellFoamProperties.hpp includes 2023-01-13 10:18:26 +01:00
Tor Harald Sandve
ceb8d996aa Fix GPMAINT for groups without control
If GPMAINT is used the group does not need a valid control object
2023-01-10 15:59:21 +01:00
Arne Morten Kvarving
a020a993b5 WellInterface: use {fmt} to format error messages 2022-12-23 09:39:29 +01:00
Arne Morten Kvarving
f17a90170d use exception classes from opm-common 2022-12-13 12:56:13 +01:00
Håkon Hægland
bc566e3981 Also check LRAT group target in stage2
Also account for a group LRAT limit when removing surplus ALQ in gaslift
optimization stage 2.
2022-11-21 08:58:49 +01:00
Arne Morten Kvarving
26d9f18687 changed: move isPressureControlled to WellInterfaceGeneric
no typetag dependence. also no need for this to be virtual
2022-11-04 14:24:19 +01:00
Arne Morten Kvarving
796aa51e79 changed: move calculateBhpFromThp to WellBhpThpCalculator 2022-10-31 13:16:51 +01:00
Arne Morten Kvarving
b9ee7eae6f use if constexpr 2022-10-26 11:23:55 +02:00
Tor Harald Sandve
7b90d35f21 fixup from PR comments 2022-10-18 12:58:07 +02:00
Tor Harald Sandve
e1d36f32b8 add missing wellGroupTargetsViolated in ++ operator 2022-10-18 10:55:17 +02:00
Tor Harald Sandve
756c9bad21 set ws.thp = thp_limit for wells under THP control 2022-10-18 10:55:17 +02:00
Tor Harald Sandve
d25dc4e795 check controls in getWellConvergence 2022-10-18 10:55:17 +02:00
Bård Skaflestad
36ca7d11e9
Merge pull request #4149 from totto82/improve_conv_thp
Improve convergence for newly opened wells with thp control
2022-10-18 10:26:55 +02:00
Tor Harald Sandve
74eb0d048f Improve convergence for newly opened wells with thp control 2022-10-17 15:32:27 +02:00
Tor Harald Sandve
2ca3c25f4f set alq before trying to solve the equation during well testing 2022-10-10 08:14:42 +02:00
Kai Bao
d3d8e11e00 limiting the smallest injection rate to 1.e-7
for the injection phase.
2022-09-20 11:40:34 +02:00
Tor Harald Sandve
0f969dd7a5 check ipr for wells prevented to change to thp 2022-08-19 10:48:56 +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
9364d4c54b Add option for wvfpexp item 2 plus minor fixes 2022-08-19 10:33:19 +02:00
Tor Harald Sandve
b1b23a57de Add option for explicit vfp lookup for problmatic wells 2022-08-19 10:33:19 +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
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
Tor Harald Sandve
1f876d1800 implement rsrv item 10 WCONINJE
MSW not supported yet
2022-06-08 13:55:29 +02:00
Tor Harald Sandve
4b5a53eaeb
Merge pull request #3887 from totto82/init_alt_eps
use alternative init for wells with all rates less than eps
2022-04-26 10:46:19 +02:00
Tor Harald Sandve
bd145913e8 use alternative init for wells with all rates less than eps 2022-04-26 09:32:18 +02:00
Atgeirr Flø Rasmussen
75ccd88f4f
Merge pull request #3888 from totto82/stop_tgr2
fix trivial group target
2022-04-26 08:34:06 +02:00
Tor Harald Sandve
d00a2e2341 fix trivial group target 2022-04-25 08:10:19 +02:00
Tor Harald Sandve
92175cf094 Fix STOP in combination with inoperable/unsolvable 2022-04-22 09:15:09 +02:00
Håkon Hægland
11907495c1 Well testing of gas lift wells
Assign a maximum ALQ value to each GLIFT producer when doing well testing
in beginTimeStep(). This allows the well to be considered open. Then,
later in the timestep, when assemble() is called, the full gas lift
optimization procedure can adjust the ALQ to its correct value.

It is also observed that in some cases when gas lift is switched off by
setting ALQ to zero, and later in the schedule is switched back on again,
it might not be possible to determine bhp from thp for low small ALQ values.
Instead of aborting the gas lift optimization, we should try increasing
ALQ until we get convergence or until the maximum ALQ for the well is
reached.
2022-04-20 10:51:34 +02:00
Markus Blatt
ff410d268a
Merge pull request #3863 from totto82/unsolvable_fix
fix to --shut-unsolvable-wells=true option
2022-04-11 07:33:46 +02:00
Tor Harald Sandve
6f29bf715c
Merge pull request #3778 from GitPaean/always_inner
[testing] always using inner iterations for testing purpose.
2022-04-08 15:44:33 +02:00
Tor Harald Sandve
e2e0ec9dd9 fix to --shut-unsolvable-wells=true option 2022-04-05 14:42:27 +02:00
Bård Skaflestad
0cd2ce6589
Merge pull request #3824 from totto82/notswitchthp
Avoid switching to thp control if production is decreasing or injection is increasing
2022-03-25 14:34:30 +01:00
Tor Harald Sandve
f4d81e33f1 Avoid switching to thp control if it results in higher rates 2022-03-25 09:12:15 +01:00
Tor Harald Sandve
32dfdc6198 improve initialization msw new wells 2022-03-24 09:53:46 +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
d8934ea7a9 Set well control to thp or bhp in well testing 2022-02-17 09:01:32 +01:00
Kai Bao
086b8aab7d only multisegment wells will alway inner iteration 2022-01-21 10:43:36 +01:00
Kai Bao
0000df18a4 always using inner iterations for testing purpose. 2022-01-21 10:43:36 +01:00
Joakim Hove
6b92443cb4 Downstream filesystem reorganisation in opm-common 2022-01-02 14:33:34 +01:00