Commit Graph
100 Commits
Author SHA1 Message Date
Kai Bao 2c69556fad correcting of the sign when calculating perforation pressure
the sign of the perforation and cell pressure difference was wrong.
2019-04-08 14:23:05 +02:00
Kai Bao dadb31f093 fixing some mistakes from rebasing 2019-04-07 14:55:08 +02:00
Kai Bao e5090a26fb setting the simulation parameters 2019-04-07 14:55:08 +02:00
Kai Bao 49a8c7bfd1 changing the sign of the mass balance equations for ms wells
following the conventions with StandardWell
2019-04-07 14:55:08 +02:00
Kai Bao 23d2097d44 various improvements to the inner iteration of ms wells 2019-04-07 14:54:05 +02:00
Kai Bao 031c19fc78 fixing mistakes due to rebasing. 2019-04-07 14:54:05 +02:00
Kai Bao e9c0bdba06 using B_avg for the inner iteration for multisegment wells 2019-04-07 14:54:05 +02:00
Kai Bao 1df65913d7 updating the primary variables before calculating accumulation term 2019-04-07 14:54:05 +02:00
Kai Bao 79e51ab724 handling the situation that not all the connections are open
Then Wells struct and well from parser hold different numbers of
connections.

The current approach is a temporary solution. The final approach should
be done through parser side.

Things can be difficult is because that connections can be removed due
to multiple different causes after parsing. How to keep information
always updated is not trivial.
2019-04-07 14:53:38 +02:00
Kai Bao c78a59eb1f considering the pressure dependence of the segment volume
segment volume is fixed, while duo to composition and pressure change,
within the fixed segment volume, different amounts of fluids can be
contained.
2019-04-07 14:53:38 +02:00
Kai Bao 972fed602e using a small value drawdown for connection
when crossflow is banned from the well, while the crossflow is happening
for this connection for mutlisegment well.
2019-04-07 14:53:38 +02:00
Kai Bao 04c35c8916 UseMultisegmentWell is defaulted to be true
to make the testing of the multisegment well model easier.
2019-04-07 14:52:18 +02:00
Kai Bao f8767e09ec cleaning up and fixing the compilation error from rebasing 2019-04-07 14:52:18 +02:00
Kai Bao 9d83affb1b first version of restarting for multisegment well 2019-04-07 14:52:18 +02:00
Kai Bao 0d99686e97 fixing the segment treatment in the init of WellStateFullyImplicitBlackoil 2019-04-07 14:52:18 +02:00
Kai Bao e2b8edd968 updating perforation pressure and rates for MSW well 2019-04-05 10:38:01 +02:00
Kai Bao b62dc0b5f2 addressing review comments 2019-04-04 16:22:19 +02:00
Kai Bao ca69e2334a recovering well restart data for multisegment well
When multisegment wells are involved for RESTART, based on the recovered
segment-related quantities as Opm::data::Segment objects, the segment
phase rates and segment pressure are recovered as part of the
WellStateFullyImplicitBlackoil.
2019-04-04 16:22:19 +02:00
Kai Bao a7362abb04 Merge pull request #1758 from akva2/janitoring
convert to unix eol
2019-03-14 14:41:18 +01:00
Kai Bao 3c88cb2f9d correcting the sign of the accumulation term of StandardWell
Following the sign of the production rates.

And also keep the primary variables updated when calculating the
explicit quantities.
2019-03-06 09:48:30 +01:00
Kai Bao a83db39cce warning instead of throwing for nnc between active cells and inactive cells 2019-03-04 12:49:17 +01:00
Kai Bao 83fc76e6a3 Merge pull request #1736 from andlaus/fix_aquifers
aquifers: add missing serialize() and deserialize() methods
2019-02-25 20:51:27 +01:00
Kai Bao 2d933f2303 Merge pull request #1695 from WesselDeZeeuw/BaseClassAquifer
Base class aquifer
2019-02-18 10:44:51 +01:00
Kai Bao 56e829329f each phase needs to be above certain value to be treated to be present
it helps to recover some RESTART running based on single precision
format.
2019-01-22 13:53:08 +01:00
Kai Bao 1a5d38ec9c Merge pull request #1711 from akva2/fix_update_fetkovich
fixed: spurious white space
2019-01-17 12:34:42 +01:00
Kai Bao 9e483bed45 updating more quantities when restart
lastRs_, lastRv_, maxDRs_, maxDRv_

