Commit Graph

7916 Commits

Author SHA1 Message Date
Bård Skaflestad
5fc87fa10c Support Regular Expression Suffix for Keyword Matching
This is mostly to have a general solution for matching region level
summary keywords which may reference a user-defined region set (FIP
keyword, e.g., FIPXYZ) through tags like

    RPR__XYZ -- Average pressure in region, FIPXYZ region set
    ROPR_XYZ -- Oil production rate in region, FIPXYZ region set
    RODENXYZ -- Average oil density in region, FIPXYZ region set

The initial approach introduced in commit cfbafc236 was limited to
selected keywords.

To this end, add a new data member

    std::string ParserKeyword::m_matchRegexSuffix

and introduce a new member function

    bool ParserKeyword::matchesDeckNames()

which matches a candidate keyword string against the m_deckNames,
and, if applicable, as a regular expression against m_deckNames when
appended m_matchRegexSuffix.
2023-09-13 11:11:32 +02:00
Arne Morten Kvarving
9f0ea44f9c fixed: initialize data in ConditionalStorage 2023-09-13 10:04:40 +02:00
Bård Skaflestad
b1672210ba
Merge pull request #3669 from steink/well_control_access
Utility functions for manipulation of well-controls
2023-09-12 13:33:53 +02:00
Bård Skaflestad
8cde088e19
Merge pull request #3665 from atgeirr/make-wconinjh-invalid-mode-a-warning
Allow invalid WCONINJH control mode
2023-09-12 13:29:03 +02:00
Atgeirr Flø Rasmussen
92a716fa18 Make it a warning instead of an error to specify an invalid control mode in WCONINJH.
Motivated by the need to accept deck output that contain this error,
that is generated by preprocessing tools.
2023-09-11 17:39:48 +02:00
Bård Skaflestad
1261cf2b5c Remove Unnecessary Semicolons on Closing Braces
These generate diagnostic messages from GCC at '-pedantic' levels.
2023-09-07 17:07:35 +02:00
Stein Krogstad
6ecabdbd7b Add access to injection controls 2023-09-07 13:48:09 +02:00
Stein Krogstad
703431ce61 Add functions to enable edit of prod controls 2023-09-07 13:48:09 +02:00
Bård Skaflestad
53e2758649 Ignore Default Regions in MULTREGT
The MULTREGT keyword has an independent way of defining the default
region--the default value of item 6--and does not need the default
GRIDOPTS-base region protocol of the other *REG keywords.
2023-09-04 10:30:36 +02:00
Bård Skaflestad
f6676fcc1a Reorder MULTREGTScanner Implementation File
Mostly to group related functions and have the same order in the
declaration and the implementation files.  While here, replace an
'enum' with a strong enum since the type does not need to support
arithmetic operations.
2023-09-04 10:30:36 +02:00
Bård Skaflestad
b84c5f46bf Add Method for Identifying Numerical Aquifer Cell IDs
This commit adds a new, focused, member function

  NumericalAquifers::allAquiferCellIds()

which returns a vector of those Cartesian/global cells that have
been marked as defining the model's numerical aquifers through the
AQUNUM keyword.  We intend to use this to identify those NNCs that
go to numerical aquifers--or between numerical aquifer cells--as
those may need special treatment when processing the MULTREGT
keyword.
2023-09-04 08:52:08 +02:00
Vegard Kippe
1728d9d310 Addressing test failure in MulgisegmentWellTests + slight change to avoid modifying Connection.cpp 2023-09-01 15:59:28 +02:00
Tor Harald Sandve
263070f9b4
Merge pull request #3657 from hakonhagland/gecon2
Implement support for GECON keyword
2023-09-01 15:06:36 +02:00
Tor Harald Sandve
1d048e43d2
Merge pull request #3648 from totto82/fix_waghystr
avoid negative C factor
2023-09-01 15:03:02 +02:00
Bård Skaflestad
e179bf87dd Split Keyword Recognition Into Two Parts
The 'base' checks that the input string looks like a valid keyword
and, if so, matches the string against the builtin set of known
keywords.  The full keyword recognition process additionally
includes those keywords that match against keyword collections,
typically the SUMMARY section "meta" keywords in the *_PROBE files.

