Commit Graph

4171 Commits

Author SHA1 Message Date
Joakim Hove
7f8578ea96 Merge pull request #2020 from joakim-hove/fmwia
Fmwia
2020-10-14 14:22:38 +02:00
Joakim Hove
dd34f2d831 Maintain whether a well has ever injected 2020-10-14 00:39:48 +02:00
Joakim Hove
ead5a19209 Extract update of guide rate model into separate function 2020-10-13 09:52:33 +02:00
Bård Skaflestad
6f20858d73 Record Event if WellConnections Change
This is different from COMPLETION_CHANGE which is unconditionally
recorded when processing COMPDAT.  This event is recorded only when
the Well's internal WellConnections structure actually changes and
informs clients that they may need to rerun any dynamic WELPI
scaling.  Such scaling will not be automatically forwarded onto the
new WellConnections structure.

This is arguably a hack.
2020-10-12 15:10:28 +02:00
Bård Skaflestad
70ef0858f7 Store WELPI Scaling Eligibility as Per-Connection Flag
Greatly simplifies logic in container class (WellConnection).

Suggested by: [at]joakim-hove
2020-10-08 11:19:04 +02:00
Bård Skaflestad
f384269133 Represent Assigned PI as an optional<>
Suggested by: [at]joakim-hove
2020-10-08 11:19:04 +02:00
Bård Skaflestad
fa7d8bc28c Add Support Infrastructure for WELPI Feature
This commit adds logic implementing the static parts of the WELPI
keyword.  We internalize the keyword data, record appropriate events
and provide hooks for dynamically adjusting the per-connection
transmissibility factor (Connection::CF()) when those events occur.
We implement support at three levels

  - WellConnections:
    Add new public member functions prepareWellPIScaling and
    applyWellPIScaling which, respectively, creates bookkeeping
    data to track those connections which are subject to CF scaling
    and actually applies that CF scaling.

  - Well:
    Add new data member 'productivity_index' which holds the 'WELPI'
    data value from the input keyword (converted to SI) and new
    member functions updateWellProductivityIndex and
    applyWellProdIndexScaling.  The first follows the 'update*'
    protocol (return 'true' if state change) and assigns new values
    to 'productivity_index' while the second uses the stored PI
    value and a dynamically calculated effective PI value to rescale
    the pertinent connections' CF value.

  - Schedule:
    Add new member function handleWELPI which internalizes the WELPI
    keyword and its data and records WELPI events for subsequent
    playback in the simulator layer.

Also add a set of unit tests to exercise the new features at all
levels.
2020-10-08 11:19:03 +02:00
Bård Skaflestad
de5e3d90cd Miscellaneous Cleanup Changes
In particular, include standard library headers as needed, fix
function declarations (operator<<() for Well::WellProductionProperties),
and make a few helper functions 'static' to avoid warnings of the
form "no previous declaration for".

For the Schedule's keyword handlers, also switch to storing member
function pointers directly instead of std::function objects.  This
saves space and does not incur function pointer conversions.  Use
std::invoke to call those handlers to avoid having to spell out the
'->*' operator.
2020-10-08 11:19:03 +02:00
Bård Skaflestad
36e3a25782 Use Explicit Powers of Two for Events Enumerators
Suggested by [at]joakim-hove
2020-10-08 11:19:03 +02:00
Bård Skaflestad
a5a18fea9e Add Convenience Predicate WellConnections::empty
Replace expressions comparing size() to 0 with calls to empty().
2020-10-07 22:29:18 +02:00
Joakim Hove
a33fd2483f Updates to well control mode reported in IWEL
With this commit the IWEL[ActWCtrl] is assigned a value independently of the
wells OPEN / SHUT status.