to get better restart.
2019-01-12 17:20:44 +01:00
Kai Bao affb767017 Merge pull request #1642 from WesselDeZeeuw/AquiferFetkovich
Aquifer fetkovich
2019-01-10 13:06:08 +01:00
Kai Bao 12cf3b6d58 adding the unit_test for PR#1693 2019-01-10 11:29:28 +01:00
Kai Bao a9f40df678 not adding wells without perforations to WellsManager 2019-01-08 14:08:14 +01:00
Kai Bao 47b933a58e removing DynamicListEconLimited
it is not used anymore. A lot of related implementation has been moved
to WellTestState.

Its existence makes some logic rather confusing and some new development
not easy.
2019-01-08 11:28:11 +01:00
Kai Bao 60e5a95972 only using Wells for determination of the RESV well
One of them is redundant, we do not need both of them.
2019-01-07 12:14:33 +01:00
Kai Bao 98450b5aa8 fixing the way in handling the RESV rates for WCONHIST 2019-01-04 15:10:18 +01:00
Kai Bao bfc915849a BHP limit is taken care of from parser side
WellsManager does not need to provide default bhp limit anymore.
2019-01-03 09:48:02 +01:00
Kai Bao ecdb299671 handling the RESV well distr calculation correctly
more work has been done in the parser side, and the simulator side is
also updated accoridingly.
2019-01-03 09:48:02 +01:00
Kai Bao 9a6f390f38 Merge pull request #1691 from atgeirr/fix-missing-grat
Fix missing GRAT in switch.
2019-01-02 21:22:41 +01:00
Kai Bao b3f29de675 using compressed cell index for cellToConnectionIdx_ in AquiferCarterTracy 2019-01-02 14:59:12 +01:00
Kai Bao dcf036e757 removing some white spaces. 2019-01-02 13:39:00 +01:00
Kai Bao f5648b13a1 adding --use-multisegment-well=true to msw-model-1 test 2018-12-19 16:36:56 +01:00
Kai Bao 3a55e4aac2 fixing grid_index for AquiferCarterTracy
adding the mapping from cartisian indices to the actual grid indices.
2018-12-14 15:36:49 +01:00
Kai Bao 0c42a179d5 makig StandardWellV can handle producer
now StandardWellV should be able to be used as the general Standard
Well.
2018-12-14 10:24:08 +01:00
Kai Bao 76edcc0d91 addressing the second part of comments form PR#1680 2018-12-13 21:31:36 +01:00
Kai Bao c4254240e2 addressing the first part of comments form PR#1680
there should be no functional change.
2018-12-13 13:29:59 +01:00
Kai Bao 1ddcfcb679 adding test for polymer_injectivity 2018-12-12 16:24:24 +01:00
Kai Bao 5535406b67 cleaning StandardWell and StandardWellV
to make them more comparable, so that we can do refactoring easier
later.
2018-12-12 15:58:15 +01:00
Kai Bao c9d9023039 addressing reviewing comments from PR #444 2018-12-12 14:50:22 +01:00
Kai Bao 932e4d1bf1 cleaning up of the code
there should be no functionality change
2018-12-11 21:55:20 +01:00
Kai Bao 31c18bd70e adding the functionality to track the polymer molecular weight
it is used to evaluate the water-polymer mixture viscosities
2018-12-11 21:55:20 +01:00
Kai Bao 167306169b including the injectivity program to flow 2018-12-11 21:41:44 +01:00
Kai Bao 525caad508 finishing the function addWellContributions for StandardWellV 2018-12-11 21:40:47 +01:00
Kai Bao 612ac74b89 finish the injecivity functionality
the result looks okay
2018-12-11 21:40:47 +01:00
Kai Bao 391d31e1d6 adding the polymer molecular related to the well model 2018-12-11 21:40:47 +01:00
Kai Bao 7923628f83 adding the few injectivity related functions to StandardWellV 2018-12-11 21:40:47 +01:00
Kai Bao a08216efd5 creating StandardWellV as the new well model
to employ dynamic-size Evalution, vectors and matrices.
2018-12-11 21:40:47 +01:00
Kai Bao b079c0a1e5 adding flow_injecitivity executable target 2018-12-11 21:40:47 +01:00
Kai Bao e1ede3c9d5 adding polymer molecular weight to BlackoilPhases and phaseUsageFromDeck 2018-12-11 21:31:47 +01:00
Kai Bao 93fb5a2c52 add a few fields related to injectivity to WellStateFullyImplicitBlackoil
to account for the water throughput, skin pressure and water velocity
for each perforation.
2018-12-11 21:31:47 +01:00
Kai Bao 575907941d removing some repeated code in phaseUsageFromDeck 2018-11-27 14:55:26 +01:00
Kai Bao 76271e3960 not shut a well because of cannot-produce-inject reason
which is a numerical reason. Removing it for now for better result.