We will use the 'base' recognition separately to introduce support
for extension keywords with long--more than eight character--names.
2023-08-30 15:27:06 +02:00
Tor Harald Sandve
0fad30d7cb Fix three phase check in waghystr model. Also check for oil phase 2023-08-29 12:39:46 +02:00
Håkon Hægland
612e4c0e9c Move template implementation to header file 2023-08-29 10:36:54 +02:00
Håkon Hægland
7d1f1b103e Move template implementation to header file 2023-08-29 10:28:42 +02:00
Kai Bao
48b759178c fixing the parallel running and testing related to filtrate 2023-08-29 09:08:45 +02:00
Kai Bao
2d35b1e20c adding support for the filtrate summary keywords 2023-08-29 09:08:45 +02:00
Håkon Hægland
bec10dbfbe Implement GECON keyword
Implements support for the GECON keyword.
2023-08-29 01:10:21 +02:00
Vegard Kippe
98adf5a536 Workaround to avoid failing tests, also fixed some tab indenting. 2023-08-28 11:21:34 +02:00
Vegard Kippe
128ba83810 Facilitate using max time step from TUNING/NEXT[STEP] only when specified. Also corrects the persistent behaviour of NEXTSTEP. 2023-08-28 11:21:33 +02:00
Kai Bao
0c64a142c1 removing the vfp_table member from Group class
after GRUPNET is processed, vfp_table is not useful for GROUP class
anymore.
2023-08-25 00:21:45 +02:00
Kai Bao
9a7147bead handle UDQ value for WINJFCNC
restarting related is missing for now
2023-08-23 11:44:13 +02:00
Tor Harald Sandve
e08a4efe65 avoid negative C factor 2023-08-22 12:23:38 +02:00
Bård Skaflestad
f32ff86638 Use Existing Cartesian-to-IJK Functionality
This commit replaces the data members 'nx', 'ny', and 'nz' with a
copy of the GridDims object passed as an argument to the
constructor.  In turn, this enables using GridDims::getIJK() to
compute the cell's IJK tuple from its global Cartesian index instead
of implementing the same calculation locally (and incorrectly).

