Commit Graph

48 Commits

Author SHA1 Message Date
Andreas Lauser
350c92375e add the PORV grid property and use NaNs as default values for most double grid property
when it comes to PORV, the final pore volumes of logically Cartesian
grids are hard to implement at this abstraction level because pore
volumes may be either specified using the PORO or by the PORV keywords
and both of them are grid properties. This means that to calculate the
pore volumes using the porosity, the porosity grid property must be
already finished when creating PORV. Because of potential interactions
between the PORV and PORO grid properties this is not possible to do
canonically at the grid property initializer stage...
2014-09-25 21:36:59 +02:00
Andreas Lauser
c5f602a17c grid properties: implement a table-lookup initializer for the endpoint scaling keywords 2014-09-25 21:36:42 +02:00
Andreas Lauser
f54de8eafb grid properties: introduce initializer objects
this makes it possible to define more complicated initializers for
grid properties. (needed for example for keywords like ISGU.) This
patch does not introduce them yet, but only adds the necessary
infrastructure.

notes:

 - to get around cyclic definitions in template classes, the
   EclipseState is changed to a (defaulted) template parameter which
   causes the compiler to only look up the class definition at
   instantiation time.
 - using std::shared_ptr in the property initializers would lead to
   cyclic references which would cause memory leaks. To avoid that,
   plain old references where used in most places. I think this is
   okay as the GridProperty objects should be considered internal to
   EclipseState and thus the EclipseState object should live at least
   as long as GridProperty objects...
2014-09-25 21:36:42 +02:00
Andreas Lauser
f8ec08e069 change the defaults for the *NUM integer properties to 1
and add the ENDNUM integer property.
2014-09-25 21:36:42 +02:00
Andreas Lauser
b4ff0efff8 EclipseState: export the IMPTVD and IMKRVD tables
and also fix a small build bug in these table classes. I don't know
why they have not been also fully dealt with in the recent table code
refactoring...
2014-09-24 12:47:57 +02:00
Andreas Lauser
aa0d7d2e6b EclipseState: initialize and expose the tables which are featured by the deck
since this code is becomming a bit tricky, it is now recommended to
use the tables of EclipseState instead of trying to initialize them
yourself...
2014-09-19 12:24:54 +02:00
Andreas Lauser
b72df6f406 make ParserItems always defaultable
i.e. remove the defaultSet() method and its friends. this is required
to be able to specify defaults in DATA items like grid properties or
saturation tables. e.g.

SGL
10*0.1 10* 10*0.2 /

would not be possible without this. If no meaningful default for an
item is defined, float and double items get NaN, int items get -1 and
string ones get an empty string. The hope is that if these values get
used in the simulation, they will make the result obviously
incorrect. (Whether a data point of an item was defaulted can be
queried using item->defaultApplied(index).)
2014-09-15 12:17:03 +02:00
Andreas Lauser
539c7a23ae make the defaults of an item settable per data point
instead of for the whole item...
2014-09-15 12:17:03 +02:00
Andreas Lauser
e6fa1e01a8 DeckItem: add indices to the methods which allow to query the defaulted status
also, this renames DeckItem::setInDeck() to DeckItem::wasSetInDeck()
because the former method can easily be confused with a setter method
(which it is not, it is a 'getter').

note that there is a small semantical difference now: the old
signatures specified the status of the whole *item* while the new
variants are specific for a single *data point* of an item. Though at
this point the index passed to the methods is still disregarded..
2014-09-15 12:17:03 +02:00
Andreas Lauser
76b8cc6e4f EclipseState: provide an accessor method for the unit system used by the deck
this is required to convert calculated quantities to the same units as
the ones used in the input deck.
2014-09-09 12:16:13 +02:00
Joakim Hove
152e07775a Merge pull request #294 from andlaus/GridProperties_first_int_then_double
first handle all integer properties, then all double ones
2014-09-05 14:42:22 +02:00
Joakim Hove
61cdf7d402 Default: defaultApplied -> setInDeck()
The data values in a deck item can be in three different states, given
by the DeckValue enum in DeckItem.hpp. The three values are:

  SET_IN_DECK : The value has been set explictly in the deck.
  DEFAULT     : The value was not present in the input deck, but a default
                value has been supplied in the configuration and that value
                has been set.
  NOT_SET     : No value has been set for this item; it was not explicitly
                set in the deck and also not included in the configuration.

