Commit Graph

276 Commits

Author SHA1 Message Date
Kai Bao
e8aa431ec7 not negative rate_for_group_control
in WellsGroup::updateWellProductionTargets. The current implementation
of group control is allowed tiny over-producing of the group target
while it cause negative rate_for_group_control . When all the wells are
not under group controls, it can cause oscillation of the control mode
later.

Probably a better way is to do something when we see overproducing
happens.
2017-04-11 16:53:19 +02:00
Kai Bao
a498d48a73 Tracking situation when group overproducing its target
Bascially it means that something wrong with our algorithms. Not sure
how to handle it properly yet.
2017-04-11 16:53:19 +02:00
Kai Bao
b027b27452 not applying the group control in WellsManager
since the guide rates are not completed yet.
2017-04-11 16:53:19 +02:00
Kai Bao
4bd1b1cf76 not setting up guide_rates in WellsManager based on well potentials
That part is moved to well_collection, will be handled in the beginning
of time step.
2017-04-11 16:53:19 +02:00
Kai Bao
bec92dee9e Wells specified with GRUP will be put under group control
immediately.
2017-04-11 16:53:19 +02:00
Kai Bao
2f10b8fc23 Always updating the well targets under group control
for each iteration. Even all the wells are under individual controls,
their group targets/constraints should also be updated for correct group
behavoirs.
2017-04-11 16:53:19 +02:00
Kai Bao
530afe55dd handle the situatioin when giving a NaN prod target to injectors
When all production wells are under individual controls, the group can
have zero production guide rates, which can result NaN value targets for
injectors.
2017-04-11 16:53:19 +02:00
Kai Bao
d41c4a371f Considering the injection phase when applying VREP group controls
GCONINJE only support single phase injection. When we inject one phase,
the values of distr for other phases should be set to be zero.

It will provide one strategy to figure out which phase we are
injecting. It is important when we inject one phase while the well is
claimed to be another phase in WELSPECS.
2017-04-11 16:53:19 +02:00
Kai Bao
745a2a5561 adding a flag to indicate whether group controls applied
for WellCollection.
2017-04-11 16:53:19 +02:00
Kai Bao
dff247d975 adding a function setGuideRatesWithPotentials() to WellCollection
it only handles the calculation based on wellPotentials though.

Or it should also give each well a value for wells does not specify a
guide rates? which will be some value same for all the wells?
2017-04-11 16:53:19 +02:00
Tor Harald Sandve
214e9764b2 Add sat table id to well struct 2017-04-06 13:52:27 +02:00
Kai Bao
d1469bd39e putting wells under immidatel group control when specified
with GRUP.
2017-03-07 12:48:30 +01:00
Atgeirr Flø Rasmussen
99c69a17d5 Merge pull request #1138 from andlaus/refactor_well_permeability
do not explicitly pass the permeability to the well model anymore
2017-01-27 13:15:50 +01:00
Andreas Lauser
1ae94c8db3 do not explicitly pass the permeability to the well model anymore
this information is already part of the EclipseState. The reason why
this should IMO be avoided is that this enforces an implementation
(ordering of the permeability matrices) the simulator on the well
model. If this needs to be done for performance reasons, IMO it would
be smarter to pass an array of matrices, instead of passing a raw
array of doubles.  I doubt that this is necessary, though: completing
the full Norne deck takes about 0.25 seconds longer on my machine,
that's substantially less than 0.1% of the total runtime.

in order to avoid code duplication, the permeability extraction
function of the RockFromDeck class is now made a public static
function and used as an implementation detail of the WellsManager.

finally, the permfield_valid_ attribute is removed from the
RockFromDeck class because this data was unused and not accessible via
the class' public API.
2017-01-27 12:51:12 +01:00
Kai Bao
b60439c564 set the VREP control as current control when applying VREP control
for the first time

Not sure it is always the better things to do here, while it can help
the consistence of the two current controls in the well_controls and
well_state.
2017-01-25 14:11:37 +01:00
Kai Bao
4fcbd16962 considering effieciency factor when calculating production rate. 2017-01-16 16:13:44 +01:00
Kai Bao
e0143f85fd adding groupTargetConverged() to WellCollection 2017-01-16 15:55:35 +01:00
Kai Bao
31465c732c adding groupProdTargetConverged() to WellsGroup
When the group is producing its target, we consider it is converged.
When the group is not producing its target, while the group can not
produce more based on its own limits, we also consider it is converged.