While here, also include the layer index (K) in determining whether
or not a connection is an NNC, and do this just once instead of once
for each MULTREGT record.  Cells (I,J,K) and (I,J,K+3) might be
connected across pinched-out layers and for the purposes of MULTREGT
that connection should be treated as an NNC.
2023-08-21 11:41:03 +02:00
Bård Skaflestad
2c74d036d6 Tidy Up MULTREGT Scanner Files
In particular, ensure that we include all requisite headers, hide
type aliases that are not needed outside the class, consistently use
std::size_t, split a few long lines, and switch to range-for in one
location.
2023-08-21 11:41:03 +02:00
Bård Skaflestad
2dc650ff72 Switch to Numeric Indices for Record References
A numeric index serves the same purpose as a pointer in this very
specific instance and also has the benefit of being easily
transferable between processes.  This, in turn, means we can remove
the 'getSearchMap()' and 'constructSearchMap()' member functions.
2023-08-21 11:40:44 +02:00
Kai Bao
13eaf8a271 adding unit area 2023-08-17 13:55:33 +02:00
hnil
d157bd627f add THELCOEF field property
this is the thermal expansion coefficient for each cell in a mechanics model
write this to the .INIT file for relevant models
2023-08-17 11:54:18 +02:00
hnil
861be6be91 add THERMEXR field property
this is the thermal expansion ratio for each cell in a mechanics model
write this to the .INIT file for relevant models
2023-08-17 11:54:18 +02:00
hnil
1948dc5d51 add PRATIO field property
this is the Poisson's ratio for each cell in a mechanics model
write this to the .INIT file for relevant models
2023-08-17 11:54:18 +02:00
hnil
27dcd6e246 add POELCOEF field property
this is the coefficient of elasticity for each cell in a mechanics model
write this to the .INIT file for relevant models
2023-08-17 11:54:18 +02:00
hnil
191364d2f3 add BIOTCOEF field property
this is the Biot coefficient for each cell in a mechanics model
write this to the .INIT file for relevant models
2023-08-17 11:54:18 +02:00
hnil
6ed7370db3 add STRESSEQUILNUM field property
this is used to set the stress equilibration region for cells in
mechanics models
2023-08-17 11:54:18 +02:00
hnil
217f8f7b60 add YMODULE field property
this is the Young's modulus for each cell in a mechanics model
write this to the .INIT file for relevant models
2023-08-17 08:34:51 +02:00
hnil
3a66f7c9b6 added: Ymodule dimension in UnitSystem 2023-08-17 08:14:09 +02:00
Bård Skaflestad
58ff8944c4
Merge pull request #3636 from akva2/mech_bc
Add support for MECH boundary conditions
2023-08-16 16:52:21 +02:00
Bård Skaflestad
0c037db51c
Merge pull request #3635 from akva2/add_strequil
Add STREQUIL keyword and internalization
2023-08-16 16:12:19 +02:00
Bård Skaflestad
6e4c37d05f
Merge pull request #3634 from akva2/mech_runspec
-- added MECH to runspec
2023-08-16 16:11:38 +02:00
hnil
614d71666d add mech boundary conditions 2023-08-16 15:56:45 +02:00
hnil
a0ba0be7cc -- added stress equilibrium data for initconfig 2023-08-16 15:13:38 +02:00
Arne Morten Kvarving
111aa44936 changed: refactorize Equil class into a container template over a record type
make Equil a type alias for EquilContainer<EquilRecord>
2023-08-16 15:13:38 +02:00
Arne Morten Kvarving
df6345e15d EquilRecord: add in-class initializers
then we can default the default constructor
2023-08-16 15:13:38 +02:00
Arne Morten Kvarving
a93e285552 changed: add EquilRecord::serializationTestObject
and use this in Equil::serializationTestObject()
2023-08-16 15:13:38 +02:00
Arne Morten Kvarving
89f59e0050 changed: add a DeckRecord constructor for EquilRecord and use this in Equil 2023-08-16 15:13:38 +02:00
hnil
980a160651 -- added MECH to runspec 2023-08-16 14:15:23 +02:00
Bård Skaflestad
f68fe9b484 Properly Classify Capillary Pressure Keywords
These are not directionally dependent, and they have a unit string
of 'Pressure'.  This didn't use to matter, but upcoming changes
will depend on the unit string being correct.
2023-08-15 17:27:47 +02:00
Bård Skaflestad
5495eca413 Properly Remove 'satfunc' Macro
The macro should not escape the FieldProps.hpp header.
2023-08-15 17:27:47 +02:00
Bård Skaflestad
cda61b46c0 Remove sogcr_shit Helper Array
This array became unused in commit 146be0aa2 and should have been
removed at that time.
2023-08-15 17:27:47 +02:00
Arne Morten Kvarving
89deeea9d5 TimingMacros: add definitions for using tracy 2023-08-15 15:55:03 +02:00
Svenn Tveit
c6cd71df08 Improved viscosity model for hydrogen.
Model from Muzney et al., J. Chem. Eng. Data 2013, 58, 4, 969–979 implemented. Same as NIST and Coolprop.
2023-08-14 12:31:01 +02:00
Kai Bao
22de6c1480 adding unit PPM
Parts per million (ppm). We are not distinguishing PPM volume or PPM
mass, or other forms. Will update when it comes to be necessary.
2023-08-10 15:23:14 +02:00
Bård Skaflestad
3caf79a99a Disambiguate Potentially Dependent Names
It's probably not strictly necessary, but better safe than sorry.
2023-08-09 14:37:57 +02:00
Bård Skaflestad
027c15800a Preventive Maintenance of FieldProps Class
In particular:
  - Order include statements
  - Simplify logic
  - Adjust whitespace

