Commit Graph

2005 Commits

Author SHA1 Message Date
Arne Morten Kvarving
412e561cd8 move updateWellStateFromPrimaryVariablesPolyMW to StandardWellPrimaryVariables 2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
f964169914 move updatePrimaryVariablesPolyMW to StandardWellPrimaryVariables 2022-11-22 13:11:17 +01:00
Arne Morten Kvarving
15d49e745e added: StandardWellPrimaryVariables
this is a container class for the primary variables in
standard well
2022-11-22 13:11:17 +01:00
Bård Skaflestad
9cde51cbc6
Merge pull request #4276 from akva2/stdwell_assemble
Added: StandardWellAssemble
2022-11-22 13:09:46 +01:00
Markus Blatt
d8ca55fe34
Merge pull request #4265 from totto82/well_temp
adapt to changes in temperature location in opm-common
2022-11-22 12:26:46 +01:00
Arne Morten Kvarving
3033f3784b changed: make StandardWellEquations data members private
use a friend declaration for StandardWellEquationAccess to
give the assembler access to the matrices/vectors.
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
5eac7cae4e added: StandardWellEquations::residual()
this returns a const reference to the residual vector.
use this in StandardWellEval::getWellConvergence
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
5bab68cb1f added: StandardWellEquationAccess
this is a proxy class for accessing the equation system
in StandardWellAssemble.
use the new class for vector/matrix access in StandardWellAssemble.
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
68bc90b3be added: StandardWellAssemble::assembleSourceEq
extracted from StandardWell::assembleWellEqWithoutIterationImpl
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
5bbf205619 added: StandardWellAssemble::asembleZFracEq
extracted from StandardWell::assembleWellEqWithoutIterationImpl
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
f720cc6dde added: StandardWellAssemble::assemblePerforationEq
extracted from StandardWell::assembleWellEqWithoutIterationImpl
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
57ecd2a5e9 added: StandardWellAssemble::assembleInjectivityEq
extracted from StandardWell::handleInjectivityEquations
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
10e967653b added: StandardWellAssemble
this handles assembly of the equation system for standardwell.
start by moving assembleControlEq into the new class
2022-11-22 12:22:18 +01:00
Arne Morten Kvarving
d2c028fb74 StandardWell_impl.hpp: remove some unused headers 2022-11-22 10:37:41 +01:00
Arne Morten Kvarving
4b4898d6ec added: StandardWellEquations::sumDistributed
this sums up the global equation system for distributed wells
2022-11-22 10:37:41 +01:00
Arne Morten Kvarving
e9ed80d644 added: StandardWellEquations::extractCPRPressureMatrix()
this adds the cpr pressure matrix to a matrix.
this is the core of StandardWellEval::addWellPressureEquations
use the new method in the implementation.
2022-11-22 10:37:41 +01:00
Arne Morten Kvarving
b24f22312e added: StandardWellEquations::getNumBlocks()
this returns the number of blocks in in B/C matrices.
use the new method in the well implementation.
2022-11-22 10:37:40 +01:00
Arne Morten Kvarving
f2d8a073f9 added: StandardWellEquations::extract(SparseMatrixAdapter)
this adds the well matrices to a sparse matrix adapter.
this is the core of StandardWellEval::addWellContributions.
use the new method in the implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
65efe8e1fc added: StandardWellEquations::extract(WellContributions&)
this adds the well matrices to a WellContributions object.
this is the core of StandardWellEval::addWellContributions.
use the new method in the implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
40640e9da6 added: StandardWellEquations::recoverSolutionWell()
this recovers the well solution from a solution vector.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
daf0f90fe5 added: StandardWellEquations::solve()
this applies the inverted D matrix to the residual vector.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
83c41e3f9c added: StandardWellEquations::invert()
this inverts the D matrix.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
033718f027 added: StandardWellEquations::apply(r)
this applies the equation system to a vector.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
21bb4dc955 added: StandardWellEquations::apply(x,Ax)
this applies the equation system to a vector.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
97d158da38 added: StandardWellEquations::init
this initializes the equation system.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
d05081417e added: StandardWellEquations::clear
this zeros the equation system.
use the new method in the well implementation.
2022-11-22 10:36:54 +01:00
Arne Morten Kvarving
a8c912ccfa add: StandardWellEquations
this is a container for the standard well equation system
2022-11-22 10:36:54 +01:00
Markus Blatt
58d8ca144e
Merge pull request #4259 from blattms/do-dereference-unset-optional
[bugfix] Do not unconditionally dereference std::optional.
2022-11-22 10:26:30 +01:00
Tor Harald Sandve
f9ab7e6b07 remove derivative in thermal flux for injectors 2022-11-22 09:40:39 +01:00
Bård Skaflestad
910f10d43b
Merge pull request #4280 from akva2/well_instantations_simplify
simplify instantations
2022-11-21 16:27:16 +01:00
Bård Skaflestad
eeae2442a8
Revert "remove derivative in thermal flux for injectors" 2022-11-21 15:20:45 +01:00
Tor Harald Sandve
5c26be0c28
Merge pull request #4214 from totto82/glift3_fix
Fixes related to gaslift stage 2
2022-11-21 14:40:52 +01:00
Bård Skaflestad
c3dceef6e0
Merge pull request #4237 from akva2/relax_factor_pass_double
changed: pass the actual update value to relaxationFactorRate
2022-11-21 13:49:02 +01:00
Kai Bao
48fa688a17
Merge pull request #4274 from GitPaean/handle_small_fractions_for_sicd
not calculating emulsionViscosity for small liquid_fraction
2022-11-21 13:26:17 +01:00
Kai Bao
9a1520a367
Merge pull request #4262 from totto82/fixInjTemp2
remove derivative in thermal flux for injectors
2022-11-21 13:25:24 +01:00
Arne Morten Kvarving
8a32d6bf33 simplify instantations
more readable
2022-11-21 12:48:50 +01:00
Tor Harald Sandve
c45d90650e fix checking of group target
- use the actual delta rate in checkOilTarget etc
- add check for total gas rate = gas rate + alq
2022-11-21 09:17:24 +01:00
Tor Harald Sandve
7d7b2803a5 renaming and adding more comments based on review 2022-11-21 08:58:49 +01:00
Tor Harald Sandve
9c8f778495 Compute the group rates that takes into account limitation on the sublevels 2022-11-21 08:58:49 +01:00
Tor Harald Sandve
1a09608263 Fix removeSurplus alq
Add water rate target limit
Add the gradient to the checkXXXTarget so that surplus alq is removed
until it would go below the target. I.e. the group still want to produce it  target
2022-11-21 08:58:49 +01:00
Tor Harald Sandve
cd09c130b3 pass group name to getRateWithGroupLimit to avoid checking for that 2022-11-21 08:58:49 +01:00
Håkon Hægland
c313a0a4b2 Remove unused variables 2022-11-21 08:58:49 +01:00
Håkon Hægland
43244c2132 Change condition under which stage 2 is done.
It only makes sense to try to optimize the distribution of lift gas if
the amount of lift gas is constrained either by the maximum allowed
gaslift or total gas or the group is under individual control.
2022-11-21 08:58:49 +01:00
Håkon Hægland
686a6a969d Calculate gradients with group limits.
Take into account group limits when calculating gradients for individual
wells in stage 2 of gas lift optimization.
2022-11-21 08:58:49 +01:00
Håkon Hægland
9c61262329 Changed formatting. 2022-11-21 08:58:49 +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
Håkon Hægland
61ed803740 Do stage2 even if GLIFTOPT is not defined 2022-11-21 08:58:49 +01:00
Kai Bao
5e35477ce1 a little different form to keep the derivatives 2022-11-17 22:57:42 +01:00
Kai Bao
3ddb830ae9 not calculating emulsionViscosity for small liquid_fraction
it might introduce inf/nan in the Jacobian matrix.
2022-11-17 15:20:56 +01:00
Bård Skaflestad
936e9e87e7 Convey More Dynamic State Values per Segment to Output Layer
In particular, report local condition segment flow velocities,
segment holdup fractions, and segment phase viscosities.
2022-11-17 11:49:29 +01:00
Bård Skaflestad
085ccccb1e Capture More Dynamic State Per Segment
In particular, calculate segment flow velocities, segment holdup
fractions, and segment phase viscosities when updating the well
state.  This is purely for reporting purposes and does not affect
the multisegmented model.
2022-11-17 11:49:29 +01:00
Bård Skaflestad
2da83fa680 Expose Internal Support for Inferring Rs/Rv From Surface Volumes 2022-11-17 11:49:29 +01:00
Bård Skaflestad
7d9beb3506 Support Using Different Types for Surface and Reservoir Rates
Simplifies using pointers here.
2022-11-17 11:49:29 +01:00
Atgeirr Flø Rasmussen
5107bcfada
Merge pull request #4226 from hnil/remove_assert_cprw
removed assert in cprw for strictly positive diagonal well coupling
2022-11-14 12:42:37 +01:00
hnil
9c76c96f21 moved debug code into #if section 2022-11-14 11:36:48 +01:00
Tor Harald Sandve
76dc8255fc adapt to changes in temperature location in opm-common 2022-11-11 13:19:38 +01:00
Tor Harald Sandve
7553e22726 remove derivative in thermal flux for injectors 2022-11-10 12:57:21 +01:00
Bård Skaflestad
d388ce40e5 Revert to Original Rs/Rv Calculation Scheme for RESV Rates
Keep the alternative approach in place for reference and
experimental purposes, but disabled by a macro.
2022-11-10 09:41:47 +01:00
Bård Skaflestad
f0e2a1efe0 Make Reservoir Voidage Rate Calculator Independent
This commit adds a new overload of the calcReservoirVoidageRates()
member function.  The new overload does not depend on the user
calling defineState(), but instead takes state variables as direct
input arguments.