With this PR the index enum value Status is used instead of the previously used
item11. Also numerical constants are introduced for eclipse status values for
Shut, Stop, Open and Auto.
2020-10-07 18:28:11 +02:00
Joakim Hove
23faea7b81 Merge pull request #1996 from wito/required-keywords
Required and Prohibited Keywords
2020-10-07 09:06:42 +02:00
Atgeirr Flø Rasmussen
a56eb48b85 Fix struct/class warning. 2020-10-06 15:54:11 +02:00
Joakim Hove
20e253a27a Merge pull request #1997 from joakim-hove/group-constructor
Add Group constructor based on RstGroup
2020-10-06 14:52:31 +02:00
Joakim Hove
1ec834dd71 Add Group constructor based on RstGroup 2020-10-06 13:16:33 +02:00
Bård Skaflestad
33d09936c3 Merge pull request #1719 from GitPaean/aquifer_keywords
adding aquifer summary keywords
2020-10-05 22:49:32 +02:00
Williham Williham Totland
7aba0cd976 Implements required and prohibited keywords. 2020-10-05 13:34:35 +02:00
Williham Williham Totland
bd3242fe05 Adds getters/setters for required and prohibited keywords. 2020-10-05 11:37:18 +02:00
Kai Bao
995316e97c handling unknown aquifer in SUMMARY section 2020-10-05 00:27:28 +02:00
Kai Bao
fd773423b0 adding the following aquifer summary keywords
AAQR, AAQT, AAQP
2020-10-02 13:18:51 +02:00
Joakim Hove
1206570da5 Edit msg 2020-10-02 10:30:37 +02:00
Williham Williham Totland
4c016660d8 Logs simulation time advance information (level: info). 2020-10-02 10:30:37 +02:00
Joakim Hove
fbf88e8ce1 Merge pull request #1984 from joakim-hove/remove-value
Remove homemade optional - use std::optional
2020-10-01 15:23:55 +02:00
Joakim Hove
6dc84b67df Remove homemade optional - use std::optional 2020-10-01 13:53:58 +02:00
Joakim Hove
0475ccdb77 Merge pull request #1978 from joakim-hove/schedule-skriprest-refactor
Changes in schedule iterate section for restarts
2020-10-01 07:47:50 +02:00
Joakim Hove
5f45f20be6 Merge pull request #1982 from blattms/fix-some-valgrind-warnings
Fix some warnings when running with valgrinds MPI wrapper.
2020-09-30 19:43:30 +02:00
Markus Blatt
d99aa0d497 Fix some warnings when running with valgrinds MPI wrapper.
It warns whenever uninitialized data is sent.
2020-09-30 18:26:48 +02:00
Joakim Hove
42f1278db3 Changes in restart TimeMap and Schedule::iterateSection
This commit changes two aspects of restarts where well and group information is
assembled from the restart file:

 o We require the restart date to be present in the Schedule file as a DATES
   keyword.

 o SKIPREST behavior is implemented unconditionally for restarts with restart
   files, even if the SKIPREST keyword is not present.
2020-09-29 23:00:16 +02:00
Joakim Hove
e01400fa18 Add KeywordLocation argument to ParseContext::handleError() 2020-09-29 09:56:07 +02:00
Joakim Hove
94b4c509b1 Add KeywordLocation argument to UDQ parser 2020-09-29 09:56:07 +02:00
Joakim Hove
751e25ff97 Merge pull request #1963 from joakim-hove/tran-calc-condense
Tran calc condense
2020-09-29 09:34:28 +02:00
Bård Skaflestad
d55d05e552 Merge pull request #1884 from goncalvesmachadoc/outputProdEnergy
Add WEPT and WEPR to Summary
2020-09-28 21:52:53 +02:00
Joakim Hove
8848fde48e Collapse multi record operations on TRAN in one operation
The main content of this commit is that for keywords with multiple TRAN
modifications like

  MULTIPLY
     TRANX 1.50 1 10 1 10 1 1 /
     TRANX 2.50 1 10 1 10 2 2 /
  /

The different operations are collapes to one entry in tran calculator.

This commit also explicitly throws a std::logic_error() exception if TRAN
manipulations are attempted with the OPERATE keyword or one of the region
keywords ADDREG, MULTIREG, EQUALREG or OPERATER.
2020-09-28 21:44:21 +02:00
Cintia Goncalves Machado
dd4de4130a addEnergyRatetoUnitSystem 2020-09-28 13:21:19 +02:00
Joakim Hove
6de1067c45 Make sure to initialize FieldProps::keyword_info for assignment 2020-09-27 10:16:32 +02:00
Joakim Hove
42c711210e Remove stale struct FieldPropsManager::Meminfo 2020-09-27 10:16:32 +02:00
Williham Williham Totland
461d8815a0 Normalises all occurences of size_t to std::size_t 2020-09-25 15:06:08 +02:00
Williham Williham Totland
1de3a84a53 Documents use of the keyword handler dispatcher. 2020-09-25 15:06:08 +02:00
Joakim Hove
ab68722eca Merge pull request #1960 from wito/schedule-keyword-handlers
Moves keyword handlers from Schedule.cpp to KeywordHandlers.cpp
2020-09-25 13:45:05 +02:00
Joakim Hove
629b561f75 Merge pull request #1957 from totto82/salinity
Add keyword SALINITY with unit molality
2020-09-25 12:28:19 +02:00
Williham Williham Totland
86eb1bf94e Renames handleEXIT to applyEXIT. 2020-09-25 10:12:55 +02:00
Tor Harald Sandve
dfdb844d69 add SALINITY. Unit is molality [mol/kg] for all unit systems 2020-09-25 09:39:11 +02:00
Joakim Hove
b9f95089b9 Merge pull request #1949 from joakim-hove/error-prepare
Error prepare
2020-09-24 07:33:22 +02:00
Bård Skaflestad
1dd1b71095 PVTO: Switch to Using {fmt} Backend for Formatting
This commit switches the custom diagnostic message formatting based
on std::ostringstream to using a formatter implemented in terms of
the fmt::format function.  This removes the custom indentation from
earlier.  Note that we output at most four records to the console,
including a message limit notification if applicable, and that this
limit is currently not adjustable by the user.  We do on the other
hand output all flipped records to the .PRT file.