This is in preparation of making FIP* array names unique only up to
the first six characters (i.e., "FIP" + at most three others).
2023-08-09 14:37:57 +02:00
Kai Bao
144faaf645
Merge pull request #3623 from atgeirr/allow-default-network-nodes
Allow implicit creation of production network nodes.
2023-08-09 14:31:50 +02:00
Atgeirr Flø Rasmussen
67c7f858a4 Rename add_node() -> update_node(). 2023-08-09 13:28:24 +02:00
Bård Skaflestad
aab5d1125b
Merge pull request #3584 from svenn-t/unittests
Component unit tests and some minor updates
2023-08-08 18:14:37 +02:00
Atgeirr Flø Rasmussen
fb37377324
Merge pull request #3605 from blattms/fatal-section-topology-errors
Register errors concerning section topology in ErrorGuard.
2023-08-08 11:30:02 +02:00
Bård Skaflestad
7533eadb2e Implement OrderedMap in Terms of String_View
We don't need std::string in the hashing operations, so lift those
restrictions.
2023-08-07 17:04:13 +02:00
Arne Morten Kvarving
b1cf35168a quell unused parameter warnings 2023-07-31 08:37:58 +02:00
Atgeirr Flø Rasmussen
a50513c971
Merge pull request #3585 from hnil/twophaseFixes
Fixes for two-phase relperm
2023-07-26 15:31:02 +02:00
hnil
6de987eaec fixed after review 2023-07-26 14:09:15 +02:00
Markus Blatt
0a916c4b73 Rename LinearTimeSteppingBreakdown to TimeSteppingBreakdown
Indeed that is more intuitive. I guess the previous name was due to
copy & paste and forgetting to change things afterwards.
2023-07-25 14:56:47 +02:00
Tor Harald Sandve
79137ae882
Merge pull request #3604 from blattms/fix-ptflash
[bugfix] Use numComponents when accessing K_/moleFractions_ in PTFlash.
2023-07-25 12:24:58 +02:00
Markus Blatt
e5c44baf38 Also detect keywords after operate key words in wrong section.
This will find keywords in statements like
MULTIPLY
  'TRANX' 2.0 /
  'TRANY' 2.0 /
 /
2023-07-24 15:59:01 +02:00
Bård Skaflestad
ebd2ab4e59
Merge pull request #3573 from goncalvesmachadoc/collectCarfin
Store Multiple Lgrs
2023-07-21 09:34:48 +02:00
goncalvesmachadoc
946462e377 delete carfin from string 2023-07-20 11:15:23 +02:00
Markus Blatt
e56e2f4d26 Register errors concerning section topology in ErrorGuard.
That will make those (e.g. EDITNNC in the GRiD section) fatal.
2023-07-19 17:44:59 +02:00
goncalvesmachadoc
1c780e78f4 towards serialization 2023-07-18 16:42:11 +02:00
goncalvesmachadoc
5df7a148e9 get lgr by index 2023-07-18 12:02:09 +02:00
goncalvesmachadoc
c5f664650e collectLGRinEclState 2023-07-18 10:32:53 +02:00
goncalvesmachadoc
ca6f232486 expand methods 2023-07-18 10:32:52 +02:00
goncalvesmachadoc
94e9900d39 small fix class 2023-07-18 10:32:51 +02:00
goncalvesmachadoc
4e7fde0c64 simplify collection 2023-07-18 10:32:51 +02:00
goncalvesmachadoc
22c5965fb5 add carfin collection 2023-07-18 10:32:50 +02:00
Bård Skaflestad
ee44c0fbe5
Merge pull request #3602 from blattms/gcc-13-missing-include
Added missing include of cstdint for GCC-13
2023-07-18 10:21:46 +02:00
Markus Blatt
e694e465e0 Use int type from std namespace. 2023-07-17 12:40:27 +02:00
Bård Skaflestad
d7f1b6bd27
Merge pull request #3601 from plgbrts/gconprod
Enable items, 11, 12 and 13 of GCONPROD
2023-07-14 21:23:23 +02:00
Paul
c422724422 Struct for collecting group limit actions 2023-07-14 11:16:29 +02:00
Markus Blatt
063b1f284a [bugfix] Use numComponents when accessing K_/moleFractions_ in PTFlash.
Previously we did read and write out of bounds as num_equations might
be bigger than numComponents. For GCC-13 this even caused endless loops.
2023-07-14 10:18:07 +02:00
Markus Blatt
f284a7e7fb Added missing include of cstdint for GCC13
Without the include compilation fails with
```
/opm/io/eclipse/EclFile.hpp:92:17: error: ‘uint64_t’ was not declared in this scope
   92 |     std::vector<uint64_t> ifStreamPos;
      |                 ^~~~~~~~
In file included from src/opm/io/eclipse/EclOutput.cpp:20:
opm/io/eclipse/EclUtil.hpp:56:5: error: 'uint64_t' does not name a type
   56 |     uint64_t sizeOnDiskBinary(int64_t num, Opm::EclIO::eclArrType arrType, int elementSize);
      |     ^~~~~~~~

```
2023-07-14 08:37:56 +02:00
Paul
7d6391b1fa added serializer items 2023-07-12 22:12:39 +02:00
Paul
e86f7f2d2d Enable items, 11, 12 and 13 of GCONPROD 2023-07-12 20:45:09 +02:00
Bård Skaflestad
5f0941677a Add Facility for Recording ACTIONX Well Structure Changes
This commit adds a new member, well_structure_change, to the
SimulatorUpdate structure.  The member defaults to 'false', but
will be set to 'true' if an ACTIONX block contains at least one of
a select group of keywords that affect the model's well topology.