Reimplement the state-dependent overload in terms of the new
function.  The immediate use case is calculating additional dynamic
quantities per segment in a multisegmented well model, mostly for
reporting purposes.
2022-11-09 17:08:30 +01:00
Markus Blatt
9cb6d53dcb [bugfix] Do not unconditionally dereference std::optional.
In WellGroupHelpers we unconditional referenced the region
member of GPMaint. Unfortunately, that is a std:optional and
doing this can create quite some havoc.

Now we stop processing if it is unset.
2022-11-09 16:49:07 +01:00
Kai Bao
97b016ef44 fixing some typos in MultisegmentWell_impl.hpp 2022-11-05 22:51:59 +01:00
Kai Bao
178d554d2c we do not copy SegmentState if the segment number changes 2022-11-04 16:38:57 +01:00
hnil
85bfa13c46 change std:cout to OPM::debug 2022-11-04 16:26:12 +01:00
Arne Morten Kvarving
35b66886a9 changed: pass the actual update value to relaxationFactorRate
this to avoid ussage of BVectorWell in interface. in preparation
for moving BVectorWell out of the well hierarchy.
2022-11-04 14:57:11 +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
Bård Skaflestad
203ade29b8 Support Variable Length Connection Data in Distributed Wells
With the addition of tracer information in the data::Rates object
we must relax the assumption that the object is POD.  Switch to
using the Point2PointCommunicator protocol for gathering connection
solutions on the well's owner before transferring well solution
objects to the I/O rank.
2022-11-03 11:37:53 +01:00
Tor Harald Sandve
e33d7c6561 fix group switch logging 2022-11-03 09:40:58 +01:00
hnil
a86bd1c585 removed assert in cprw for strictly positive diagonal well coupling 2022-11-01 21:39:55 +01:00
Bård Skaflestad
daf65f6472
Merge pull request #4225 from GitPaean/removing_number_segments
removing unused number_segments from MultisegmentWell
2022-11-01 15:24:22 +01:00
Kai Bao
cbb2e04b05 removing unused number_segments from MultisegmentWell 2022-11-01 14:42:23 +01:00
Bård Skaflestad
73466da197
Merge pull request #4224 from akva2/wellinterface_eval_rename_assemble
Rename WellinterfaceEval to WellAssemble
2022-11-01 13:51:08 +01:00
Arne Morten Kvarving
b700ec9b53 rename WellInterfaceEval to WellAssemble 2022-11-01 12:55:00 +01:00
Arne Morten Kvarving
411e4d07e7 WellInterfaceEval: separate from inheritance hierarcy 2022-11-01 11:45:15 +01:00
Arne Morten Kvarving
97367a1e95 move checkIndividualConstraints to WellConstraints 2022-11-01 08:57:02 +01:00
Arne Morten Kvarving
e884778e46 move activeInjectionConstraint to WellConstraints 2022-11-01 08:57:01 +01:00
Arne Morten Kvarving
06686702ea added: WellConstraints
this will hold the code for well constraints.
start by moving activeProductionConstraint to the new class
2022-11-01 08:56:41 +01:00
Atgeirr Flø Rasmussen
16ca6a5ead
Merge pull request #4217 from blattms/Debian-fixes
Debian fixes (manpage and missing header include)
2022-10-31 16:29:54 +01:00
Bård Skaflestad
dea582d296
Merge pull request #4197 from akva2/well_group_constraints
Add class for well group constraints
2022-10-31 16:12:17 +01:00
Arne Morten Kvarving
796aa51e79 changed: move calculateBhpFromThp to WellBhpThpCalculator 2022-10-31 13:16:51 +01:00
Arne Morten Kvarving
0577516cfe changed: move updateThp to WellBhpThpCalculator 2022-10-31 13:16:16 +01:00
Arne Morten Kvarving
a4df84f785 fixed: guard against invalid dereference in getRho 2022-10-31 13:16:16 +01:00
Arne Morten Kvarving
e8152a1b65 changed: tidy up computeBhpAtThpLimitProdWithAlq interface
put deferred_logger at the end of the parameter list.
similar to the rest of this family of methods
2022-10-31 13:16:16 +01:00
Arne Morten Kvarving
42fff132b0 changed: drop wrapper MultisegmentWellGeneric::computeBhpAtThpLimitProdWithAlq 2022-10-31 13:16:16 +01:00
Arne Morten Kvarving
db05f1d73f changed: drop wrapper StandardWellGeneric::computeBhpAtThpLimitProdWithAlq 2022-10-31 13:16:15 +01:00
Arne Morten Kvarving
f214ccc138 changed: move computeBhpFromThpLimitInj to WellBhpThpCalculator 2022-10-31 13:15:56 +01:00
Arne Morten Kvarving
6e214557e2 changed: move computeBhpFromThpLimitProd to WellBhpThpCalculator 2022-10-31 13:15:18 +01:00
Arne Morten Kvarving
4fcb1e9d37 changed: move calculateThpFromBhp to WellBhpThpCalculator 2022-10-31 13:15:18 +01:00
Arne Morten Kvarving
f7f4352b68 changed: move mostStrictBhpFromBhpLimits to WellBhpThpCalculator 2022-10-31 13:15:18 +01:00
Arne Morten Kvarving
d4e06536a0 changed: move getTHPConstraint to WellBhpThpCalculator 2022-10-31 13:15:18 +01:00
Arne Morten Kvarving
cd734f7a0d added: WellBhpThpCalculator
this will hold the code for THP/BHP calculations.