It minght come back with more complete strategy and understanding.
2018-11-25 20:31:56 +01:00
Kai Bao 3dac7266b0 typo correction and message output adjustment for WTEST
recovering the const for updateWellStateWithTarget

there is no functional change.
2018-11-25 20:31:56 +01:00
Kai Bao 680c45b8f8 not updateWellControl for non-operable wells 2018-11-25 20:31:56 +01:00
Kai Bao eaa3ad19f5 first version of the well testing for physical reason
the key difficulty is that we do not have reliable explicit information
to do the testing.

In this version, we try to obtain the explicit information by finishing
one converged solving.
2018-11-25 20:31:56 +01:00
Kai Bao 7d721408f2 adding canProduceInjectWithCurrentBhp to StandardWell
and use it the operability_status determination.
2018-11-22 07:05:46 +01:00
Kai Bao f9988057af fixing comments from review of PR#1648
there should be no functional change
2018-11-20 13:56:14 +01:00
Kai Bao 8330c3a6a7 adjusting OperabilityStatus of WellInterface
hopefully, it improves the readability
2018-11-20 13:56:14 +01:00
Kai Bao bf9b5367d9 some cleaning up, no functional changes 2018-11-20 13:56:14 +01:00
Kai Bao 90f805bf3e we need to open the cross-flow to solve the sigularity
if a well is banned from cross-flow. When it is under RATE control, its
BHP might be initialized in way causing all the drawdown in the wrong
direction. It will cause singular well equations.

here, we open the croff-flow to fix the singularity and rely on Newton
iteraton to get desired result.

possible alternative approach is to adust the BHP to avoid the situation
that all the drawdown are in the wrong direction.
2018-11-20 13:56:14 +01:00
Kai Bao bba373c0b5 THP control tolerance changed to 1.e4
to fix some convergence problem.
2018-11-20 13:55:34 +01:00
Kai Bao c994a99583 WCON keyword can open a well closed due to physical reason
more tests will be required to figure out more accurate specific way to
open a well closed due to physcal reason with WCON input.
2018-11-20 13:55:34 +01:00
Kai Bao 30742112c6 switching to BHP limit when THP limit is not operable
a well is specified with THP target, while it can not work under its THP
target. For this case, we will switch to its BHP limit.
2018-11-20 13:55:34 +01:00
Kai Bao 8e17d4aeba shut/close well based on physical limits 2018-11-20 13:55:34 +01:00
Kai Bao ea42d1de9d adding function isOperable() to WellInterface
to indicate if the well is operable.
2018-11-20 13:55:34 +01:00
Kai Bao ae3b514e0b not switching to THP/BHP limit when not operable under them 2018-11-20 13:54:45 +01:00
Kai Bao 5204bbe4ca adding function checkWellOperatability() to StandardWell
it includes BHPLimit check, THPlimit check, and also to see whether if
the well can produce/inject in the correct direction.
2018-11-20 13:54:45 +01:00
Kai Bao dbe047a8a5 adding function operabilityCheckingUnderTHP to VFPProdProperties
To test the operability under THP limit.
2018-11-20 13:54:21 +01:00
Kai Bao b27dc3ec2e stopping use function crossflowAllowed()
it turns on the crossflow when all the drawdown in the wrong direction,
then the well get rates in the wrong direction.

flow is not ready to handle this type of situation, then the only result
will be chopped time step.
2018-11-20 13:54:21 +01:00
Kai Bao 2e43b440e0 adding OperabilityStatus to WellInterface
to check the operability status of a well.
2018-11-20 13:54:21 +01:00
Kai Bao 7ded0907fe using control in DECK to initialize the control in WellState
otherwise, it might not be initialized if the well does not exisit in
previous well state, which will result in undefined behavoir.