In particular, set this member to 'true' if the ACTIONX block has
at least one of the keywords

  - COMPDAT
  - WELOPEN
  - WELSPECS

This will enable adding simulator logic to open or create wells in
the middle of a report step.
2023-07-12 17:31:30 +02:00
Markus Blatt
7e3eeb34b0 Added exception to mark time step being cut too often.
This is needed for a more user friendly message in the simulator.
2023-07-12 14:17:56 +02:00
Bård Skaflestad
8fc1389de0 Revise Description of Item 7 in RSEG
This item is the depth of the node segment, not the depth change
relative to the top segment.  Rename the associate variables
accordingly.
2023-07-06 12:02:45 +02:00
Bård Skaflestad
e7226d4ca8 Add Transport Protocol for Segment Level Phase Densities
This commit adds the requisite backing storage and parser support
for capturing and transporting simulator-level calculation of phase
and mixture density value for purpose of summary file output.  To
this end, make 'SegmentQuantity' into a template on a set of defined
items and make SegmentPhaseQuantity into a specialisation of this
template.  Add a new specialisation, SegmentPhaseDensity, which
holds phase densities (oil, gas, water), and fluid mixture densities
with and without flowing fraction exponents.

These will be used to transport the values needed to output segment
level summary vectors

    SDENx -- Phase density of phase 'x' (O, G, W)
    SDENM -- Fluid mixture density without flowing fraction exponents
    SMDEN -- Fluid mixture density with flowing fraction exponents
