Commit Graph

13457 Commits

Author SHA1 Message Date
Joakim Hove
bdeba973fb Add regression testing for ACTIONX + WEFAC 2021-10-01 08:41:25 +02:00
Joakim Hove
33033cd6cc Add actionx testing of GCONPROD 2021-10-01 08:41:25 +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
986930850f
Merge pull request #3539 from totto82/wellOperIter
stop updating operability during iterations
2021-09-30 10:26:26 +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
Bård Skaflestad
e80408d1ed
Merge pull request #3560 from totto82/fixTime
fix date for large time steps also for the interface functions
2021-09-29 22:19:46 +02:00
Markus Blatt
af74de9a5b
Merge pull request #3558 from bska/detect-serializeOp-member
Serializer: Detect Existence of 'serializeOp' Member Function
2021-09-29 16:40:46 +02:00
Tor Harald Sandve
06878a8ca8 fix date for large time steps 2021-09-29 15:43:20 +02:00
Joakim Hove
d0c9f70839
Merge pull request #3556 from joakim-hove/flow-main-catch
Call MPI_Abort() in main catch all clause
2021-09-29 15:11:46 +02:00
Joakim Hove
21c2dd0c1d Use WellTestConfig.empty() instead of size() 2021-09-29 15:05:23 +02:00
Bård Skaflestad
2dedb62363 Serializer: Detect Existence of 'serializeOp' Member Function
More direct test than looking for a 'serializeObject' member.
2021-09-29 13:41:01 +02:00
Bård Skaflestad
93a3e8bc1d
Merge pull request #3557 from joakim-hove/single-well-fixup
Use const reference
2021-09-29 11:53:54 +02:00
Joakim Hove
fc139e844e Use const reference 2021-09-29 11:07:21 +02:00
Markus Blatt
f6ecacf1b7
Merge pull request #3551 from joakim-hove/pinfo-ws
Use SingleWellState to manage parallel well info
2021-09-29 09:59:00 +02:00
Joakim Hove
a527dc7fdd Remove stale TODO 2021-09-28 23:45:40 +02:00
Joakim Hove
3aaaa23ed1 Implement connection rate summation in SingleWellState 2021-09-28 23:45:40 +02:00
Joakim Hove
86a0662381 Use std::reference_wrapper<> for parallel well info 2021-09-28 21:42:57 +02:00
Joakim Hove
cf340644b2 Add ParallelWellInfo member to SingleWellState 2021-09-28 21:42:57 +02:00
Joakim Hove
5d3e56baa3 Call MPI_Abort() in main catch all clause 2021-09-28 20:53:38 +02:00
Joakim Hove
56afec81b4
Merge pull request #3548 from joakim-hove/broadcast-udq+action
Broadcast UDQState and Action state after restart loading
2021-09-28 19:31:53 +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
Atgeirr Flø Rasmussen
e5c85e88ce
Merge pull request #3552 from fgfuchs/cuda_improvements
cusparsesolver wrong size and type in cols,rows fixed
2021-09-28 11:41:17 +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
8943e90e17 Broadcast UDQState and Action state after restart loading 2021-09-28 09:54:15 +02:00
Tor Harald Sandve
70f11a2129
Merge pull request #3554 from joakim-hove/do-glift-opt
Remove unused query/switch code for GLO - it is always on
2021-09-28 09:05:35 +02:00
Joakim Hove
ef12186d78 Remove unused query/switch code for GLO - it is always on 2021-09-27 14:11:54 +02:00
Franz Georg Fuchs
a0ccd1e754 cusparsesolver wrong size and type in cols,rows fixed 2021-09-27 13:53:26 +02:00
Joakim Hove
edb2c4abb2
Merge pull request #3549 from joakim-hove/serialize-set
Add serializer support for set - closely modelled after map
2021-09-27 13:47:15 +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
Joakim Hove
064d134711 Add serialize test for UDQState 2021-09-25 11:51:59 +02:00
Joakim Hove
7c358b17df Add serialise test for Action::State 2021-09-24 18:55:54 +02:00
Joakim Hove
1b7ef65509 Add serializer support for set - closely modelled after map 2021-09-24 18:55:54 +02:00
Bård Skaflestad
b63a4ea3a3
Merge pull request #3546 from totto82/fixWSOL
updateWsolvent only after well container is created
2021-09-24 13:41:47 +02:00
Tor Harald Sandve
9381b0857b updateWsolvent only after well container is created 2021-09-24 12:09:02 +02:00
Markus Blatt
e0f7b082c1
Merge pull request #3542 from blattms/unordered_map-compressed2cartesian
Save space for cartesianToCompressed mapping.
2021-09-24 10:24:34 +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
Bård Skaflestad
1dc3832966
Merge pull request #3540 from hakonhagland/python_set_sched
Initialize blackoil simulator from Opm::Schedule shared with Python.
2021-09-23 13:32:31 +02:00
Håkon Hægland
7a394df43f Include <stdexcept> header to use std::logic_error()
And some minor stylistic changes.
2021-09-23 13:13:23 +02:00
Håkon Hægland
16bbc338ab Don't increase shared_ptrs use_count when forwarding.
Use std::move() to avoid increasing the use count of std::shared_ptr
when forwarding them to the vanguard object.
2021-09-23 10:56:18 +02:00
Håkon Hægland
4c5245196b Changed calling convention for shared pointers.
Expect non-reference type shared pointers arguments instead of references
to shared pointer. This will make it clear to the caller that the called
function is making a copy of the pointer for its own use and not trying
to modify the original pointer of the caller.
2021-09-22 23:49:13 +02:00
Bård Skaflestad
95e64e86f6
Merge pull request #3543 from joakim-hove/load-action-state
Load Action state from restart file
2021-09-22 21:56:53 +02:00
Bård Skaflestad
512f4c95b1
Merge pull request #3532 from totto82/aqnumco2store
combine co2store and numerical aquifers
2021-09-22 21:42:29 +02:00
Joakim Hove
f581208fa0 Load Action state from restart file 2021-09-22 12:43:10 +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