If you ask for DeckItem->value which is in state NOT_SET you will get an
exception. The method setInDeck() can be used to check if a value has
been set explicitly in the deck; the method defaultApplied() will check
if a default value has been applied.

Observe that the system for handling defaults is not really well suited
for multi valued data items, as it is only a scalar state variable. In
the case of multi valued data items both defaultApplied() and
setInDeck() might return true.
2014-09-03 10:37:01 +02:00
Andreas Lauser
afa93d67b3 first handle all integer properties, then all double ones
this is required in situations where double grid properties depend on
the values of integer (i.e, *NUM) ones which appear later in the
deck. Example:

```
PROPS

SWU
* /

REGIONS

SATNUM
*2 /
```

the default value of the SWU keyword depends on the value of the
SATNUM property which only gets defined later in the deck. an
alternative to the approach of this patch would be to process the
grid properties of the REGIONS section before the others. I'm a bit
indifferent which approach is better...
2014-08-28 12:19:31 +02:00
Andreas Lauser
b690d9add8 EclipseState: check the canonical section topology
at least if the "beStrict" parameter for the constructor is set to
true. by default nothing changes...
2014-08-26 12:29:17 +02:00
Atgeirr Flø Rasmussen
52c7a4bc3f Remove section-using EclipseGrid constructors.
Also:
 - Simplify implementation (no templates).
 - Update tests.
2014-08-22 12:12:37 +02:00
Andreas Lauser
466a18da98 fix some harmless compiler warnings
this comes with a minor API change as well, as the FaultCollection
class did not use the Cartesian size of the grid at all, so I decided
to remove the attributes and the arguments to the constructor...
2014-08-06 21:47:50 +02:00
Joakim Hove
069ceaa9b7 Added new method EclipseState::getEclipsegridcopy() 2014-07-17 21:20:42 +02:00
Andreas Lauser
abb49aead6 TransMult: implement non-fault transmissibility multipliers
i.e., the MULT[XYZ]-? keywords.
2014-07-15 16:47:31 +02:00
Kristian Flikka
766ed83a2b Added hasEDIT test, to avoid exception on decks without EDIT section 2014-07-09 13:27:26 +02:00
Joakim Hove
c4cd20f9f2 ERT-700: Included Fault treatment in EclipseState 2014-07-08 17:29:12 +02:00
Andreas Lauser
96ba492cf7 fix build
*grr* spurious comma! Though I'm wondering a bit why it compiled on my
 machine yesterday...
2014-06-26 11:18:22 +02:00
Kristian Flikka
81dbacc4e1 Changed from semicolon to comma, to fix compilation failure 2014-06-26 10:10:19 +02:00
Joakim Hove
6d88a8dabe Added SWATINIT as supported grid property. 2014-06-25 18:26:31 +02:00
Joakim Hove
390f996f49 Merge pull request #245 from andlaus/add_ntg_gridproperty
grid properties: add support for the NTG keyword
2014-06-25 12:09:03 +02:00
Joakim Hove
59e6215967 Added TransMult object to EclipseState 2014-06-25 12:01:18 +02:00
Andreas Lauser
1a2bacf5d0 grid properties: add support for the NTG keyword
Whoever came up with that keyword deserves a spanking because its
semantics are adapting thickness of the grid layers using the rock
properties without modifying the grid (and thus the output is not
showing what is actually used). As I understood that whole affair,
this is also done incorrectly, because the flow is not distorted in
depth direction but this the permeability should be divided by the NTG
values as the fluids seep through the thinner layers more quickly...

