Commit Graph

585 Commits

Author SHA1 Message Date
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
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
Tor Harald Sandve
9c8f778495 Compute the group rates that takes into account limitation on the sublevels 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
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
Arne Morten Kvarving
9f78e0454d move guideRateUpdateIsNeeded into BlackoilWellModelGuideRates 2022-10-28 23:33:05 +02:00
Arne Morten Kvarving
cc306a45b4 move updateGroupIndividualControl into BlackoilWellModelConstraints 2022-10-28 19:32:06 +02:00
Tor Harald Sandve
7b90d35f21 fixup from PR comments 2022-10-18 12:58:07 +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
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
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
Arne Morten Kvarving
15f1ec0c3a BlackoilWellModel: use elements range generator 2022-10-13 23:01:37 +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
654f9e2c2d
Merge pull request #4135 from totto82/checkGroupConstrainsFromTop
check group constraints from top
2022-10-03 14:32:46 +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
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
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
Kai Bao
734b9a792f removing function localWellsActive() 2022-09-14 14:17:02 +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
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
Tor Harald Sandve
7571215f44 some cleanup 2022-09-13 08:33:51 +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
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
Arne Morten Kvarving
004e7e55fb avoid two communication calls
one less network latency cost
2022-08-31 12:54:47 +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
b1b23a57de Add option for explicit vfp lookup for problmatic wells 2022-08-19 10:33:19 +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
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
8f5e0940fe restructuring to be able to call without local indices 2022-08-09 11:09:48 +02:00
Elyes Ahmed
5c2b60bcd0 rebasing 2022-07-28 20:40:34 +02:00
Elyes Ahmed
cd169660e8 rewriting MaxWellConnections 2022-07-08 13:44:38 +02:00
Atgeirr Flø Rasmussen
7fe3839500 Use MatrixBlock consistently, also whitespace cleanup. 2022-06-10 11:08:24 +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
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
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
Kai Bao
57d8f1aa24 update primary variables in prepareTimeStep
it should not change running results.
2022-05-02 13:47:16 +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
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
e2e0ec9dd9 fix to --shut-unsolvable-wells=true option 2022-04-05 14:42:27 +02: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
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
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
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
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
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
Joakim Hove
6b92443cb4 Downstream filesystem reorganisation in opm-common 2022-01-02 14:33:34 +01: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
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
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
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
Arne Morten Kvarving
7bce64cde9 use multi-var broadcast for rates 2021-11-10 08:56:04 +01:00
Tor Harald Sandve
d2fd5505ca Check group production LRAT and WRAT targets 2021-11-09 08:24:57 +01: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
Markus Blatt
23e0b06387 Allow communicators other than MPI_COMM_WORLD. 2021-10-19 12:44:41 +02:00
Tor Harald Sandve
1cfe3e0aad remove cartesian to compressed vector 2021-10-19 11:03:46 +02:00
Atgeirr Flø Rasmussen
5e1853b8e4
Merge pull request #3588 from totto82/improve_switch_output
make multiple well control switching output more readable
2021-10-14 10:56:53 +02:00
Tor Harald Sandve
83ef3730b2 make multiple well control switching output more readable 2021-10-14 09:40:34 +02:00
Joakim Hove
b6d043c545
Merge pull request #3580 from joakim-hove/wtest-rename
Remove ecl wells argument to check wells for testing
2021-10-10 09:54:16 +02:00
Markus Blatt
fc7609bfd2 [bugfix] Make sure all ranks participate in collective communication.
No need an early return if there are no local wells, anyway. The
algorithms can handle empty containers like a charm.
2021-10-08 16:01:18 +02:00
Markus Blatt
1520f9c85f [bugfix] handle exception when linearizing the wells.
As multisegment wells may throw in applyUMFPack this is now needed and
the exception needs to communicated to all processes. We do this in
the linearize method of the well model.

Before this change this is what could happen:
- The process with the exception would have chopped the time step
- The others would have successfully setup the systems and entered the
  linear solve

