94 Commits
Author SHA1 Message Date
Kai Bao 0d96749d4d fixing a test related to history mode. 2018-01-08 09:08:05 +01:00
Kai Bao 67fbac5c95 removing the unused parameter:: for LinearSolverPetsc
to fix the compilation when PETsc exists.
2017-06-06 11:00:51 +02:00
Kai Bao e77f726906 adding flag to tell when using well potential for guide rate
for WellNode.
2017-04-11 16:53:19 +02:00
Kai Bao 29372e287c removing well potentails from WellsManager 2017-04-11 16:53:19 +02:00
Kai Bao 44924b9ee9 small corrections in WellsGroup
should not change reults.
2017-04-11 16:53:19 +02:00
Kai Bao bd9ff2ad94 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 b7ea707928 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 a6f4772ca1 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 17fb6f9ffe 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 d50d21d8e0 Wells specified with GRUP will be put under group control
immediately.
2017-04-11 16:53:19 +02:00
Kai Bao 2fcb449196 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 7701b68814 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 81fb20160c 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 aaaacce49e adding a flag to indicate whether group controls applied
for WellCollection.
2017-04-11 16:53:19 +02:00
Kai Bao be00224a4b 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
Kai Bao 70b19780b4 putting wells under immidatel group control when specified
with GRUP.
2017-03-07 12:48:30 +01:00
Kai Bao b97c585519 do not assign non-zero THP value when no THP involved. 2017-02-17 13:45:55 +01:00
Kai Bao 6ca48313ca correcting the confusing indent in WellState init 2017-02-17 13:28:29 +01:00
Kai Bao 8198c256a9 adding thp to the report for summary output. 2017-02-13 10:15:58 +01:00
Kai Bao 78bf488a2a 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 cb84571540 considering effieciency factor when calculating production rate. 2017-01-16 16:13:44 +01:00
Kai Bao 9fe6d80f99 adding groupTargetConverged() to WellCollection 2017-01-16 15:55:35 +01:00
Kai Bao 3a06a2dd50 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 8f658a92f2 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 713c833b0a 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 4427c85d77 a flag to WellCollection whether group control active 2016-11-17 16:26:19 +01:00
Kai Bao fda1016532 warning fixed related to petsc 2016-11-16 15:35:35 +01:00
Kai Bao 6e4f9e708e 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 c3b00dc7fd fixing the comments.
No change in the functions and results.
2016-11-16 11:40:10 +01:00
Kai Bao 708bfd169b addressing a few comments. 2016-11-16 09:51:06 +01:00
Kai Bao bf2f9b3f06 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 55eec0b2ed checking whehter need to update before updateWellTargets. 2016-11-15 13:56:49 +01:00
Kai Bao f9f5bacee4 cleaning up more unused flag from WellsGroup 2016-11-11 11:29:12 +01:00
Kai Bao 91b8c872eb removing a few not-used function with the new strategy. 2016-11-10 17:50:30 +01:00
Kai Bao 95997e208c 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 085785bf26 adding function findWellNode() to WellCollection
to return the WellNode* instead of WellGroupInterface*
2016-11-10 16:28:40 +01:00
Kai Bao b319e1a75d cleaning up and adding more comments for better understanding.
No functional change.
2016-11-10 16:28:40 +01:00
Kai Bao 3e8b1bdb82 applying the efficiency factor to VREP control. 2016-11-10 16:28:40 +01:00
Kai Bao 76a2108ea9 adding VREP injection support.
not handling multiple injection wells for moment.
2016-11-10 16:28:40 +01:00
Kai Bao 88181f4948 using variable only_group instead of hard-coded false.
when applying group production control.
2016-11-10 16:28:40 +01:00
Kai Bao 06d380df51 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 2b289f8964 adding basic support for group injection control.
more testing will be required later.
2016-11-10 16:28:40 +01:00
Kai Bao 63e5755fa9 applying efficiency factor to the group control. 2016-11-10 16:28:40 +01:00
Kai Bao a0e1fcf89d 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 013c907e66 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 2e135388a6 refactoring function updateWellProductionTargets()
To handle different types of control mode.
2016-11-10 16:28:40 +01:00
Kai Bao b8ac674f9b 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 65d61d1c4f output cleanining up 2016-11-10 16:28:40 +01:00
Kai Bao 352c185edf 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 32e9b26ce8 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 fec53a1af5 fixing the comilation problem from rebasing. 2016-11-10 16:28:40 +01:00
Kai Bao e183ab6ccd revising injectionGuideRate and productionGuideRate
for WellNode. It gives a better logic.
2016-11-10 16:28:40 +01:00
Kai Bao 7295f26f54 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 46a9a62741 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 6942a986da 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 e28715b601 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 a438680fb0 putting more things in the prototyping test. 2016-11-10 16:28:40 +01:00
Kai Bao 0d5a86cc71 keeping adding group control related in. 2016-11-10 16:28:40 +01:00
Kai Bao f628064884 keeping putting group controlling in. 2016-11-10 16:28:40 +01:00
Kai Bao 4214cfec83 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 36bedfcf67 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 3bdf0eae11 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 c5958da6c9 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 a0d3ceff62 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 f79fe1f7ad 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 6f8acf49f8 adding default constructor for DynamicListEconLimited 2016-07-04 16:21:55 +02:00
Kai Bao 1fc189065c adding a initialStep() function to SimulatorTimer
to indicate if the current step is the inital step.
2016-07-04 11:12:53 +02:00
Kai Bao c58a0fce43 addressing comments.
no functional change.
2016-06-30 16:20:38 +02:00
Kai Bao 30bc54ba4a removing some commented lines. 2016-06-30 15:17:13 +02:00
Kai Bao 4b4492e877 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 a07f628469 handling connection closing in DynamicListEconLimited
due to econ limits.
2016-06-30 14:41:14 +02:00
Kai Bao c7c38374ec adding list_econ_limited to setupWellControls 2016-06-30 14:41:14 +02:00
Kai Bao bc1fb8e477 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
Kai Bao 5e5271b14d adding command line option full_timestep_initially_
when the option is true, for each report step, the size of the adaptive
time step always beginning with the size of the report step.
2015-08-17 15:56:31 +02:00
Kai Bao 64fe376ac5 Adding two more warnings to disable_warnings.h.
-Wpragmas and -Wunused-but-set-variable
2015-06-17 10:57:45 +02:00
Kai Bao ee265f5cb5 Changing the tolerance for blackoilfluid tests.
Using the original strict relative tolerance for other properties than viscosity.
2014-09-23 14:38:32 +02:00
Kai Bao ef3e524c30 Changing nColumns to nRows. 2014-09-23 13:17:47 +02:00
Kai Bao 175da5450f Changing the location of * in long formula. 2014-09-22 14:29:18 +02:00
Kai Bao 6a43935ea3 Deleting some commented lines. 2014-09-22 14:26:00 +02:00
Kai Bao 09404202da Changing the naming in PvtDead.
To be consistent with the naming int PvtLive.
2014-09-22 14:21:33 +02:00
Kai Bao ad54f1aa62 Fixing test_wetgas in test_blackoilfluid. 2014-09-22 13:19:35 +02:00
Kai Bao 5d3017e6c6 Merge remote-tracking branch 'upstream/master' into PVT_viscosity_try 2014-09-22 13:01:13 +02:00
Kai Bao be26c0af18 Fixing the blackoilfluid test. 2014-09-22 12:29:40 +02:00
Kai Bao ee73105c95 Using resize to allocate memory for 1/BMu. 2014-09-22 10:28:23 +02:00
Kai Bao 2b18b8f27f Finshing changing Pvt_liveGas
Remains to be verfied.
2014-09-18 15:28:38 +02:00
Kai Bao eadbffa99b Changing the PvtLiveOil to use 1/BV for viscosity.
Pssing the simple 2D test.
2014-09-18 12:46:45 +02:00
Kai Bao 0b69961d9e A little more comment about B and b. 2014-09-17 11:15:58 +02:00
Kai Bao d393d147a4 Updating the calculation of mu and dmudp for PvtDead. 2014-09-14 17:33:43 +02:00
Kai Bao d9acd0f3b8 Rewriting the d_mu_d_p for deadGas. 2014-09-14 16:24:37 +02:00
Kai Bao d9eb3ea30f Chaning using the new interpolation for viscosity 2014-09-12 13:39:16 +02:00
Kai Bao e5761412ba Added the test code and test data.
Added TESTTIMER.DATA and test_timer.cpp
2014-03-26 17:53:06 +01:00
Kai Bao 2a359b6457 Added the test and test data for the new SimulatorTimer
Added test_timer.cpp, TESTTIMER.DATA
2014-03-26 17:45:39 +01:00
Kai Bao c1d4f928b4 A new SimulatorTimer Class 2014-03-26 15:53:54 +01:00
Kai Bao dbd351dd4d Output correct information for temporary use.
Change the SimulatorTimer class a little bit to output the totaltime and
current time correctly.
2014-03-24 16:41:02 +01:00