Commit Graph

2785 Commits

Author SHA1 Message Date
Bård Skaflestad
68975be966 Add Accumulating Mapping Structure for Inter-Region Flows
This commit introduces a new helper facility,

    data::InterRegFlowMap

that knows how to interpret region IDs.  It is a simple wrapper
around a common CSR representation of (source, destination) region
ID pairs with the additional feature that the element type of the
connection is a linear sequence values of arithmetic type.  We've
initially elected to make this sequence out of 'float' in order to
conserve memory since we expect to do little arithmetic to the
sequence itself outside of compression and parallel communication.

Client code will be of two primary categories

  1. Producing side which inserts flow rates from individual
     connections, compresses the result when done, and communicates
     the results to one or more parallel I/O ranks

  2. Consuming side, typically on an I/O rank, which merges the
     contributions from multiple source ranks and extracts values
     pertaining inter-region flows for purpose of outputting time
     series data to a summary file.

The first case will create and populate 'FlowRates' and add these
into the container using the 'addConnection' function and finally
call 'compress' when complete.  Consumers will then use member
function 'getInterRegFlows' to extract a signed view of flow rate
values associated to a particular region ID pair (nullopt if no such
pair is registered).
2022-02-16 23:28:46 +01:00
Bård Skaflestad
7ef3d6c0b3 Add Protocol to Linearise Connection Flow Rates Into Subrange
This commit introduces a wrapper for a linear subrange of
consecutive elements of an arithmetic type that imposes an ordering
of the elements when treated as directional component surface flow
rates.  The wrapper distinguishes negative from positive flow rate
contributions and tracks those separately.  This is a building block
for accounting for the inter-region flows in a parallel context.
2022-02-16 23:28:46 +01:00
Bård Skaflestad
55a7d0af19 Retrieve FIP Arrays of Inter-Region Flows
This commit adds a new query

    SummaryConfig::fip_regions_interreg_flow

that retrieves the set of FIP array names (e.g., FIPNUM and FIPXYZ)
that are associated to any inter-region flow summary keywords.  This
query method returns an empty set if there are no inter-region flow
summary keywords.
2022-02-04 20:38:10 +01:00
Joakim Hove
d55f5fa5f5 Allow ACTIONX with empty condition
Allow ACTIONX keywords with empty conditions, these ACTIONX keywords will always
evaluate to false. Main motivation is to facilitate dummy keywords for PYACTION.
2022-01-31 15:10:40 +01:00
Joakim Hove
0b27fd8e18 Remove unused function 2022-01-31 10:18:00 +01:00
Joakim Hove
343f14dacf Record and act on return value from PYACTION 2022-01-28 12:05:17 +01:00
Joakim Hove
4928782cf4 Add Schedule member to the msim class 2022-01-28 12:05:17 +01:00
Joakim Hove
46b663218a Enable running normal ACTIONX keywords from PYACTION
The run() function invoked by PYACTION has got a new fifth argument which is a
callable the script should utilize to apply the keywords from an ACTIONX
keyword. The callable is implemented as C++ lambda which will run the
Schedule::iterateScheduleSection() method and make sure an updated
SimulatorUpdate variable can be passed back to the simulator.
2022-01-25 10:04:43 +01:00
Joakim Hove
8a0e1b21b9 Merge pull request #2932 from joakim-hove/pyaction-applyaction
Pyaction applyaction
2022-01-24 08:20:14 +01:00
Joakim Hove
9a80c00828 Merge pull request #2933 from blattms/rename-workarea.cpp-to-workarea.hpp
Renames header tests/WorkArea.cpp to tests/WorkArea.hpp
2022-01-23 10:54:07 +01:00
Markus Blatt
274cee38c7 Renames header tests/WorkArea.cpp to tests/WorkArea.hpp 2022-01-21 10:18:56 +01:00
Bård Skaflestad
5a2876642e Make SummaryConfig Nodes for Inter-Region Flows
This commit adds new nodes pertaining to the inter-region flows to
the summary configuration keyword list.  We combine the pair of
region IDs into a single 'NUMS' value as part of creating the node.
We also split inter-region nodes into a "supported" and an
"unsupported" set, with the former containing the oil, gas, and
water keywords.

While here, also correct a misprint in a diagnostic message which I
noticed as part of developing the new feature.
2022-01-20 09:57:15 +01:00
Bård Skaflestad
4b2a37a39e Split Combined Vector ID Calculation Out to Helpers
This commit introduces new helper functions

    int EclIO::combineSummaryNumbers(int, int)
    tuple<int, int> EclIO::splitSummaryNumber(int)

that know about the relation

    combined = n1 + 32768*(n2 + 10)

This relation is typically used to combine one-based region IDs for
inter-region flows into a single 'NUMS' entry in the summary file.
2022-01-20 09:47:18 +01:00
Joakim Hove
9ce5ca2b21 Pass matching wells to Schedule::applyAction() 2022-01-20 08:22:21 +01:00
Joakim Hove
b62b5be44f Remove unused argument sim_time from Schedule::applyAction() 2022-01-20 08:12:10 +01:00
Bård Skaflestad
2fe8b4c802 Recognize Additional Inter-Region Flow Summary Vector Keywords
This commit adds support for recognizing additional inter-region
flow rate/cumulatives at the parser level.  In particular, we now
have input support for the E300-compatible keyword strings

    R[OGW]F(R[-+]?|T[-+])

(e.g., ROFR, RGFT-, or RWFR+).  This, in turn, ensures that the
parsing process does not abruptly terminate when encountering such
summary keywords.  This is also a necessary step towards supporting
actually calculating those summary vectors, but we presently do not
support doing so.