Anyway, we have to implement it, so here we go.
2014-06-25 10:23:24 +02:00
Andreas Lauser
b449a783f9 property operators: add quite a few additional keywords
These are all keywords which are used by the Norne deck within some
property modifiers plus all variants of these. (sans the variants for
radial grids which are completely pointless IMO.) The chances that
keywords which have not been added yet can also be used are very close
to 100%, though.

Note that the default values for these keywords are currently
incorrect as the Eclipse RM states that the values must be looked up
in their corresponding table if the keyword is left unspecified (see
e.g. the documentation SWU). This probably means that we need to
implement "ghosty" keywords which magically appear if they have not
been explicitly specified or maybe we should only provide them in
EclipseState to be able to do the context dependent table look-up
"vodoo"...
2014-06-10 12:21:14 +02:00
Andreas Lauser
6f290a750d Grid properties: get rid of the dimension string for integer properties
this uses a small amount of template magic, to automatically change
the API of the GridProperty class depending on wheter it is
instantiated for double or for int.
2014-06-05 10:12:23 +02:00
Andreas Lauser
7c53febf57 fix the ADD and EQUALS grid property modifiers 2014-06-03 22:42:23 +02:00
Joakim Hove
c7429dbb23 Fixed bug: intGridProperties -> doubleGridProperties 2014-06-03 22:42:23 +02:00
Joakim Hove
7a16646cd8 Added throw when trying to load from unsupported keyword. 2014-06-03 22:42:23 +02:00
Joakim Hove
1fa84d1923 Removed unused method argument. 2014-06-03 22:42:23 +02:00
Joakim Hove
73d88280a5 Renamed getXXXProperty -> getXXXGridProperty 2014-06-03 22:42:23 +02:00
Joakim Hove
40b15c59b3 Added const qualifier to EclipseState::getxxxProperty() methods. 2014-06-03 22:42:23 +02:00
Joakim Hove
5e56f16369 Added double properties for e.g. PERM and PORO to the EclipseState 2014-06-03 22:42:23 +02:00
Joakim Hove
6b29eb5176 Supporting the ADD and EQUALS keywords. 2014-06-03 22:42:23 +02:00
Joakim Hove
eb9e11849e Added support for MULTIPLY keyword. 2014-06-03 22:42:23 +02:00
Joakim Hove
6301fd1ad7 EclipseState now handles COPY keyword. 2014-06-03 22:42:23 +02:00
Joakim Hove
5c04cd4540 Basic BOX support when reading integer properties. 2014-06-03 22:42:23 +02:00
Joakim Hove
f5c5722508 ERT-656: Changed GridProperty to take (nx,ny,nz) instead of volume. 2014-06-03 22:42:23 +02:00
Joakim Hove
e72a0da8b1 Added GridProrpties to EclipseState. 2014-05-16 15:58:04 +02:00
Joakim Hove
02f88ce8ff Added EclipseGrid to the EclipseState class 2014-04-24 09:01:58 +02:00
Atle Haugan
c20c3baf6f Fixed algorithm for concatenating strings 2014-01-30 15:18:34 +01:00
Atle Haugan
1dd448b178 Merge branch 'master' into specialkeywords
Conflicts:
	opm/parser/eclipse/EclipseState/EclipseState.hpp
2014-01-30 15:05:01 +01:00
Atle Haugan
825e976566 New version based on feedback from code review 2014-01-29 19:39:33 +01:00
Joakim Hove
a464429388 Added namespace Phase around the PhaseEnum enum. 2014-01-28 08:18:03 +01:00
Joakim Hove
09f70a2205 Added std::set<enum PhaseEnum> to keep track of phases present to the EclipseState. 2014-01-07 17:52:20 +01:00
Joakim Hove
b90830ea79 Added class EclipseState which currently holds a Schedule instance. 2014-01-07 17:39:07 +01:00