This  poduced a deadlock. One processes was waiting in
OPM_END_PARALLEL_TRY  during the setup of the shorter time step and in
collective communication during the setup of the linear solver for the
unchopped time step.
2021-10-08 16:01:07 +02:00
Joakim Hove
0ca1f7a8b2 WellTestState::updateWells -> WellTestState::test_wells 2021-10-08 15:23:03 +02:00
Joakim Hove
0e9d634397 Do not pass ecl wells to WellTestState::updateWells() 2021-10-08 15:17:43 +02:00
Joakim Hove
0648d6bf5d WellTestState::openWell -> WellTestState::open_well 2021-10-08 10:17:14 +02:00
Joakim Hove
d806762f7a WellTestState::hasWellClosed -> WellTestState::well_is_closed 2021-10-08 10:17:14 +02:00
Joakim Hove
ce78326ac1 WellTestState::openAllCompletions -> WellTestState::open_completions 2021-10-07 14:53:06 +02:00
Markus Blatt
011fb1034e
Merge pull request #3571 from atgeirr/allow-non-world-comm
Replacing use of MPI_COMM_WORLD with a variable communicator.
2021-10-06 15:52:17 +02:00
Joakim Hove
f27a82ebc3 Use plain WellTestState::hasWellClosed() without reason 2021-10-05 16:52:16 +02:00
Elyes Ahmed
f53c597f90 Replacing use of MPI_COMM_WORLD with a variable communicator. 2021-10-05 13:07:52 +02:00
Joakim Hove
2168b8c296
Merge pull request #3563 from totto82/openComp
open completions after well event
2021-09-30 16:43:39 +02:00
Tor Harald Sandve
dc8c9021b5 open completions after well event 2021-09-30 11:40:34 +02:00
Joakim Hove
6e37b9ae05
Merge pull request #3559 from joakim-hove/wtest-config-empty
Use WellTestConfig.empty() instead of size()
2021-09-30 10:31:17 +02:00
Tor Harald Sandve
cb9254636b rename and cleanup 2021-09-30 09:01:07 +02:00
Tor Harald Sandve
bc8da79779 stop checking operability in the beginning of an timestep 2021-09-30 08:47:47 +02:00
Tor Harald Sandve
c9e93e6155 stop updating operability during iterations 2021-09-30 08:47:47 +02:00
Joakim Hove
21c2dd0c1d Use WellTestConfig.empty() instead of size() 2021-09-29 15:05:23 +02:00
Joakim Hove
86a0662381 Use std::reference_wrapper<> for parallel well info 2021-09-28 21:42:57 +02:00
Bård Skaflestad
0b8778e432
Merge pull request #3547 from totto82/makeWTESTrobust
Make wtest more robust
2021-09-28 12:06:10 +02:00
Tor Harald Sandve
c790b14753 Make WTEST more robust
Only open wells that are solvable, operable and economical
2021-09-28 10:07:12 +02:00
Joakim Hove
ef12186d78 Remove unused query/switch code for GLO - it is always on 2021-09-27 14:11:54 +02:00
Markus Blatt
88ae5b5963
Merge pull request #3545 from blattms/fix-parallel-try-catch
[bugfix] Fix deadlocks because of parallel try-catch for some CO2 storage cases
2021-09-27 13:02:34 +02:00
Tor Harald Sandve
9381b0857b updateWsolvent only after well container is created 2021-09-24 12:09:02 +02:00
Markus Blatt
5be027348a Fix buggy interplay of parallel exceptions and communication.
There cannot happen any collective blocking communication within a
parallel try-catch clause if exceptions might be thrown before the
communication. The communication has to either be reached by all
processes or no processes.
2021-09-24 10:17:13 +02:00
Markus Blatt
f64230e462 Remove parallel try-catch from prepareTimeStep because of nestedness.
Although not declared as such, prepareTimeStep seems to be an internal
function (despite usage in a test) and hence error control can be done
in code calling it.

There was the following problem with the try-catch approach taken:
The calling site `BlackoilWellModel::assemble` looked like this:

```
OPM_BEGIN_PARALLEL_TRY_CATCH();
{
    if (iterationIdx == 0) {
        calculateExplicitQuantities(local_deferredLogger); // no parallel try-catch
        prepareTimeStep(local_deferredLogger); //includes parallel try-catch
    }
    updateWellControls(local_deferredLogger, /* check group controls */ true);

    // Set the well primary variables based on the value of well solutions
    initPrimaryVariablesEvaluation();

    maybeDoGasLiftOptimize(local_deferredLogger);
    assembleWellEq(dt, local_deferredLogger);
}
OPM_END_PARALLEL_TRY_CATCH_LOG(local_deferredLogger, "assemble() failed: ",
                               terminal_output_);
```

