Commit Graph
56 Commits
Author SHA1 Message Date
Kai Bao bdb9d8fcd6 do not assign non-zero THP value when no THP involved. 2017-02-17 13:45:55 +01:00
Kai Bao f4a3e90d3b correcting the confusing indent in WellState init 2017-02-17 13:28:29 +01:00
Kai Bao 85b5ff6b68 adding thp to the report for summary output. 2017-02-13 10:15:58 +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
Kai Bao 78b96d9c20 a flag to WellCollection whether group control active 2016-11-17 16:26:19 +01:00
Kai Bao d48255d198 warning fixed related to petsc 2016-11-16 15:35:35 +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
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
Kai Bao df745bafef functions for indicating injection and production upating.
it is for WellCollection, which is logically wrong. It should be done in
the group level, while things will be different for multi-level groups.

The current implementation basically works for current needs, that we
only have one group.
2016-11-10 16:28:40 +01:00
Kai Bao 86e41a8937 adding isProducer() and isProjector() to wellNode class.
Did not see type() function there, while it should still be a okay idea.
2016-11-10 16:28:40 +01:00
Kai Bao 7926a58fae parameter forced to only_group from applyInjGroup applyProdGroup
forced and only_group basically mean two opposite things. Having both of
them in the same context will be really confusing and error-prone.

And also, we do not do anything forcedly. We do things base on what
setup tells us to do.

Only_group may not be the final name, while deinitely a better one than
forced.
2016-11-10 16:28:40 +01:00
Kai Bao a9335266c6 putting more things in the prototyping test. 2016-11-10 16:28:40 +01:00
Kai Bao 999b80a91a keeping adding group control related in. 2016-11-10 16:28:40 +01:00
Kai Bao 26cc5de202 keeping putting group controlling in. 2016-11-10 16:28:40 +01:00
Kai Bao 4d57b641a8 adding a non-const wellCollection() in WellsManager.
For the WellModel from the simulator to use. Not decided totally,
    well_collection might need to be updated during the simualtion due
    to the update the target of wells.
2016-11-10 16:28:40 +01:00
Kai Bao 59ab9b8424 not returning zero from double WellNode::productionGuideRate
Current understanding. Two ways might prevent to return the guide_rate here
1. preventing the well from group control with keyword WGRUPCON
2. the well violating some limits and working under limits. We do not have strategy
to handle this situation yet.
2016-11-10 16:28:40 +01:00
Kai Bao 3150b94ed6 Not return from the WellNode:applyInjGroupControl
unless we prevent the well from group control with keyword WGRUPCON.
2016-11-10 16:28:40 +01:00
Kai Bao 2e9929e2af To make the injection well be able to receive the target.
Very hacky way here. The logic of the code is that only
a well is specified under GRUP control, it is under group
control. Which is not the case observed from the result.
From the result, if we specify group control with GCONPROD
and WCONPROD for a well, it looks like the well will be
under group control. TODO: make the logic correct here
instead of using `false` here.
2016-11-10 16:28:40 +01:00
Kai Bao 0640c963fc group can be both injection group and production group.
Change if else to two ifs.
2016-11-10 16:28:40 +01:00
Kai Bao f93fd52c26 adding support for the FLD for the control type of group control.
And also adding support for the liquid rate type of guide rate type.
2016-11-10 16:28:40 +01:00
Kai Bao b0a4387573 adding default constructor for DynamicListEconLimited 2016-07-04 16:21:55 +02:00
Kai Bao 18b76331eb addressing comments.
no functional change.
2016-06-30 16:20:38 +02:00
Kai Bao b4fa2b4944 removing some commented lines. 2016-06-30 15:17:13 +02:00
Kai Bao 28636aad5c adding stopped wells list to DynamicListEconLimited
when well is closed due to rate economic limits, based on the auto
shut-in configuration, the well can be STOP or SHUT.

When well is closed due to all the connections are closed, it should be
SHUT.
2016-06-30 14:41:14 +02:00
Kai Bao eb163e648c handling connection closing in DynamicListEconLimited
due to econ limits.
2016-06-30 14:41:14 +02:00
Kai Bao c64d33fbd3 adding list_econ_limited to setupWellControls 2016-06-30 14:41:14 +02:00
Kai Bao 7dac2201bb WIP in adding class DynamicListEconLimited
to handle the closed wells and connection dynamically based on the
economic limits provied by keyword WECON
2016-06-30 14:41:14 +02:00