Expand the minimum, input-reading only, corresponding unit test to
include the oil, gas, and water varieties of the new keyword strings.

While here, also properly classify the per-phase gas cumulatives

    RGFTG, RGFTL

as inter-region summary vectors.  These were inadvertently listed as
per-region vectors (i.e., in the REGION_PROBE instead of in the
REGION2REGION_PROBE).
2022-01-14 09:48:33 +01:00
Joakim Hove
24e58e36aa Merge pull request #2925 from joakim-hove/fnmatch
Use std::regex to implement fnmatch()
2022-01-11 13:36:43 +01:00
Joakim Hove
c50eb01bb0 Implement fnmatch() in Opm::shmatch() with std::regex 2022-01-11 11:14:11 +01:00
Tor Harald Sandve
dcf3c42a33 add perm multiplier aquifer 2022-01-07 10:58:48 +01:00
Joakim Hove
4b8f2f9814 Downstream of opm-common filesystem reorganisation 2022-01-02 14:32:39 +01:00
Joakim Hove
0a59bd8f61 Filesystem rename EclipseState/Schedule/ Schedule/ 2022-01-02 14:32:14 +01:00
Joakim Hove
aede532b9a Filesystem rename parser/eclipse/ input/eclipse 2022-01-02 14:32:14 +01:00
Atgeirr Flø Rasmussen
a8665b77d9 Fix driver, as POSIX or BSD getopt() stops on first non-option argument. 2021-12-21 18:40:38 +01:00
Joakim Hove
435e7cf146 Merge pull request #2888 from joakim-hove/gconinje-rst
Gconinje rst
2021-12-20 10:11:28 +01:00
Joakim Hove
ad420a2b02 Save guiderate injection settings for group injection 2021-12-20 09:19:49 +01:00
Bård Skaflestad
8306b7039f Extract Existence Predicate for Well BHP Reference Depth
This commit adds a new member function,

    bool Well::hasRefDepth() const

that allows the caller to query whether or not a particular well has
an active value for the well BHP reference depth.  The most common
cause of this value being missing is that the depth item of WELSPECS
is defaulted while the well is not connected to any active cells.

This predicate allows client code, e.g., the restart output module,
to safely access reference depth values in the case of potentially
missing reference depths.
2021-12-17 12:45:55 +01:00
Joakim Hove
e4be1e83b0 Log well and group names encountered in ACTIONX 2021-12-13 18:33:14 +01:00
Joakim Hove
aabc3b999b Utility class Action::WGNames to manage names introduced in ACTIONX 2021-12-13 18:33:14 +01:00
Tor Harald Sandve
e2b0ad581c Merge pull request #1956 from goncalvesmachadoc/watvap
Finalize VAPWAT keyword
2021-12-09 15:37:04 +01:00
goncalvesmachadoc
805686dad2 clean test 2021-12-08 17:43:21 +01:00
Bård Skaflestad
84bf899380 Merge pull request #2593 from plgbrts/salt_prec
salt solubility table allowing specification of solubility per region
2021-12-08 15:52:18 +01:00
Paul Egberts
48124f12f4 added test for solubility table for 2 regions 2021-12-06 21:43:42 +01:00
Torbjørn Skille
5306fb1db8 updates of ESmry and ExtESmry
* add function for returning root name
 * add function for returning io (opening and loading)
 * rename member function LoadData() to loadData()
2021-12-04 09:59:58 +01:00
Joakim Hove
2a612b5c64 Allow using mode LIFT in WELTARG 2021-12-03 10:39:02 +01:00
Paul Egberts
3ead0f48d2 add test for salt solubility table 2021-12-02 16:43:54 +01:00
Joakim Hove
77053495b0 Add Runspec argument to Restart header constructor 2021-11-30 11:23:13 +01:00
Joakim Hove
c4bdff2b39 ScheduleDeck constructed with time_point argument 2021-11-26 09:11:53 +01:00
Joakim Hove
2d0e92750d Merge pull request #2866 from joakim-hove/schedule-dump
Implement schedule dump to deck functionality
2021-11-25 11:10:11 +01:00
Jostein Alvestad
4585f2499d changes to correct test_AggregateNetwork 2021-11-24 13:27:21 +01:00
Joakim Hove
48854bfbeb Use std::optional<> for tracer details 2021-11-23 15:01:11 +01:00
Joakim Hove
c081a764a7 Implement schedule dump to deck functionality 2021-11-23 15:00:33 +01:00
Joakim Hove
f572937529 Add template<> Deck::get<T>() to get keywords 2021-11-23 14:06:37 +01:00
Daniel
90ce7bc6cb Replaced call to Deck::getKeyword(kw, index) with deck[kw][index] 2021-11-23 14:00:38 +01:00
Daniel
b0f757eb50 Replace Deck::getKeyword(std::string) with operator[std::string] 2021-11-23 14:00:38 +01:00
Joakim Hove
1839dcdbd5 Assign tracer data to XWEL 2021-11-22 16:27:17 +01:00
Joakim Hove
b00707ff84 Assign tracer data to SWEL 2021-11-22 16:27:17 +01:00
Joakim Hove
6d669c9b6c Merge pull request #2853 from joakim-hove/wstats
WSTAT
2021-11-22 09:50:04 +01:00
Joakim Hove
78a90e1dec Create Network::Balance constructor based on default values 2021-11-18 15:29:38 +01:00
Joakim Hove
b1e889f619 Update deck access api 2021-11-18 15:12:30 +01:00
Joakim Hove
07a5fb22c3 Handle string output for WSTAT to RSM file 2021-11-17 12:16:42 +01:00