2023-07-05 11:31:10 +02:00
Bård Skaflestad
4fb2a3557b
Merge pull request #3313 from GitPaean/support_cake_filteration
A simple cake model to simulate formation damage due to suspended solids in injection water
2023-06-30 15:51:41 +02:00
Kai Bao
508c123eed addressing the reviewing comments for PR #3313 2023-06-30 11:35:25 +02:00
Kai Bao
39608fa1ed re-organizing the filter cake related
to address the reviewing comments and improve the code.
2023-06-29 11:42:26 +02:00
Svenn Tveit
5e3a8b0ae1 Get rid of pow() 2023-06-29 11:06:02 +02:00
Tor Harald Sandve
d07d8675ae
Merge pull request #3574 from totto82/fixSalinity
BUGFIX: Use salinity values when salt concentration (BRINE) is not considered
2023-06-29 09:00:28 +02:00
Tor Harald Sandve
bf9ca70ff6 Cleanup based on review 2023-06-28 14:07:33 +02:00
Tor Harald Sandve
4b36741f33 Rename BC to BCPROP and add error message for BC 2023-06-28 14:07:33 +02:00
Tor Harald Sandve
c7a7e80698 splitt BC into BCCON in grid section and BC in Schedule 2023-06-28 14:07:33 +02:00
Tor Harald Sandve
ff58ca550f Support BC in Schedule section 2023-06-28 14:07:33 +02:00
hnil
3e7f74d384 -- fixes for twophase relperm 2023-06-28 13:09:04 +02:00
Svenn Tveit
e7faf82096 Improved enthalpy approximation.
Polynomial fit using Coolprop data.
2023-06-28 10:05:32 +02:00
Kai Bao
aafafba4b1 draft version of handling keyword WINJCLN 2023-06-27 15:50:54 +02:00
Kai Bao
781f7f2a96 revising FilterCake class for downstream use 2023-06-27 15:50:54 +02:00
Kai Bao
a335542424 adding accessing function for FilterCake for Connection 2023-06-27 15:50:54 +02:00
Kai Bao
3bc451ad94 parsing WINJFCNC 2023-06-27 15:50:54 +02:00
Kai Bao
5e1b398550 parsing the keywor WINJDAM 2023-06-27 15:50:54 +02:00
Kai Bao
e94c1aa386 WIP in supporting the keyword WINJDAM 2023-06-27 15:50:54 +02:00
Bård Skaflestad
d9cfd1288a Reimplement WBPn Calculation Procedure
This commit implements the WPAVE keyword and its associate WBPn
well level report quantities.  We support all valid settings of
WPAVE and WWPAVE.  The various weighted averages are accumulated
through compensated summation of both the numerator and denominator
terms for the inner block, the direct/immediate level 1 neighbours,
and the diagonal level 2 neighbours.  We combine those contributions
to the WBP, WBP4, WBP5, and WBP9 terms when we "commit" the
contributions (Accumulator::commitContributions()), per connection
for values weighted by the connection transmissibility factor, and
per well for values weighted by pore volumes.

We distinguish OPEN from ALL connections through callback functions
in the implementation of accumulateLocalContributions() and the per
connection weighting terms are provided as another set of callback
functions depending on the value of the inner block weighting factor
F1.

Depth correction (NONE, WELL, or RES) is affected through a separate
set of callback functions used in the implementation of
'connectionPressureOffset'.

We discover source locations in a two-step process.  At WBPn
calculation construction time, we exclude only those cells that are
outside the model's dimensions.  The user is then expected to call
member function pruneInactiveWBPCells(), typically at the
CalculatorCollection level, at a later time in order to prune
inactive cells.  This two-step split is necessary because we do not
have a complete global view of the model's active cells in a
parallel run.  It is very possible that the WBPn calculation on one
rank will require source values from another rank and that begets
this extra caution.

