Commit Graph

450 Commits

Author SHA1 Message Date
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