it causes failure in running some realizations.
2018-11-16 13:47:43 +01:00
Kai Bao 0e1ef4993b Merge pull request #1641 from akva2/fix_sign_unsigned
fixed: signed/unsigned warnings
2018-11-16 09:35:31 +01:00
Kai Bao b2be13ced4 changing std::cout to OpmLog with VFPProdProperties
for better output of information.
2018-11-15 11:46:22 +01:00
Kai Bao 76a3f2a1f5 adding function updateWellStateWithTHPTargetIPR()
this function can update the well state related based on the inflow
perfomance relationship and THP target.
2018-11-15 11:46:22 +01:00
Kai Bao eeae6aa4fc adding two THP control related fucntions to WellInterface
getTHPConstraint() and getTHPControlIndex();
2018-11-15 11:46:22 +01:00
Kai Bao 01efbc639c adding function underPredictionMode() to WellInterface
to indicate whether a well is under prediction mode.
2018-11-15 11:46:22 +01:00
Kai Bao 9bfa39224f re-organize the interface of function findIntersectionForBhp()
hopefully, make it easier to use.

and also, there is no mistake introduced.
2018-11-15 11:46:22 +01:00
Kai Bao 8445c802c0 adding function calculateBhpWithTHPTarget to VFPProdProperties
it calculate bhp value based on THP target/limit, VFP curves and
inflow-performance relationship
2018-11-15 11:46:22 +01:00
Kai Bao 9b5e25ae0f function to calculate bhp from thp through intersection
of VFP curves and IPR relationship.

Some small adjustment of the interface will be done later.
2018-11-15 11:46:22 +01:00
Kai Bao 32b8e79eae adding function updateIPR() to StandardWell 2018-11-15 11:46:22 +01:00
Kai Bao bf967e50a7 adding hasTable() method to the VFP properties
and give a clear message about non-accessible table ID in the function
isVFPActive() in WellInterface.
2018-11-14 14:29:28 +01:00
Kai Bao cf2eb1c336 remove a useless #if HAVE_OPENMP in BlackoilWellModel 2018-11-14 12:47:49 +01:00
Kai Bao 5a5c1bfcd3 addressing review comments from PR 1622 2018-11-14 12:45:41 +01:00
Kai Bao afcdbcf202 detecting the NAN and INF values during VFP calculation
and give warning messages when they happen, since they can be the
culprits of the termination of simulation later.

For ADB related, I did not find a good way to do the detection, so there
is no warning message given.
2018-11-14 11:35:44 +01:00
Kai Bao 32b00b61f8 updating the thp value if VFP table is valid
through function isVFPActive().
2018-11-14 11:27:00 +01:00
Kai Bao 0d1a4b2d13 adding function isVFPActive() for WellInterface
Even the well does not have a THP target/constraint, but if it is
specified with a valid VFP table, we are supposed to update the thp
value for output purposes.
2018-11-14 11:27:00 +01:00
Kai Bao 8f56634b69 fixing different well number between Wells and Well_containers
when the solveWellEq did not get converged.
2018-11-13 20:01:38 +01:00
Kai Bao 2ed2c20f12 Merge pull request #1623 from atgeirr/use-convergencereport-gather
Use gatherConvergenceReport() in BlackoilWellModel.
2018-11-13 15:16:34 +01:00
Kai Bao eb86404934 addressing review comments of PR #1615 2018-11-12 15:20:23 +01:00
Kai Bao 5e736fc4c7 decoupe the rate and fraction relaxation
the relaxation for these two have different goals and problems, it is
wise to decuple them.
2018-11-09 14:28:44 +01:00
Kai Bao 179a505b83 addressing the review comments #1597 2018-11-09 14:28:44 +01:00
Kai Bao 7e17a60c58 relaxation to avoid overshoot during Newton update in StandardWell
Solvent model is not handled yet.
2018-11-09 14:28:44 +01:00
Kai Bao 73f8ed912e detecting whether some well control events happens to a well
When there is some events happen to a well, we use the control mode
 from the DECK, and update the WellState based on the new control model.
 Otherwise, we can use the control mode from the previous well state,
 and keep the values from the previous well state as an intial guess.
2018-11-09 13:36:49 +01:00
Kai Bao 0c24a30459 some cleaning up
no funtionality changes.
2018-10-31 15:32:50 +01:00