first method moved there is wellHasThpConstraints
2022-10-31 13:15:18 +01:00
Arne Morten Kvarving
726e6699da move checkGroupConstraints into WellGroupConstraints 2022-10-31 13:14:51 +01:00
Arne Morten Kvarving
75dad9f4c4 move checkGroupConstraintsProd into WellGroupConstraints 2022-10-31 13:14:51 +01:00
Arne Morten Kvarving
698b748270 added: WellGroupConstraints
this holds the code for well group constraints.
move checkGroupConstraintsInj into the new class
2022-10-31 13:14:50 +01:00
Bård Skaflestad
2840e0cc5f
Merge pull request #4195 from akva2/well_group_controls
Add class for well group controls
2022-10-31 12:34:34 +01:00
Markus Blatt
50eff23710
Merge pull request #4219 from akva2/use_fmt
BlackoilWellModel: use fmt::format
2022-10-31 11:54:57 +01:00
Arne Morten Kvarving
7d72af43de BlackoilWellModelGeneric: use fmt::format 2022-10-31 11:07:20 +01:00
Arne Morten Kvarving
de13e5018a BlackoilWellModelConstraints: use fmt::format 2022-10-31 10:46:50 +01:00
Arne Morten Kvarving
f367e4fb7b changed: use return value
no reason to pass a reference here, just use return
2022-10-31 10:35:52 +01:00
Markus Blatt
d0816a2d35 Added mssing include of functional to StandardWellGeneric.hpp
Without including functional compilation fails with Debian experimental.
2022-10-31 10:12:14 +01:00
Arne Morten Kvarving
6f49aee719 move getGroupProductionTargetRate into WellGroupControls 2022-10-31 09:08:35 +01:00
Arne Morten Kvarving
2d4c522082 move getGroupInjectionTargetRate into WellGroupControls 2022-10-31 09:08:35 +01:00
Arne Morten Kvarving
cdbeef0a3e move getGroupProductionControl into WellGroupControls 2022-10-31 08:52:20 +01:00
Arne Morten Kvarving
cfd0eda7de added: WellGroupControls
this holds the code for well group controls.
move getGroupInjectionControl into the new class
2022-10-31 08:52:19 +01:00
Bård Skaflestad
7b499c4f0a
Merge pull request #4199 from akva2/well_test
Add class for well tests
2022-10-29 13:49:22 +02:00
Arne Morten Kvarving
9f78e0454d move guideRateUpdateIsNeeded into BlackoilWellModelGuideRates 2022-10-28 23:33:05 +02:00
Arne Morten Kvarving
d42cdd409b move assignGroupGuideRates into BlackoilWellModelGuideRates 2022-10-28 23:33:05 +02:00
Arne Morten Kvarving
5e157cd23b move calculateAllGroupGuideRates into BlackoilWellModelGuideRates 2022-10-28 23:33:05 +02:00
Arne Morten Kvarving
01dfe23a50 move assignWellGuideRates into BlackoilWellModelGuideRates 2022-10-28 23:24:29 +02:00
Arne Morten Kvarving
f19c7b2ee6 move getGuideRateInjectionGroupValues into BlackoilWellModelGuideRates 2022-10-28 22:54:54 +02:00
Arne Morten Kvarving
b6659d6960 move getGuideRateValues(Group) into BlackoilWellModelGuideRates 2022-10-28 22:53:33 +02:00
Arne Morten Kvarving
41b1a38de3 move getGuideRateValues(Well) into BlackoilWellModelGuideRates 2022-10-28 22:50:26 +02:00
Arne Morten Kvarving
dc607ce3ff add BlackoilWellModelGuideRates
start by moving getGuideRateValues
2022-10-28 22:40:38 +02:00
Bård Skaflestad
d1d5ff2831
Merge pull request #4208 from akva2/well_convergence
Add class for checking well convergence
2022-10-28 21:26:17 +02:00
Arne Morten Kvarving
f06264152c remove now unnecessary Bhp_ member in StandardWellGeneric 2022-10-28 19:48:01 +02:00
Arne Morten Kvarving
5d4c7f49a2 move checkConvergencePolyMW into WellConvergence 2022-10-28 19:47:59 +02:00
Arne Morten Kvarving
0f8ca0c529 add WellConvergence
move checkConvergenceControlEq into it
2022-10-28 19:47:55 +02:00
Arne Morten Kvarving
cc306a45b4 move updateGroupIndividualControl into BlackoilWellModelConstraints 2022-10-28 19:32:06 +02:00
Arne Morten Kvarving
e04f20af8e move actionOnBrokenConstraints into BlackoilWellModelConstraints 2022-10-28 19:32:02 +02:00
Arne Morten Kvarving
82cf0deef4 move checkGroupConstraints into BlackoilWellModelConstraints 2022-10-28 19:19:33 +02:00
Arne Morten Kvarving
df27ec5d4d move checkGroupProductionConstraints into BlackoilWellModelConstraints 2022-10-28 18:59:40 +02:00
Arne Morten Kvarving
2d9d452fff add BlackoilWellModelConstraints
start by moving hasTHPConstraints
2022-10-28 18:21:43 +02:00
Arne Morten Kvarving
3fdf28508f move loadRestartData into BlackoilWellModelRestart 2022-10-28 15:30:09 +02:00
Arne Morten Kvarving
35386a79bf move loadRestartGuideRates(Config) into BlackoilWellModelRestart 2022-10-28 15:24:59 +02:00
Arne Morten Kvarving
2e433a5bc2 move loadRestartGuideRates(Target) into BlackoilWellModelRestart 2022-10-28 15:22:17 +02:00
Arne Morten Kvarving
ffeddfe280 move loadRestartGroupData into BlackoilWellModelRestart 2022-10-28 15:20:09 +02:00
Arne Morten Kvarving
0f853a8566 move loadRestartWellData into BlackoilWellModelRestart 2022-10-28 15:18:29 +02:00
Arne Morten Kvarving
09c1127c34 move loadRestartSegmentData into BlackoilWellModelRestart 2022-10-28 15:15:13 +02:00
Arne Morten Kvarving
0b32c1afd9 add BlackoilWellModelRestart
start by moving loadRestartConnectionData
2022-10-28 15:13:06 +02:00
Markus Blatt
0ab28551e5
Merge pull request #4200 from totto82/2p_expvfp
fix 2p case wvfpexp
2022-10-26 12:40:16 +02:00
Arne Morten Kvarving
b9ee7eae6f use if constexpr 2022-10-26 11:23:55 +02:00
Tor Harald Sandve
72c78c5eb1 fix 2p case wvfpexp 2022-10-24 15:25:30 +02:00
Arne Morten Kvarving
0cc0b29a14 move updateWellTestState to WellInterfaceGeneric 2022-10-24 12:18:30 +02:00
Arne Morten Kvarving
8b503f9a00 move updateWellTestStatePhysical to WellTest 2022-10-24 12:10:57 +02:00
Arne Morten Kvarving
e2b5fc8082 move updateWellTestStateEconomic to WellTest 2022-10-24 12:06:09 +02:00
Arne Morten Kvarving
71d404336e move checkRatioEconLimits to WellTest 2022-10-24 11:55:57 +02:00
Arne Morten Kvarving
1a0774ceab move checkRateEconLimits to WellTest 2022-10-24 11:49:22 +02:00
Arne Morten Kvarving
2b152e67e1 move checkMaxWaterCutLimit to WellTest 2022-10-24 11:43:57 +02:00
Arne Morten Kvarving
e7273868f5 move checkMaxWGRLimit to WellTest 2022-10-24 11:40:30 +02:00
Arne Morten Kvarving
fe8259bb76 move checkMaxGORLimit to WellTest 2022-10-24 11:37:54 +02:00
Arne Morten Kvarving
37f51420f6 move checkMaxRatioLimitCompletions to WellTest 2022-10-24 11:28:06 +02:00
Arne Morten Kvarving
d56eb16837 WellInterfaceGeneric: add accessor for completions 2022-10-24 10:57:09 +02:00
Arne Morten Kvarving
9367335fe3 added: WellTest
this will hold the code for well tests.
start by moving checkMaxRatioLimitWell to the new class
2022-10-24 10:55:32 +02:00
Tor Harald Sandve
7b90d35f21 fixup from PR comments 2022-10-18 12:58:07 +02:00
Tor Harald Sandve
9538db85b1 set thp msw 2022-10-18 10:55:17 +02:00
Tor Harald Sandve
14428120d9 fix rebase 2022-10-18 10:55:17 +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
47329b30b9 always check individual controls 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
Atgeirr Flø Rasmussen
a35f365e3e
Merge pull request #4143 from totto82/simplifyWellReport
only output final change of well control
2022-10-17 17:28:53 +02:00
Tor Harald Sandve
74eb0d048f Improve convergence for newly opened wells with thp control 2022-10-17 15:32:27 +02:00
Atgeirr Flø Rasmussen
5a90ced52d
Merge pull request #4054 from totto82/gasliftthplim
Allow for gaslift for wells that violate thp limit but are not allowed to switch
2022-10-17 15:15:49 +02:00
Atgeirr Flø Rasmussen
6a13fe807a
Merge pull request #4155 from totto82/fixTestGlift
set alq before trying to solve the equation during well testing
2022-10-17 15:08:57 +02:00
Atgeirr Flø Rasmussen
31ac961834
Merge pull request #4157 from blattms/wellcontrib-available-always
Fix compilation with amgcl/vexcl and without CUDA/OpenCL.
2022-10-17 15:03:37 +02:00
Bård Skaflestad
7096343121
Merge pull request #4162 from akva2/use_range_generators
Use range generators for grid iterations
2022-10-13 23:42:10 +02:00
Arne Morten Kvarving
ff826aa939 RegionAverageCalculator: use elements range generator 2022-10-13 23:01:37 +02:00
Arne Morten Kvarving
5796396696 RateConverter: use elements range generator 2022-10-13 23:01:37 +02:00
Arne Morten Kvarving
15f1ec0c3a BlackoilWellModel: use elements range generator 2022-10-13 23:01:37 +02:00
Kai Bao
9056bf3d98 removing the usage of GTotal 2022-10-13 22:13:45 +02:00
Markus Blatt
fcc3690832 Added missing include of config.h in cpp files. 2022-10-12 15:28:38 +02:00
Markus Blatt
c2963560d2 Fix compilationw with amgcl/vexcl and without CUDA/OpenCL.
There is no reason to omit WellContributions if neither CUDA nor
OpenCL is found as the implementations/functions only use C++-
To the contrary, the defines used for deactivating were not
consistent with usage elsewhere and resulted in compiler erorrs
for exotic configuration
2022-10-11 10:42:08 +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
9461bf1a99 only enforcing production economic limit to producers. 2022-10-06 15:27:33 +02:00
Tor Harald Sandve
12e4bb6e05 only output final change of well control 2022-10-04 09:09:46 +02:00
Tor Harald Sandve
941556ab4d
Merge pull request #4098 from totto82/extVFP
remove cutoff for extrapolation
2022-10-04 08:44:49 +02:00
Tor Harald Sandve
654f9e2c2d
Merge pull request #4135 from totto82/checkGroupConstrainsFromTop
check group constraints from top
2022-10-03 14:32:46 +02:00
Tor Harald Sandve
ebb9fd636c remove cutoff for extrapolation of VFP 2022-10-03 10:26:08 +02:00
Bård Skaflestad
de66f3e519
Merge pull request #4139 from GitPaean/fixing_confusion_initializeWellPerfData
fixing (partly) confusion naming in function initializeWellPerfData()
2022-10-01 01:10:35 +02:00
Kai Bao
15fc19de32 fixing (partly) confusing naming in function initializeWellPerfData() 2022-09-30 23:31:21 +02:00
Kai Bao
f8d8bbb259
Merge pull request #3954 from atgeirr/iterate-network
Add iterations to the network model
2022-09-30 16:33:06 +02:00
Atgeirr Flø Rasmussen
67b95afdd9 Support NETBALAN (partially).
NETBALAN can be used to choose balancing frequency (limited: either start
of timestep, or first NUPCOL iterations), balancing tolerance, and maximum
balancing iterations. These correspond to items 1, 2 and 3 of NETBALAN.
2022-09-30 15:41:11 +02:00
Tor Harald Sandve
54e0496203 check group constraints from top 2022-09-30 13:09:42 +02:00
Tor Harald Sandve
d21921073b avoid oscilation between ORAT and LRAT when they are equal 2022-09-29 11:10:43 +02:00
Atgeirr Flø Rasmussen
95fdea67a8 Do not re-solve network after NUPCOL Newton iterations. 2022-09-28 10:44:42 +02:00
Kai Bao
de4473bbd8 makre sure network_changed synchronized across the processes 2022-09-28 10:44:42 +02:00
Atgeirr Flø Rasmussen
cc15b29372 Add network model iterations.
Implemented by conditionally recursing in BlackoilWellModel::assembleImpl().
2022-09-28 10:44:42 +02:00
Atgeirr Flø Rasmussen
6104a01468 Add WellInterfaceGeneric::getDynamicThpLimit() method. 2022-09-28 10:44:42 +02:00
Kai Bao
6e0baad0c7
Merge pull request #4116 from GitPaean/not-setting-inj-rate-to-zero
limiting the smallest injection rate to 1.e-7 for the injection phase.
2022-09-23 15:17:31 +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
Bård Skaflestad
8432e4130c
Merge pull request #4101 from GitPaean/fix_wells_active
Fix wells active determination
2022-09-19 10:20:30 +02:00
Tor Harald Sandve
b072cc1d5d Allow for gaslift for wells that violate thp limit but are not allowed to switch 2022-09-16 10:49:03 +02:00
Arne Morten Kvarving
c5fced81fa fixed: remove default constructor declaration
a class with a reference member cannot be default initialized,
so constructor is implicitly deleted. quells a clang warning
2022-09-16 09:19:42 +02:00
Tor Harald Sandve
fe19d94b4e
Merge pull request #4110 from GitPaean/avoiding_overshoot_primary_variables
avoiding wrong sign for QTotal primary variable for top segment
2022-09-15 08:13:03 +02:00
Kai Bao
2f19d4586e avoiding wrong sign for QTotal primary variable for top segment
for multisegment wells.
2022-09-14 14:21:03 +02:00
Kai Bao
734b9a792f removing function localWellsActive() 2022-09-14 14:17:02 +02:00
Atgeirr Flø Rasmussen
f3b536889d
Merge pull request #4097 from totto82/cleanDBG
remove computeBhpAtThpLimitProd() output from .DBG file
2022-09-14 10:11:50 +02:00
Arne Morten Kvarving
57f2bb3ea7 fix build without MPI 2022-09-13 15:07:15 +02:00
Kai Bao
83529b22c7 removing one usage of wellsActive() in numComponents 2022-09-13 14:31:56 +02:00
Arne Morten Kvarving
6e83e349d6 changed: move variadic broadcast into EclMpiSerializer 2022-09-13 13:29:47 +02:00
Bård Skaflestad
7e44ddd2bd
Merge pull request #4100 from totto82/wvfpexp_user
remove WVFPEXP from unsupported keywords
2022-09-13 12:46:58 +02:00
Tor Harald Sandve
f8d1d040ab
Merge pull request #4033 from totto82/fix_grsw_output
cleanup group switching output to terminal
2022-09-13 12:25:40 +02:00
Kai Bao
4e1cc5bd5b determining wells_active_ based on well_containers_ size
instead of the information in wells_ecl_, which might include shut wells
2022-09-13 11:36:23 +02:00
Bård Skaflestad
56c653235f
Merge pull request #4087 from akva2/rename_serialization
Rename serialization files
2022-09-13 10:48:33 +02:00
Kai Bao
b363138240 removing the function setWellsActive from BlackoilWellModelGeneric 2022-09-13 09:41:48 +02:00
Tor Harald Sandve
683ed0df1f remove WVFPEXP from unsupported keywords 2022-09-13 09:30:04 +02:00
Tor Harald Sandve
7571215f44 some cleanup 2022-09-13 08:33:51 +02:00
Tor Harald Sandve
001d53858e remove computeBhpAtThpLimitProd() output from .DBG file 2022-09-12 09:29:37 +02:00
Markus Blatt
a4360b4961
Merge pull request #4028 from akva2/reduce_dup
changed: get rid of duplicate MatrixBlock headers/classes
2022-09-09 15:30:30 +02:00
Tor Harald Sandve
d2fc8a3d5e remove the logic that skips checking the group if it already changed 2022-09-09 10:58:36 +02:00
Tor Harald Sandve
702d824135 cleanup group switching output to terminal 2022-09-09 10:58:36 +02:00
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
c68d979d4b remove unused variables 2022-09-09 08:38:17 +02:00
Arne Morten Kvarving
1838b39d2e changed: split ParallelRestart.hpp/cpp in two bits
the mpi serialization bit is put in MPISerializer.hpp/cpp,
while the parallel restart bit stays in ParallelRestart
2022-09-08 13:36:51 +02:00
Kai Bao
4e4606c705 removing unused setupCartesianToCompressed_ function
for BlackoilWellModel
2022-09-08 13:33:39 +02:00
Atgeirr Flø Rasmussen
e9cba9e0c1 Use compressedIndexForInterior() for mapping cartesian indices. 2022-09-05 12:42:54 +02:00
Tor Harald Sandve
8075c1218b
Merge pull request #4029 from totto82/fix_group_multilevel
Simplify and fix check for violation of GRUP for multiple level of guiderates
2022-09-02 12:59:34 +02:00
Bård Skaflestad
93b059eca1
Merge pull request #4046 from akva2/mswellhelper_priv
make MSWellHelpers templates private
2022-09-01 16:44:15 +02:00
Bård Skaflestad
d1ba2ce5bc
Merge pull request #4045 from akva2/wellgrouphelper_priv
Make one more template private in WellGroupHelper
2022-09-01 16:33:43 +02:00
Arne Morten Kvarving
5052a09d6e make MSWellHelpers templates private 2022-09-01 15:17:04 +02:00
Arne Morten Kvarving
5d9ee32853 WellGroupHelpers: simply template instantation
use types for ParallelCommunication.hpp
2022-09-01 14:55:19 +02:00
Arne Morten Kvarving
2135a4268d WellGroupHelpers: make template private 2022-09-01 14:55:19 +02:00
Arne Morten Kvarving
5824af3f1b use libfmt
also change from debug to error
2022-09-01 13:54:40 +02:00
Arne Morten Kvarving
6bd790fd16 avoid pointer semantics 2022-09-01 13:48:01 +02:00
Arne Morten Kvarving
a6517d6111 remove unused template 2022-09-01 13:37:54 +02:00
Arne Morten Kvarving
18d8914ef1 wellhelpers: remove indentation for namespaces 2022-09-01 13:37:11 +02:00
Arne Morten Kvarving
69db0dd175 wellhelpers: make templates private
to increase header encapsulation
2022-09-01 13:37:11 +02:00
Arne Morten Kvarving
2c0ff6f81e consistently use ParallelCommunication.hpp for communication definition 2022-09-01 12:26:11 +02:00
Arne Morten Kvarving
004e7e55fb avoid two communication calls
one less network latency cost
2022-08-31 12:54:47 +02:00
Arne Morten Kvarving
a9590215dc changed: consistently use std::array 2022-08-26 08:28:46 +02:00
Tor Harald Sandve
9b7ba49495 Simplify and fix check for violation of GRUP for multiple level of guiderates 2022-08-25 16:09:53 +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
0f969dd7a5 check ipr for wells prevented to change to thp 2022-08-19 10:48:56 +02:00
Tor Harald Sandve
7a8eed6a6c adapt to renaming in opm-common 2022-08-19 10:33:19 +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
e875849497 Adapt test cases and vfpprint 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
Arne Morten Kvarving
371b2592f5 changed: put ParallelIstlInformation in separate compile unit 2022-08-18 09:15:28 +02:00
Atgeirr Flø Rasmussen
c94ff12e4c Bugfix and simplification of cartesian mapping.
We already have the mapping available, and using the equilGrid() is only valid
on rank 0.
2022-08-17 14:13:13 +02:00
Arne Morten Kvarving
d2ba2e75e8 remove include of Well header 2022-08-11 11:49:42 +02:00
Atgeirr Flø Rasmussen
a5c8d40cfa Remove unneeded timeIdx arguments, also silence other warnings. 2022-08-10 10:01:54 +02:00
Atgeirr Flø Rasmussen
cabe64cc58 Further reduction of modifications. 2022-08-09 11:11:36 +02:00
Atgeirr Flø Rasmussen
5fba14373b Modification to reduce PR to minimal changes. 2022-08-09 11:11:36 +02:00
Atgeirr Flø Rasmussen
5042b02138 Rename method and move to impl file. 2022-08-09 11:11:36 +02:00
hnil
4f6755025c -prototype on trueimpes in new system
-probably better threading
2022-08-09 11:09:48 +02:00
hnil
6d3b0a7c1f tried to make openmp work 2022-08-09 11:09:48 +02:00
hnil
5a39724606 added functions for direct setting of well rates contribution to reservoir 2022-08-09 11:09:48 +02:00
hnil
8f5e0940fe restructuring to be able to call without local indices 2022-08-09 11:09:48 +02:00
Atgeirr Flø Rasmussen
93ce28e9a2
Merge pull request #3972 from ElyesAhmed/alugrid2
Alugrid2
2022-08-04 15:43:24 +02:00
Elyes Ahmed
5c2b60bcd0 rebasing 2022-07-28 20:40:34 +02:00
Markus Blatt
941957c13e Fix shadowed variable warning. 2022-07-28 19:50:24 +02:00
Markus Blatt
c22114af41 Handle injection/producer targets correctly for distributed wells.
We should never return in a function if there are no local
perforations for a distributed well, but that is what we did before
this fix.
2022-07-28 17:52:26 +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
Elyes Ahmed
cd169660e8 rewriting MaxWellConnections 2022-07-08 13:44:38 +02:00
Tor Harald Sandve
04b0c3515d
Merge pull request #3957 from totto82/regStw
regularize equation for problematic std wells
2022-06-30 11:24:20 +02:00
Tor Harald Sandve
cf1abb086f remove msw(ms) from regulariztion parameter 2022-06-29 15:39:51 +02:00
Kai Bao
1b3cee8088 using C++17 style for to reduce nesting level of for loop 2022-06-29 14:20:35 +02:00
Tor Harald Sandve
eef455106d regularize equation for std wells 2022-06-29 12:47:44 +02:00
Kai Bao
64143cd417 when a valve is shut, the rate and pressure drop will be zero 2022-06-29 11:54:36 +02:00
Arne Morten Kvarving
133856b943 changed: avoid lambda capture
clang warns it's not necessary to use a capture for this.
i opted to make it constexpr and avoid the capture with gcc as well.
2022-06-27 14:47:56 +02:00
Markus Blatt
25a92c2c2c
Merge pull request #3958 from Tongdongq/fix-gpu-well-apply
Fix stdwell apply on GPU
2022-06-24 16:02:34 +02:00
Tong Dong Qiu
1f1fa10927 Fix stdwell apply on GPU 2022-06-24 13:48:59 +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
Atgeirr Flø Rasmussen
7fe3839500 Use MatrixBlock consistently, also whitespace cleanup. 2022-06-10 11:08:24 +02:00
hnil
06a8b0ee3d fixed bug after changing duneD to invDuneD 2022-06-08 17:03:27 +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
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
hnil
12fba38d99 Added maximum sparsity pattern which made full reuse possible. May degrade som of the performance fore not full reuse(not tested). 2022-06-08 17:02:02 +02:00
hnil
aba1d5047d working with no resue on norne 2022-06-08 17:02:02 +02:00
hnil
c697e70a69 changed definition of extra equations. made norne go to step 27. HACK 2022-06-08 17:02:02 +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
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
Tor Harald Sandve
147fe77779
Merge pull request #3934 from totto82/stopnocross
stopped wells where cross flow is not allowed are not added to the container
2022-06-07 10:36:07 +02:00
Tor Harald Sandve
cec8e7c724
Merge pull request #3924 from totto82/steeringBHPtoHighestRate
Steer bhp towards the solution with the highest production rate
2022-06-07 10:35:53 +02:00
Tor Harald Sandve
6cc71375b4 stopped wells where cross flow is not allowed are not added to the container 2022-06-07 10:01:02 +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
Tor Harald Sandve
6f410e7b03 Steer bhp towards the solution with the highest production rate 2022-05-25 15:30:36 +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
ea82bebb3a
Merge pull request #3909 from totto82/fix_reg_msw
reset regularize_ before starting the inner iterations
2022-05-03 13:44:00 +02:00
Paul Egberts
5a23084846 restored MultisegmentWellEval.cpp 2022-05-03 11:54:41 +02:00
Tor Harald Sandve
dfe0982286 reset regularize_ before starting the inner iterations 2022-05-03 08:25:26 +02:00
Kai Bao
57d8f1aa24 update primary variables in prepareTimeStep
it should not change running results.
2022-05-02 13:47:16 +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
Arne Morten Kvarving
7edca13df6 fixed: add missing config.h include 2022-04-28 11:38:02 +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
Atgeirr Flø Rasmussen
374b25639e
Merge pull request #3872 from totto82/fix_stop_inoperable
Fix STOP in combination with inoperable/unsolvable
2022-04-25 10:31:02 +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
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
969dff4ede
Merge pull request #3864 from totto82/regMSW
regularize MSW equation when iter > strict_inner_iter
2022-04-21 09:15:15 +02:00
Tor Harald Sandve
03c1884533
Merge pull request #3873 from totto82/aprox_thp
tighten approximated solution bhpFromThpLimit from 3 to 0.1 bar
2022-04-21 08:56:57 +02:00
Tor Harald Sandve
fd6cf1ccbd regularize MSW equation when iter > strict_inner_iter 2022-04-21 08:44:50 +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
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
Tor Harald Sandve
a1d11540a6 tighten approximated solution bhpFromThpLimit from 3 to 0.1 bar 2022-04-19 14:21:20 +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
Tor Harald Sandve
edf8786a58 avoid throw for nan residuals instead return well as unconverged 2022-04-11 09:52:25 +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
Paul Egberts
ab3be6dce4 adjustments to account for vaporized water 2022-04-08 22:36:39 +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
e501a84958 support item 4 wvfpexp 2022-04-08 08:43:13 +02:00
Tor Harald Sandve
e2e0ec9dd9 fix to --shut-unsolvable-wells=true option 2022-04-05 14:42:27 +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
Tor Harald Sandve
2e91d2f353 Do not throw when d = 0 instead continue with rs/rv = 0 2022-04-04 08:24:32 +02:00
Atgeirr Flø Rasmussen
245a87e296
Merge pull request #3851 from totto82/doublecheckecon
Avoid premature closing of wells due to econ limits
2022-04-01 10:01:47 +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
8909b259d0 don't shut wells due to ratio when rate is negative 2022-03-28 10:50:15 +02:00
Tor Harald Sandve
71acf4e056 Double check econ potential limits
Sometimes the potentials are inaccurate as a safty measure we
also check that the rates are violated.
The rates are supposed to be less or equal to the potentials.
2022-03-28 10:50:15 +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
2d6794f077
Merge pull request #3849 from hakonhagland/glift_debug_rank
Cleanup gaslift debugging output code
2022-03-24 14:13:33 +01:00
Håkon Hægland
a3c131955f Omit one redundant debugging message 2022-03-24 13:47:57 +01:00
Håkon Hægland
fbd6c03dd6 Cleanup glift debugging output code 2022-03-24 12:42:46 +01:00
Tor Harald Sandve
32dfdc6198 improve initialization msw new wells 2022-03-24 09:53:46 +01: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
Kai Bao
e05a0b276e fixing the scaling of segment rates
when initial segment rate is zero.
2022-03-14 14:01:24 +01:00
Kai Bao
ccfd4152d3 using addition to update segment pressure
when bhp is changed. It is much safer and more reasonable.