calculateExplicitQuantities had no parallel-try-catch clause inside,
but prepareTimeStep had one.
Unfortunately, calculateExplicitQuantities might throw (on some
processors). In that case non-throwing processors will try to trigger a
collective communication (to check for errors) in
prepareTimeStep. While the one throwing will move to the
OPM_END_PARALLEL_TRY_CATCH_LOG macro at the end and also trigger a different
collective communication. Booom, we have a deadlock.

With this patch there is no (nested parallel)-try-catch clause in the
functions called. (And if an exception is thrown in prepareTimeStep, it
will be logged as being an assemble failure).

The other option would have been to add parallel-try-catch clauses
to all functions called. That would have created a lot more
synchronization points limiting scalability even further.
2021-09-24 10:15:28 +02:00
Markus Blatt
3cda8a2fdb Added missing parallel try-catch clause for updatePrimaryIntensities.
As Problem::updatePrimaryIntensities might throw we need to do this
to prevent dealocks in parallel run in case problem occurs.
2021-09-24 09:25:44 +02:00
Markus Blatt
a927f8e23b Unify parallel try-catch clauses with Macros and catch everything.
Not a big fan of Macros but here at least they seem ot be the only
option. The problem is that the catch clauses must all catch the same
exceptions that have a entry in ExceptionType, because they might be
nested. In addition we did not have a catch all clause, which is added
now and is needed in case a called method throws an unexpected exception.
2021-09-24 09:25:44 +02:00
Joakim Hove
a11e3222bd
Merge pull request #3534 from joakim-hove/use-single-well-state
Use single well state
2021-09-22 12:35:15 +02:00
Tor Harald Sandve
b294ea5d8b
Merge pull request #3490 from totto82/targUpdate
Update well rates from target during well/group control update
2021-09-22 12:26:29 +02:00
Tor Harald Sandve
eb4997a011 update gpmain before not after timestep 2021-09-21 14:03:35 +02:00
Joakim Hove
b2ac3eaa59
Merge pull request #3535 from totto82/storePrevWellTestState
add well_test_state to WGState
2021-09-21 11:44:58 +02:00
Tor Harald Sandve
30592c7593 update status after WTEST 2021-09-21 10:32:56 +02:00
Tor Harald Sandve
6fa9c05985 add well_test_state to WGState to be able to access last valid wellTestState 2021-09-21 09:30:02 +02:00
Tor Harald Sandve
c6660f0aa2 only update when control is changed 2021-09-21 08:53:25 +02:00
Tor Harald Sandve
dc4436961f update well rates from target 2021-09-21 08:53:25 +02:00
Joakim Hove
5531120411 Use SingleWellState argument instead of full WellState 2021-09-20 11:45:24 +02:00
Markus Blatt
b056557f57 bugfix: Detect exception during beginReportStep in parallel a. abort
Previously, exceptions happening at this stage have deadlocked
flow. E.g.  UniformTabulated2DFunction in opm-material throws
a NumericalIssue if the values passed are outside the tabulated
reason. This function is e.g. called in 2-phase CO2-storage cases
during BlackoilModel::initializeWellState