When the group is not producing its target, while the group can
potentially produce more, we consider it is not converged.
2017-01-16 14:19:52 +01:00
Kai Bao
0312190f7d adding canProdueMore() function to wellsGroup
to indicate whether the group can produce more to match the group target
when they are not producing enough compared with the group target.
2017-01-16 11:25:23 +01:00
Kai Bao
f6b92dcc43 updating the group control limit for individual control wells
to provide a better standard for the wells under individual control to
return to group control. For example, some wells get really big group
control limit and switch to individual control, it is very difficult for
them to return to group control with that kind of unreasonable fixed
group limit.
2017-01-12 15:44:44 +01:00
Atgeirr Flø Rasmussen
f19c90bba7 Throw if solvent phase injected. 2017-01-09 16:33:03 +01:00
Jørgen Kvalsvik
ccd38c0cf7 Ask for reference depth at timestep. 2016-11-22 14:22:09 +01:00
Kai Bao
78b96d9c20 a flag to WellCollection whether group control active 2016-11-17 16:26:19 +01:00
Kai Bao
37e1fb0043 rewriting the findWellNode function
with assuming we should always find the well in the well collection.
2016-11-16 14:27:15 +01:00
Joakim Hove
9739b2167c Merge pull request #1101 from jokva/changes-in-grouptree
GroupTree interface changed upstream
2016-11-16 13:26:58 +01:00
Kai Bao
d7b2d3368c fixing the comments.
No change in the functions and results.
2016-11-16 11:40:10 +01:00
Kai Bao
0e6214723c addressing a few comments. 2016-11-16 09:51:06 +01:00
Kai Bao
6714c53dc8 adding target_updated_ flag to WellNode
to save some repeated efforts when updating Well Targets.
2016-11-16 09:43:28 +01:00
Kai Bao
ca52f1f59e checking whehter need to update before updateWellTargets. 2016-11-15 13:56:49 +01:00
Kai Bao
f4a44ec1dd cleaning up more unused flag from WellsGroup 2016-11-11 11:29:12 +01:00
Kai Bao
6c9c64cb3e removing a few not-used function with the new strategy. 2016-11-10 17:50:30 +01:00
Kai Bao
84910993c4 different strategy is using when updating the well targets
When the group has wells both under individual control and group
control, since the well rates under individual control changes each
iteration, the well targets for this kind of group need to be updated
each iteration.

When we change to use implicit well potentials later, which is supposed
to be more accurate, we probably should always (unless we decided not to)
update the well targets each iteration.
2016-11-10 17:22:25 +01:00
Kai Bao
73b511f90a adding function findWellNode() to WellCollection
to return the WellNode* instead of WellGroupInterface*
2016-11-10 16:28:40 +01:00
Kai Bao
62dbf74bc9 cleaning up and adding more comments for better understanding.
No functional change.
2016-11-10 16:28:40 +01:00
Kai Bao
8ce422072e applying the efficiency factor to VREP control. 2016-11-10 16:28:40 +01:00
Kai Bao
fe7a77d80e adding VREP injection support.
not handling multiple injection wells for moment.
2016-11-10 16:28:40 +01:00
Kai Bao
0e3118af42 using variable only_group instead of hard-coded false.
when applying group production control.
2016-11-10 16:28:40 +01:00
Kai Bao
a77750c0b6 correcting the typo in efficiency
It was efficicency, which causes inconvenience when searching variables
or functions.
2016-11-10 16:28:40 +01:00
Kai Bao
099a62f07a adding basic support for group injection control.
more testing will be required later.
2016-11-10 16:28:40 +01:00
Kai Bao
f1123e4e4c applying efficiency factor to the group control. 2016-11-10 16:28:40 +01:00
Kai Bao
f922ed6ad9 function for accumulative efficiency factor for WellNode
This is the final efficiency factor that goes to the source/sink terms
in the material balance equations.
2016-11-10 16:28:40 +01:00
Kai Bao
194d9b161d adding efficiency factor to the WellsGroupInterface.
The one for the WellNode should be specified with WEFAC, which we are
not handling for the moment, so we just set it to be 1.0 for the moment.
2016-11-10 16:28:40 +01:00
Kai Bao
a67bff245b refactoring function updateWellProductionTargets()
To handle different types of control mode.
2016-11-10 16:28:40 +01:00
Kai Bao
be5f1e5c58 When NONE is specified, no group control enforcement.
NONE is specified in GCONPROD or GCONINJE.
2016-11-10 16:28:40 +01:00
Kai Bao
d3926a6a6a output cleanining up 2016-11-10 16:28:40 +01:00
Kai Bao
9bfe9d561a removing the use of cast between base class and derived class
between WellsGroupInterface and WellsGroup, WellNode.
2016-11-10 16:28:40 +01:00
Kai Bao
631ea6cf82 revising updateWellTargets to remove the dependency of WellState
avoiding template using here. It is possible we will need WellState
eventually, while only using the well_rates for the moment.
2016-11-10 16:28:40 +01:00
Kai Bao
1174da5326 fixing the comilation problem from rebasing. 2016-11-10 16:28:40 +01:00
Kai Bao
2ddb199f4f revising injectionGuideRate and productionGuideRate
for WellNode. It gives a better logic.
2016-11-10 16:28:40 +01:00
Kai Bao
3551ccac0a adding updateWellInjectionTargets updateWellProductionTargets
For WellsGroup. At least for the current moment, the updation of the
well targets for injectors and producers should be handled in a
seprate way.
2016-11-10 16:28:40 +01:00