using multiplication is more likely to result in dramatic values.
2022-03-09 14:23:59 +01:00
Håkon Hægland
3cf181b2ee Throw exception instead of using assert
Throw an exception if two-phase gas lift optimization is used for
other phases than oil and water.
2022-03-07 15:58:11 +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
8cfbe1d791
Merge pull request #3816 from totto82/control_well_testing
Set well control to thp or bhp in well testing
2022-02-23 10:36:17 +01:00
Markus Blatt
1d44a4beac
Merge pull request #3817 from bska/fix-pedantic-warning
Remove Extraneous Semicolon
2022-02-18 10:10:44 +01:00
Bård Skaflestad
e1d55d4017 Remove Extraneous Semicolon
This generates warnings when using GCC's "-Wpedantic" option.
2022-02-17 23:13:31 +01:00
Tor Harald Sandve
b931c5ef97 Check if guiderate is violated
If guiderate is violated change to group controll.
Note that a factor 1.01 is added to minimize oscilations.
Fix missing  multiplication with group efficiency when accumulating guiderates
2022-02-17 10:41: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
Tor Harald Sandve
418880730e cleanup2 2022-02-15 12:43:58 +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
650416c647 cleanup 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
ec08f80405 Refactor out the solving algorithm of bhp from thp via VFP to make it usable for injectors 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
c7aa43a82b Rename some methods and variables.
Renames some methods and variables to reflect that the well is no
longer necessarily a StandardWell. It can be either a MultisegmentWell
or a StandardWell. This should avoid confusion about the nature of
the variable.
2022-02-15 10:21:09 +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
Tor Harald Sandve
0c8d0764d6 update well potensials in well state along with alq and update guide rates accordingly 2022-02-08 15:46:08 +01:00
Tor Harald Sandve
bb99d1437b reduce alq when alq + gas production target is violated 2022-02-03 12:11:03 +01:00
Tor Harald Sandve
0b923e505a Add support for maximum total gas (alq + gas rate) in GLIFTOPT
Dont increase gaslift if the groups alq + gas production rate is above the given target
2022-02-02 10:54:32 +01:00
Tor Harald Sandve
009134d037 Limit well rates to honor group rates
If a well is under a group that is limited by a target, it should use as little gaslift as possible.
The reduction algorithm will reduce the gaslift of the well as long as the groups potential is above the groups target.
2022-02-02 10:30:48 +01:00
Håkon Hægland
65c323e1a4 Replace assert with warning.
Replace assert with warning when group rates exceeds target.
2022-01-31 01:52:36 +01:00
Håkon Hægland
8810fa65af Cleanup code in GasLiftSingleWellGeneric
Introduces two new data types BasicRates and LimitedRates to capture
oil, gas, and water rates, and whether they have been limited by well
or group targets. This reduces the number of variables that are passed
to and returned from various methods and thus makes the code easier to
read.
2022-01-31 01:39:20 +01:00
Håkon Hægland
a14ed57921 Silence reorder warning in GasLiftCommon 2022-01-25 13:31:49 +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
Tor Harald Sandve
2fdff5c1e4
Merge pull request #3758 from totto82/fixAssertInWECON
Handle case where no completions have ratio above the limit while the well has
2022-01-21 12:31:11 +01:00
Tor Harald Sandve
6fee9173c0 Remove assert in ratio check for completions
Handle special cases with injection or trivial completion rates and all completions have ratio below the limit while the well has
above
2022-01-21 10:51:40 +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
Bård Skaflestad
9fc9f5421c
Merge pull request #3771 from totto82/fixUpdateGR
Update guiderates after with new rates from newly opened wells
2022-01-21 10:33:00 +01:00
Tor Harald Sandve
d1c2032e73 Update guiderates after with new rates from newly opened wells 2022-01-21 09:15:00 +01:00
Atgeirr Flø Rasmussen
357ba55de5
Merge pull request #3773 from GitPaean/return_zero_thp_zero_rate_inj
return zero thp value for extremely small injection rate
2022-01-20 14:49:25 +01:00
Tor Harald Sandve
a57f92527f
Merge pull request #3777 from totto82/support_min_wait_glift
support none trivial item 3 in LIFTOPT.
2022-01-19 14:58:50 +01:00
Atgeirr Flø Rasmussen
9f7d4f2fc2
Merge pull request #3760 from GitPaean/thp_fixing_model_2
fixing the failure that bhp could not be calculated with thp limit
2022-01-19 12:48:39 +01:00
Tor Harald Sandve
c3571c50a3 support none trivial item 3 in LIFTOPT. i.e. not optimize gaslift every timestep 2022-01-19 10:14:47 +01:00
Kai Bao
913ad21733 return zero thp value for extremely small injection rate
it is a finding from one of the test case.
2022-01-18 10:12:20 +01:00
Bård Skaflestad
3317f10c4a
Merge pull request #3729 from goncalvesmachadoc/gaswater_brine
allow for gas-water + brine
2022-01-12 12:31:34 +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
Kai Bao
2b9b6e5155 addressing reviewing comments for PR#3760 2022-01-10 11:33:11 +01:00
Kai Bao
dec3100247 fixing a bug in funcion bisectBracket 2022-01-09 00:21:31 +01:00
Kai Bao
3b7e62979c refactoring to shorten the function computeBhpAtThpLimitProd
better readibility hopefully.
2022-01-07 15:49:48 +01:00
Kai Bao
5824acbf92 making bruteforce bracket as a function
for better readbility.
2022-01-07 15:13:33 +01:00
Kai Bao
3273f310e3 prototyping the brute force for bracketing bhp
to fix the situation the existing approach fails.
2022-01-07 14:32:16 +01:00
Tor Harald Sandve
3e4e62bc4f
Merge pull request #3751 from hakonhagland/glift_swg_fx3
Refactor some methods in `GasLiftSingleWellGeneric.cpp` (part 2)
2022-01-03 14:14:15 +01:00
Joakim Hove
6b92443cb4 Downstream filesystem reorganisation in opm-common 2022-01-02 14:33:34 +01:00
Håkon Hægland
4bdf7c1b58 Refactor methods getXyzRateWithLimit_()
Refactors getOilRateWithLimit_(), getGasRateWithLimit_(), and
getWaterRateWithLimit_() in GasLiftSingleWellGeneric.cpp. The
common part of the methods is split out into a new method called
getRateWithLimit_(). The purpose of the refactorization is to reduce
reptetive code and make the code easier to maintain.
2021-12-22 10:45:31 +01:00
Håkon Hægland
f28b906782 Made some methods in GasLiftGroupInfo const
This is in agreement with C++ Core Guidelines. A member function should
be marked const unless it changes the object’s observable state. This
gives a more precise statement of design intent, better readability, more
errors caught by the compiler, and sometimes more optimization opportunities.
2021-12-21 23:24:58 +01:00
Håkon Hægland
11ad879472 Make parameters to getLiquidRateWithGroupLimit_() const
To improve readability, we make the parameters of
getLiquidRateWithGroupLimit_() const as discussed in
https://github.com/OPM/opm-simulators/pull/3748
2021-12-20 23:19:40 +01:00
Håkon Hægland
837f33e679 Refactor some methods in GasLiftSingleWellGeneric.
Refactor getOilRateWithGroupLimit_(), getGasRateWithGroupLimit_(),
getWaterRateWithGroupLimit_(), and getLiquidRateWithGroupLimit_() into
a single generic method called getRateWithGroupLimit_().
2021-12-20 23:08:31 +01:00
Håkon Hægland
e388827d81 Fixup in GasLiftSingleWellGeneric
Consider all groups when reducing oil rate to group limits.
The current code just checks the first group limit in the set.
But there might be groups later in the set with more restrictive
limits, causing the oil rate to be reduced more than the first
limit.
2021-12-15 19:15:35 +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
1baee5ec9b
Merge pull request #3715 from goncalvesmachadoc/vapwat
update parameters BlackoilFluidSystem
2021-12-09 15:37:49 +01:00
Håkon Hægland
738b5c5f18 Small clean up in GasLiftSingleWellGeneric.cpp
As discussed in PR #3728, it is better to move the two methods
reduceALQtoGroupTarget() and checkGroupTargetsViolated() from
OptimizeState to the parent class, then we do not have to abuse
OptimizeState in maybeAdjustALQbeforeOptimizeLoop_() just to call
reduceALQtoGroupTarget().