New Example Diagnostic Output:

  * To the Console

    Warning: Non-Monotonic Oil Formation Volume Factor Detected in Keyword PVTO, PVTNUM=1
    In /path/to/PVTO.INCL line 6
    Record  9: FVF 1.234 at RS 123.456 is not greater than FVF 2.345 at RS 121.212
    Record 10: FVF 1.233 at RS 123.457 is not greater than FVF 1.234 at RS 123.456
    Record 11: FVF 1.233 at RS 123.460 is not greater than FVF 1.233 at RS 123.457
    Report limit reached, see PRT-file for additional records.

  * In the PRT File (Unlimited Records)

    Warning: Non-Monotonic Oil Formation Volume Factor Detected in Keyword PVTO, PVTNUM=1
    In /path/to/PVTO.INCL line 6
    Record  9: FVF 1.234 at RS 123.456 is not greater than FVF 2.345 at RS 121.212
    Record 10: FVF 1.233 at RS 123.457 is not greater than FVF 1.234 at RS 123.456
    Record 11: FVF 1.233 at RS 123.460 is not greater than FVF 1.233 at RS 123.457
    Record 12: FVF 1.233 at RS 123.461 is not greater than FVF 1.233 at RS 123.460
    Record 13: FVF 1.233 at RS 123.470 is not greater than FVF 1.233 at RS 123.461

The length of each 'Record' line is 78 characters as of this change
(assuming METRIC conventions, FIELD conventions not tested).  The
length of the 'In ...' line depends on the number of characters in
the full filepath.
2020-09-24 00:43:03 +02:00
Bård Skaflestad
1311afb261 PVTO: Add Means of Identifying Non-Monotonic Saturated FVFs
This commit introduces a way of diagnosing an uncommon but possible
issue in the PVTO table.  If the formation volume factor (BO) in the
saturated table (record 1 of each subtable) does not increase
monotonically as a function of the dissolved gas/oil ratio (RS),
then there is a risk that the simulation run will have convergence
problems.

We add a special purpose member function

    PvtoTable::nonMonotonicSaturatedFVF

which checks for this condition and returns a vector records for
which the condition is true.  The new member function

    TableManager::checkPVTOMonotonicity

then collates these records into a formatted string which is printed
to the console and the .PRT file.

Example Diagnostic Output:

    Warning: Non-Monotonic Oil Formation Volume Factor Detected
      * PVTO [PVTNUM = 1]
        Record  9: FVF 1.23 at RS 123 is not greater than FVF 2.34 at RS 120
        Record 10: FVF 1.22 at RS 125 is not greater than FVF 1.23 at RS 123
        Record 11: FVF 1.21 at RS 125 is not greater than FVF 1.22 at RS 125
2020-09-24 00:43:02 +02:00
Bård Skaflestad
b5b1588a17 PVTXTable: Fix Documentation
In particular, refer to "pvtnum" instead of "satnum".  While here,
also include a number of headers that are needed for idempotency.
2020-09-24 00:43:02 +02:00
Joakim Hove
2e20dc5d43 Merge pull request #1923 from totto82/co2storage
Add CO2STOR keyword in Runspec section
2020-09-23 14:36:18 +02:00
Joakim Hove
7d226bf600 Merge pull request #1926 from joakim-hove/udq-in-actionx
Udq in actionx
2020-09-23 14:35:01 +02:00
Joakim Hove
6eb9eb8414 Merge pull request #1950 from joakim-hove/deckoutput-dont-split
Special case output of UDQ and ACTIONX keywords - no split
2020-09-23 12:29:42 +02:00
Joakim Hove
aefa3cd9d2 Support defining new UDQ keywords inside ACTIONX block 2020-09-23 11:30:09 +02:00