BTW: This is only the first step as it is not very user friendly that
a simulation aborts at this (late) stage.
2021-09-15 20:50:49 +02:00
Tor Harald Sandve
81d9a8c178 add option for relaxed convergence for stw 2021-09-14 14:32:14 +02:00
Tor Harald Sandve
f203c2106e only compute fip avg pressure when gpmaint 2021-09-10 15:49:02 +02:00
Tor Harald Sandve
3b7cf9a565
Merge pull request #3506 from totto82/relaxWell
relax well convergence for the last newton iterations
2021-09-08 10:46:14 +02:00
Tor Harald Sandve
f3513a31eb add option for relaxed well convergence for the last netwon iterations 2021-09-08 09:58:14 +02:00
Tor Harald Sandve
3b5a040197
Merge pull request #3498 from totto82/gpmaint
Support for gpmaint
2021-09-07 12:38:48 +02:00
Tor Harald Sandve
adda160098 clean-up 2021-09-07 09:47:41 +02:00
Tor Harald Sandve
9d2f26f7e8 Add support for gpmaint 2021-09-07 08:52:52 +02:00
Arne Morten Kvarving
2b1ac22c99 drop aliases for Indices entries
using Indices directly more clearly shows where the data comes
from without having to hop through hoops to do so.
2021-09-06 12:49:01 +02:00
Joakim Hove
579aba8d08 Include perforation data in SingleWellState 2021-08-24 12:46:24 +02:00
Joakim Hove
2f504536f4 Add well potentials to SingleWellState 2021-08-23 12:05:26 +02:00
Tor Harald Sandve
31ac5378cf fix case where wells are shut behind our back 2021-08-19 13:08:33 +02:00
Joakim Hove
c381459804 Add Events member to SingleWellState 2021-08-15 09:03:14 +02:00
Joakim Hove
d5ab308fbd Add temperature to SingleWellState 2021-08-15 09:01:21 +02:00
Tor Harald Sandve
cf61417b6d move update well test state to after potentials are calculated 2021-08-09 13:21:10 +02:00
Bård Skaflestad
5ddac2e8d5
Merge pull request #3406 from GitPaean/new_fixing_guide_rate_update_together
[new attempt] updating the guide rates for all the wells and groups at the same time
2021-06-30 12:40:45 +02:00
Tor Harald Sandve
60f59cd6e6 Potentially reduce gaslift when under well is under group control
Current implemention only support ORAT and GRAT controlled groups
2021-06-30 09:59:09 +02:00
Kai Bao
12fa7a4ac8 putting all the guide rate update function in one single function
to make sure we only do once checking of the expiration of the guide
rates.
2021-06-29 11:41:26 +02:00
Bård Skaflestad
71de144399
Merge pull request #3239 from osae/tracer
Tracer summary curves, collect well rates.
2021-06-25 17:48:40 +02:00
Tor Harald Sandve
0dcd91ac93
Merge pull request #3369 from totto82/grupWellState
handle GRUP in wellState from target
2021-06-24 13:02:24 +02:00
Tor Harald Sandve
5368343512 handle GRUP in wellState from target 2021-06-23 14:46:35 +02:00
Bård Skaflestad
9394a93c68 Don't Create Well Instance for Wells With No Connections
This commit protects against Opm::Well instances for which the sets
of connections are empty.  In those cases, do not put entries in the
well container as there is no influence on the systems of non-linear
equations.
2021-06-22 20:43:21 +02:00
Håkon Hægland
dd1ca3197d Add missing header file to GasLiftGroupInfo.cpp
GasLiftGroupInfo.cpp did not include "config.h" which caused HAVE_MPI
to be undefined causing the file to be compiled with
Dune::Communication<No_Comm> instead of with
Dune::Communication<MPI_Comm>. Which later caused linking problems with files
that used MPI.
2021-06-22 09:52:22 +02:00
Atgeirr Flø Rasmussen
8c5a6b12d5
Merge pull request #3158 from totto82/operability_solve
shut/stop unsolvable wells
2021-06-18 10:13:14 +02:00
Tor Harald Sandve
b5e29684f2 shut/stop unsolvable wells 2021-06-17 11:50:31 +02:00
Håkon Hægland
860cfd9fb5 Fix some sign compare warnings. 2021-06-17 10:44:32 +02:00
Håkon Hægland
fbb24e2a5a Check group limits in gas lift stage 1.
Check group limits in gas lift stage 1 to avoid adding too much ALQ which must
anyway later be removed in stage 2. This should make the optimization
more efficient for small ALQ increment values. Also adds MPI support.
2021-06-16 12:00:54 +02:00
Ove Sævareid
33511b45c1 Relegating implementation details. 2021-06-15 17:18:46 +02:00
Ove Sævareid
581408c760 Batchwise tracer calculations. 2021-06-15 17:18:46 +02:00
Joakim Hove
193657fee1 Use GuideRate value instead of std::unique_ptr<GuideRate> 2021-06-14 14:35:55 +02:00
Joakim Hove
3010b96611 Use PerfData for perforation rates 2021-06-10 07:19:21 +02:00
Bård Skaflestad
7add6b33de
Merge pull request #3363 from totto82/fixRESV2
removed dissolved gas and vapporized oil from RESV injection rates
2021-06-09 09:29:19 +02:00
Tor Harald Sandve
28a567550b removed dissolved gas and vapporized oil from RESV injection rates 2021-06-08 20:17:01 +02:00
Joakim Hove
023edc67e5 Remove first perf member from Well classes 2021-06-08 14:24:26 +02:00
Bård Skaflestad
6c1ca7450f
Merge pull request #3282 from akva2/blackoilwellmodel_generic_split
split out typetag independent code from BlackoilWellModel
2021-06-07 22:13:36 +02:00
Arne Morten Kvarving
0ef68b452a BlackoilWellModel: move runWellPIScaling to generic class 2021-06-07 15:01:10 +02:00
Arne Morten Kvarving
7219f09fdc BlackoilWellModel: mutate well_container_ directly in createWellContainer 2021-06-07 14:49:41 +02:00
Arne Morten Kvarving
2c5942595c BlackoilWellModel: put well container init in a separate method 2021-06-07 14:35:34 +02:00
Arne Morten Kvarving
30a59cd190 BlackoilWellModel: move updateWellPotentials to generic class 2021-06-07 14:22:30 +02:00
Arne Morten Kvarving
004abd942b BlackoilWellModel: put code for computing potentials in separate method 2021-06-07 14:09:36 +02:00
Arne Morten Kvarving
b0b0ae20d3 BlackoilWellModel: move some glift stuff to generic class 2021-06-07 13:36:22 +02:00
Arne Morten Kvarving
2b9141035e BlackoilWellModel: move setRepRadiusPerfLength to generic class 2021-06-07 13:36:17 +02:00
Arne Morten Kvarving
c5fae280f3 bring setWSolvent closer to original code
by introducing a getter for generic wells
2021-06-07 13:04:29 +02:00
Arne Morten Kvarving
60e7c90b1e BlackoilWellModel: move calculateEfficiencyFactors to generic class 2021-06-07 12:56:45 +02:00
Arne Morten Kvarving
811afb854b BlackoilWellModel: move updateNetworkPressures to generic class 2021-06-07 12:46:14 +02:00
Arne Morten Kvarving
172d344ab2 BlackoilWellModel: move inferLocalShutWells to generic class 2021-06-07 12:32:01 +02:00
Arne Morten Kvarving
ad4b34dc30 BlackoilWellModel: move forceShutWellByNameIfPredictionMode to generic class 2021-06-07 12:25:04 +02:00
Arne Morten Kvarving
54ff1c4c45 BlackoilWellModel: move hasTHPConstraints to generic class 2021-06-07 12:20:49 +02:00
Arne Morten Kvarving
cf6a3801fb keep a vector of WellInterfaceGeneric* in BlackoilWellModelGeneric
these points to the same objects as well_container_
2021-06-07 12:15:36 +02:00
Arne Morten Kvarving
059140f2ee split out typetag independent code from BlackoilWellModel 2021-06-07 12:04:06 +02:00
Arne Morten Kvarving
4c09b5dde3 add WellInterfaceEval 2021-06-07 08:26:43 +02:00
Joakim Hove
32a6f32660 Use WellContainer to manage perf phase rate 2021-06-05 07:50:56 +02:00
Joakim Hove
6a21371b59 Use WellContainer to manage perf phase rates 2021-06-04 18:23:20 +02:00
Joakim Hove
1285d02873
Merge pull request #3339 from joakim-hove/perf-well-access
Perf well access
2021-06-04 08:41:47 +02:00
Joakim Hove
cb800abd05
Merge pull request #3345 from atgeirr/silence-warnings
Silence warnings
2021-06-03 17:25:47 +02:00
Joakim Hove
1a6737aff3 Use well index for perforation rates 2021-06-03 13:29:45 +02:00
Atgeirr Flø Rasmussen
8e6e1c3d5e Remove unused PhaseUsage data member. 2021-06-03 13:02:31 +02:00
Joakim Hove
ac12c8b3a4 Use SegmentState for rates 2021-06-03 10:46:26 +02:00
Joakim Hove
eac69061c2 Use SegmentState when copying pressure 2021-06-03 10:46:04 +02:00
Arne Morten Kvarving
168fc070e9 GasLiftStage2: remove unused simulator param 2021-05-27 21:52:42 +02:00
Arne Morten Kvarving
09ec1e4088 GasLiftStage2: pass comm 2021-05-27 21:52:42 +02:00
Arne Morten Kvarving
26530e60e4 GasLiftStage2: pass schedule 2021-05-27 21:52:42 +02:00
Arne Morten Kvarving
f034ca981e GasLiftStage2: pass summary state 2021-05-27 21:52:42 +02:00
Bård Skaflestad
66443c63fb
Merge pull request #3299 from akva2/gasliftstage2_break_circular
GasLiftStage2: drop circular dependency for BlackoilWellModel
2021-05-27 18:31:44 +02:00
Joakim Hove
5ac53f8106 Use well index for segment rates 2021-05-27 10:45:33 +02:00
Joakim Hove
34ef516472 Use well index for segment pressure 2021-05-27 10:45:33 +02:00
Arne Morten Kvarving
378efd0ff9 GasLiftStage2: drop circular dependency for BlackoilWellModel 2021-05-25 12:57:24 +02:00
Joakim Hove
ab5c937268 Use well index for PerfPhaseRates 2021-05-24 09:25:19 +02:00
Joakim Hove
da94a16d3e
Merge pull request #3288 from joakim-hove/actionx-event
Make sure well potentials are recalculated for ACTIONX wells
2021-05-22 19:09:00 +02:00
Joakim Hove
a3082f66ed Make sure well potentials are recalculated for ACTIONX wells 2021-05-21 16:05:11 +02:00
Joakim Hove
23180e06d2 Rename WellStateFullyImplicitBlackoil -> WellState 2021-05-21 15:07:21 +02:00
Joakim Hove
506a349085
Use wellcontainer2 (#3255)
Use WellContainer<> to manage members in WellState
2021-05-20 16:16:12 +02:00
Joakim Hove
db731ac1ad Use well local indices when iterating over segments 2021-05-20 08:17:19 +02:00
Joakim Hove
1e9a5195e9 Add rst_ prefix to restart variables 2021-05-20 07:47:55 +02:00
Bård Skaflestad
e3e4c2e96a
Merge pull request #2980 from totto82/cleanUpPot
Only compute potentials at beginTimeStep after an event
2021-05-19 19:10:55 +02:00
Joakim Hove
203cc2ff73 Update WellState::temperature() 2021-05-19 10:05:11 +02:00
Joakim Hove
3ec7feba75 Update WellState::bhp() 2021-05-19 10:05:11 +02:00
Joakim Hove
846809ec29 Rename mutable perfPhaseRates() 2021-05-11 18:48:05 +02:00
Joakim Hove
83f32729fc Fix function argument 2021-05-11 08:10:49 +02:00
Joakim Hove
b832b00ca3
Merge pull request #3221 from joakim-hove/distribute-events
Distribute events
2021-05-11 07:24:00 +02:00
Tor Harald Sandve
55dfc84067
Merge pull request #3176 from totto82/refactorPrepareTimeStep
move solveWellEquation inside prepareTimeStep
2021-05-10 16:35:16 +02:00
Tor Harald Sandve
c87c2666d1
Merge pull request #3184 from totto82/fixZeroInit
Improve initialization of the well rates for trivial rates
2021-05-10 08:53:16 +02:00
Joakim Hove
f52398a32e Use WellContainer<Events> to manage per well events 2021-05-09 16:42:50 +02:00
Tor Harald Sandve
62d902435a move solveWellEquation inside prepareTimeStep 2021-05-07 08:51:15 +02:00
Joakim Hove
a1f1d1047e Use mutable WellGroupEvents instance to track events in WellState 2021-05-06 14:02:03 +02:00
Tor Harald Sandve
1cd6ea14a9 only compute well potential when needed 2021-05-06 12:59:02 +02:00