The user must call inferBlockAveragePressures() to compute the WBPn
values.  Once completed, the result values may be extracted by
calling member function averagePressures().  We expect that the user
will provide a complete set of up-to-date source values when calling
this member function, both at the reservoir and the well connection
levels.
2023-06-22 16:46:54 +02:00
Bård Skaflestad
c6d4a635e3
Merge pull request #3577 from GitPaean/fixing_winjmult
separating the WINJMULT for well and connections
2023-06-22 12:53:27 +02:00
Kai Bao
9572d5ecf3 addressing the reviewing comments for PR #3577 2023-06-22 11:59:45 +02:00
Bård Skaflestad
f8d9f74d91 Reformat PAvg Class
Mostly for readability.  While here, also switch to using compiled
item names instead of raw strings to access the DeckItems which
constitute the WPAVE and WWPAVE keywords.
2023-06-21 13:46:28 +02:00
Kai Bao
68e586bf7a separating the WINJMULT for well and connections
with more testing, it looks like when multiple records are entered. The
records with WREV mode and records with CIRR and CREV modes work
differently in term of overwriting the previous records. So it is
necessary to store them separately.
2023-06-21 11:38:31 +02:00
Bård Skaflestad
dda3effdb3
Merge pull request #3570 from svenn-t/ppcwmax
Implementation of PPCWMAX
2023-06-16 15:04:03 +02:00
Svenn Tveit
32692b750e Added actual values to serialization test 2023-06-16 11:33:52 +02:00
Tor Harald Sandve
7f33731d19 BUG: Use salinity values when salt concentration (BRINE) is not considered 2023-06-16 10:03:56 +02:00
Svenn Tveit
af3f44423b Changed from std::tuple to std::pair 2023-06-15 14:59:42 +02:00
Tor Harald Sandve
c270dc2ff3 Minor clean-up and fixes of the WAG hysteresis model 2023-06-15 12:31:27 +02:00
Svenn Tveit
89f0b2c31e Changes in docstring and removed include 2023-06-15 12:26:43 +02:00
Ove Sævareid
34a9d9c949 Some support for WAG hysteresis (material). 2023-06-15 11:22:44 +02:00
Ove Sævareid
0fc0b6f4fa Some support for WAG hysteresis (input). 2023-06-15 11:18:58 +02:00
Bård Skaflestad
fdfbecc742
Merge pull request #3572 from hnil/ecldefault
-- added function need to test solver without multiplexer
2023-06-14 16:26:44 +02:00
hnil
3b06ff2757 -- added function need to test solver without multiplexer 2023-06-14 14:37:07 +02:00
Bård Skaflestad
bca989343c
Merge pull request #3161 from GitPaean/support_winjmult
adding the parsing support for keyword WINJMULT
2023-06-14 14:32:00 +02:00
Bård Skaflestad
e6590f2169 Fix A Couple of Compiler and Static Code Analysis Warnings
In particular

  * Tag a single argument constructor as 'explicit',
  * Remove an unused private function
  * Fix mismatched tags (struct vs. class) in forward declaration
  * Return 'false' in an impossible updateHyst() case

While here, also use a real UnitSystem object instead of creating
a METRIC system just to infer unit strings.
2023-06-14 13:31:41 +02:00
Bård Skaflestad
f46b90f5db
Merge pull request #3568 from bska/fix-udq-assign-well-level
Don't Run ASSIGN on Every Report Step
2023-06-14 11:59:22 +02:00
Bård Skaflestad
250c8b7a1c
Merge pull request #3458 from hnil/changed_hyst
Changed hyst
2023-06-14 10:34:34 +02:00
Bård Skaflestad
c33b94ca3a Default UDQ Assignments to All Wells in Model
An assignment of the form

    ASSIGN WUPPERTAL 354.572 /

should create a UDQ set of size equal to the number of wells in
the model, not just the wells already flowing-especially if the
assignment happens on the very first report step before any wells
are flowing.
2023-06-14 09:46:10 +02:00
hnil
12da4dbe02 --changed for bska comments. All tests ok locally 2023-06-14 09:31:20 +02:00
Svenn Tveit
de814bc577 Apply PPCWMAX in SWATINIT calculations.
Note that re-calculation of initial water saturation (after PPCWMAX is applied) is currently done in opm-simulators.
2023-06-14 08:33:51 +02:00
Svenn Tveit
ccc010c8d3 Internalize PPCWMAX as vector of structs 2023-06-14 08:33:51 +02:00
Markus Blatt
90497b745b
Merge pull request #3556 from akva2/multflt_grid_and_edit
fixed: properly combine MULTFLT from GRID and EDIT
2023-06-14 07:16:02 +02:00
Kai Bao
edd762c084 cleaning up the implementation related to WINJMULT 2023-06-13 15:10:56 +02:00
hnil
b50cef1af2 added fix based on review 2023-06-13 14:39:42 +02:00
hnil
f8d652f758 - fixed missing return after adding change 2023-06-13 14:39:42 +02:00
hnil
d0422bfc74 -- added bool return value of hysteresis update.
-- this make it possible to localy update intensive quanities if something changed.
2023-06-13 14:39:42 +02:00
Kai Bao
759f0b8449 revising the function handleWINJMULT a little bit 2023-06-12 10:42:15 +02:00
Kai Bao
a8a10bb81f InjMultMode is assigned to per well
not per connection anymore based on new finding in the reference result.
2023-06-12 10:42:15 +02:00
Kai Bao
2f8f019226 updating the WINJMULT keyword with correct dimension 2023-06-12 10:42:15 +02:00
Kai Bao
da17ef3174 adding the parsing support for keyword WINJMULT 2023-06-12 10:42:15 +02:00
Bård Skaflestad
c7d6604d98 Add Container for Dynamic WBPn Source Values
This commit adds a new container class,

    PAvgDynamicSourceData