Also fixes a typo (as discussed in PR #3729) in reduceALQtoGrouptTarget()
where the water rate is updated with the gas flow rate instead of the
water flow rate. Should be like this:

 water_rate = -potentials[this->parent.water_pos_];

instead of

 water_rate = -potentials[this->parent.gas_pos_];
2021-12-09 11:58:43 +01:00
Tor Harald Sandve
bd9e13d4bd
Merge pull request #3728 from totto82/fixGasliftGroupWell
Fix when both well and group control restrict gaslift
2021-12-09 08:12:31 +01:00
Atgeirr Flø Rasmussen
e2cdab208b
Merge pull request #3730 from atgeirr/fix-efficiency-alq-network
Account for efficiency when adding lift gas to network flows.
2021-12-09 07:49:16 +01:00
goncalvesmachadoc
b15b893b3a add Index Traits 2021-12-08 16:52:23 +01:00
Atgeirr Flø Rasmussen
819d88a1a7 Account for efficiency when adding lift gas to network flows. 2021-12-08 15:54:12 +01:00
Tor Harald Sandve
66425eb7c2 WIP fix when both well and group control restrict gasslift 2021-12-08 09:36:26 +00:00
Atgeirr Flø Rasmussen
69b81c4fbf
Merge pull request #3724 from totto82/CO2STORETHERMAL
Add gasoil + thermal simulator
2021-12-08 08:33:46 +01:00
Tor Harald Sandve
31954a487b
Merge pull request #3720 from totto82/operSolvEcon
Only check operable wells for wecon
2021-12-07 12:44:24 +01:00
Tor Harald Sandve
4f75d1ab8d Add gasoil + energy simulator
Useful when combining CO2STORE + THERMAL

This PR also fixes an issue with missing phases in computation of output temperature
2021-12-07 09:18:38 +01:00
Kai Bao
148fb4a282
Merge pull request #3712 from totto82/fixAssertInStw
Fix assert in relaxation factor in std well
2021-12-06 11:09:08 +01:00
Tor Harald Sandve
e230174de6 Fix assert in relaxation factor in std well
If original sum ~ 1 and relaxed_update ~ 0 the factor could -> inf
and trigger the assert.
The 1 + epsilon factor will make sure this does not happen
2021-12-03 14:00:40 +00:00
Tor Harald Sandve
4d19ba7409 Only check operable wells for wecon 2021-12-03 11:37:51 +00: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
goncalvesmachadoc
90380c35ad update parameters BlackoilFluidSystem
fix

update parameters BlackoilFluidSystem
2021-11-29 16:38:43 +01:00
Tor Harald Sandve
c4b0a0d9e2 Fix in WTEST
If a well is shut due to physical or economical reason the wellstate status is shut
so we can not check the wellstate we instead check the well from the schedule to
make sure we don't test wells that are shut by the user.
2021-11-26 10:17:45 +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
Bård Skaflestad
d163bebcdc
Merge pull request #3699 from blattms/man-page-spelling
Adds manpage and fixes several spelling issue found by lintian
2021-11-17 09:59:50 +01:00
Kai Bao
c2e18fd077
Merge pull request #3573 from totto82/crossFlowEcon
remove assert and handle opposite rates in wecon related fractions.
2021-11-15 15:31:05 +01:00
Markus Blatt
a2246d331b Spelling fixes
Gbp-Pq: Name 0005-Spelling-fixes.patch
2021-11-15 12:06:05 +01:00
Tor Harald Sandve
ef439cd6d6
Merge pull request #3678 from totto82/fixGasliftX2
Fix gasslift reduction when under LRAT, GRAT or WRAT
2021-11-11 13:11:31 +01:00
Tor Harald Sandve
cd9e742ad5 remove assert and handle opposite rates in wecon 2021-11-10 13:14:22 +01:00
Bård Skaflestad
6f0b06715e
Merge pull request #3676 from akva2/use_single_sum_call
GasLiftGroupInfo: use a array to allow for one sum call
2021-11-10 10:16:39 +01:00
Arne Morten Kvarving
7bce64cde9 use multi-var broadcast for rates 2021-11-10 08:56:04 +01:00
Arne Morten Kvarving
09f61e0e6f WellGroupHelpers: use an array to allow for one sum call 2021-11-10 08:50:39 +01:00
Arne Morten Kvarving
04ed31f800 GasLiftGroupInfo: use an array to allow for one sum call 2021-11-10 08:48:33 +01:00
Tor Harald Sandve
a765ab213b fix WRAT GRAT reduction 2021-11-09 13:40:55 +01:00
Bård Skaflestad
c563f14aff
Merge pull request #3673 from totto82/fixGasliftX
Add check for group production control for LRAT and WRAT in the gasslift code
2021-11-09 13:32:02 +01:00
Tor Harald Sandve
7728df33bb Fix LRAT reduction 2021-11-09 10:45:10 +01:00
Tor Harald Sandve
d2fd5505ca Check group production LRAT and WRAT targets 2021-11-09 08:24:57 +01:00
Tor Harald Sandve
23225d24e5 Fix bug in runOptimize1_ 2021-11-09 08:21:42 +01:00
Joakim Hove
34260544eb
Merge pull request #3647 from joakim-hove/update-rates-after-actionx
Update rates after actionx
2021-11-05 12:01:22 +01:00
Joakim Hove
fd5640774b Call SingleWellState::update_targets for ACTIONX affected wells 2021-11-05 09:48:27 +01:00
Bård Skaflestad
07d6de3bbc Switch to Passing VFP Wrapper Tables as References
We don't need to copy those mapping tables on each call.
2021-11-04 21:28:55 +01:00
Tor Harald Sandve
f755cc3be1
Merge pull request #3645 from totto82/fixNoWellReduction
Adjust reduction rate when well control is considered for GRUP
2021-11-03 15:32:18 +01:00
Bård Skaflestad
2971a3f051
Merge pull request #3659 from joakim-hove/refactor-wellstate-init
Refactor wellstate init
2021-11-03 13:16:34 +01:00
Joakim Hove
44ad5ab190 Remove superfluos is injector or producer test 2021-11-03 12:35:28 +01:00
Joakim Hove
05317e1d72 Extract functionality to update target rates to SingleWellState 2021-11-03 12:30:40 +01:00
Joakim Hove
5a986ee430 Move updateStatus functionality to SingleWellState 2021-11-03 12:30:40 +01:00
Joakim Hove
53dba36513 Move resetConnectionFactor to SingleWellState 2021-11-03 12:30:40 +01:00
Tor Harald Sandve
a57374fae9 Adjust reduction rate when well control is considered for GRUP
The reduction rate is computed differently for cases without wells under GRUP
For a well to check whether to switch to GRUP it needed to use the reduction rate
that would have been computed if this particular well was under GRUP control
and thus recompute the reduction rate without entering the no-grup path
2021-11-03 11:42:18 +01:00
Bård Skaflestad
1e34d714bf Report Well Level Production Guide Rates if Group Controlled
This commit extends the guide rate reporting to always extracting
and reporting pertinent production guide rates at the well level
(i.e., WxPGR) if at least one of the groups in the well's upline has
an entry in GCONPROD.  This is for increased compatibility with
ECLIPSE.
2021-11-02 16:19:56 +01:00
Bård Skaflestad
0c70eac490 Report Well Level Injection Guide Rates if Group Controlled
This commit uses the new GroupTreeWalker helper class to ensure that
we always extract and report pertinent injection guide rates at the
well level (i.e., WxIGR) if at least one of the groups in the well's
upline has an entry for the corresponding phase in GCONINJE.  This
is for increased compatibility with ECLIPSE.

Prior to this change we would report zero-valued WWIGR vectors on a
real field case which made analysing simulation results needlessly
difficult.
2021-11-02 16:19:56 +01:00
Bård Skaflestad
2b0aa379f5 Extract Group Tree Walk to Helper Class
This commit extracts a helper class, GroupTreeWalker, from the
current implementation of 'calculateAllGroupGuiderates()'.  This is
in preparation of adding a similar approach to extracting WxIGR for
all wells for which at least one group in the upline has an entry in
GCONINJE.

The user can add visitor operations for wells and groups, typically
with side effects, and then choose whether to run a pre-order walk
(visit groups before their children) or a post-order walk (visit
children-i.e., wells, before their parents).
2021-11-02 16:19:56 +01:00
Joakim Hove
ec780676e2 Split initSinglewell for producer and injector 2021-11-01 16:02:34 +01:00
Joakim Hove
d213bc9d78 Initialize static perforation data in SingleWellState constructor 2021-11-01 16:02:34 +01:00
Joakim Hove
6c16b5dbb8 Move variable to local scope 2021-11-01 16:02:34 +01:00
Joakim Hove
93218b05c2 Use multiple returns in init single well 2021-11-01 16:02:34 +01:00
Joakim Hove
2527970d11 Replace two assert() with one throw 2021-11-01 16:02:34 +01:00
Joakim Hove
029d1794f8 Remove local variable 2021-11-01 16:02:34 +01:00
Joakim Hove
807ac101d8 Add name member to SingleWellState 2021-11-01 16:02:34 +01:00
Joakim Hove
03cf7b0327 Move updateStatus functionality to SingleWellState 2021-11-01 16:02:31 +01:00
Joakim Hove
129288b2bd Add operator[] to WellState 2021-11-01 13:47:40 +01:00
Joakim Hove
ab63d14bcd Remove debugging aid GroupState::dump 2021-11-01 13:47:36 +01:00
Joakim Hove
d150f400fe Move code from WellState to SingleWellState 2021-11-01 13:23:17 +01:00
Bård Skaflestad
767b5ca58b Switch Guide Rate Accumulation to Post-Order Traversal
This guarantees, under the assumption that the group tree does not
have cycles, that we do not accumulate group-level guide rate values
until all of its children are fully evaluated.  We use an iterative
depth-first post-order tree traversal with an explicit stack instead
of a recursive implementation.

The previous implementation, which tried to do the same kind of
child-to-parent accumulation, might visit a parent group multiple
times which in turn might lead to losing updates.  This is a more
formalised approach to the value accumulation than was originally
employed.
2021-10-29 21:21:49 +02:00
Tor Harald Sandve
b9f16018ac remove unused inj_potentials 2021-10-28 14:17:33 +02:00
Tor Harald Sandve
93c7ba6b92 communicate inj_surface_rates 2021-10-28 08:55:50 +02:00
Bård Skaflestad
3cfec109db
Merge pull request #3620 from blattms/removeSetupCart-rebased
[refactor] Remove cartesianToCompressed Mapping from well model
2021-10-25 16:43:08 +02:00
Markus Blatt
fa9e93529b Only consider perforation in the interior of the local grid.
This is needed for distributed wells to save most of the code
from checking whether a perforation is in the interior.

We add new methods compressedIndexForInterior that return -1
for non-interior cells and use that for the wells. This restores
the old behaviour before 1cfe3e0aad
2021-10-19 16:50:42 +02:00
Bård Skaflestad
67f4cf62f1 Report Group Level Injection Guide Rates if Present
We used to tie reporting these quantities to whether or not a group
had any guide rates for production (GuideRate::has()), but this is
clearly insufficient for injection guide rates.
2021-10-19 14:15:36 +02:00
Bård Skaflestad
a7c6203a73 Initialise Guide Rate Object From Restart File
This commit adds an overload set named

    loadRestartGuideRates

which, collectively, initialises the contained GuideRate object
using guide rate values from the restart file.  This is necessary,
but not quite sufficient, to restart models in prediction mode with
group-level constraints.
2021-10-19 13:22:31 +02:00
Bård Skaflestad
8014442a1d Split Restart File Loading Into Multiple Stages
Mostly for readability in preparation of initialising the guide rate
object with values from the restart file.  The new stages, each with
its own 'loadRestart*Data()' member function are

  - Connection
  - Segment
  - Well
  - Group

While here, also switch to using std::any_of() in place of a raw
loop.
2021-10-19 13:22:31 +02:00
Bård Skaflestad
37f589bff1
Merge pull request #3598 from bska/report-siunits-injgr-grouplevel
Report Group Level Inject Guiderate Values in Strict SI Units
2021-10-19 13:20:58 +02:00
Markus Blatt
23e0b06387 Allow communicators other than MPI_COMM_WORLD. 2021-10-19 12:44:41 +02:00