which wraps a single vector<double> which in turn backs source data
items for

    - pressure values
    - fluid mixture densities
    - dynamic pore-volumes

at a collection of source locations-active cells or well reservoir
connections.  We provide read-only and read-write accessors to the
underlying data items for a single source location through subscript
operator (read only) and named assignment (set(), read-write) member
functions.  The latter is available only when the underlying range
of data values is mutable (e.g., SourceDataSpan<double>) as opposed
to immutable (e.g., SourceDataSpan<const double>).
2023-06-09 15:42:46 +02:00
Bård Skaflestad
89bc182876 Prepare for Revised Implementation of WBPn
This initial commit changes the Summary class's API for consuming
block-averaged well level pressure values (summary keywords WBPn).
The former approach was intended to consume a collection of source
values--pressures, densities, and pore-volumes--and then to defer
calculation of the WBPn summary vectors to the Summary class.

This commit introduces a 'WellBlockAvgPress' container class which
holds precomputed WBPn results and the intention is to move the
calculation to the simulator side for greater parallelism.
2023-06-09 13:29:10 +02:00
Arne Morten Kvarving
b7a888fcfa fixed: properly combine MULTFLT from GRID and EDIT 2023-06-08 10:12:41 +02:00
Håkon Hægland
5a99e005fb Fixed naming convention 2023-06-02 09:24:59 +02:00
Håkon Hægland
2f260fe90a Fixed SWell indices 2023-06-02 09:24:59 +02:00
Håkon Hægland
0d38acebaf Set correct default value 2023-06-02 09:24:59 +02:00
Håkon Hægland
5463420a85 Add support for WVFPDP 2023-06-02 09:24:59 +02:00
Arne Morten Kvarving
39006ecd71 added: setters for the vappars in pvt classes 2023-06-01 11:03:20 +02:00
Arne Morten Kvarving
51aecfb2de fixed: apply VAPPARS from SOLUTION section 2023-05-31 15:13:55 +02:00
Bård Skaflestad
5a79e0f8fb Test Dynamic Segment Dimensions Against WSEGDIMS Limits
In particular, check that

  1. Number of MS wells <= WSEGDIMS(1)
  2. Number of segments per well <= WSEGDIMS(2)
  3. Number of branches per well <= WSEGDIMS(3)

for all report steps in the simulation run.

Example diagnostic message of a case that violates limits 2 and 3:

Error: Problem with keyword WSEGDIMS
  In CASE.DATA line 60
  The case has a multi-segmented well with 246 well segments, but at most 200 are allowed in WSEGDIMS.
  Please increase item 2 of WSEGDIMS to at least 246

Error: Problem with keyword WSEGDIMS
  In CASE.DATA line 60
  The case has a multi-segmented well with 105 lateral branches, but at most 5 are allowed in WSEGDIMS.
  Please increase item 3 of WSEGDIMS to at least 105
2023-05-30 11:47:50 +02:00
Bård Skaflestad
0bc74799ca
Merge pull request #3465 from plgbrts/well-specs-new
adding defaults to json files
2023-05-30 11:43:53 +02:00
Paul
4d5b4aba2b changed return type to reference-to-const 2023-05-30 10:49:52 +02:00