Commit Graph

635 Commits

Author SHA1 Message Date
Joakim Hove
54af290cc0 Extend UDQ eval code
With this commit the code to evaluate UDQ values has been extended/refactored in
many ways:

 - There is an increased awarenwss of variable type, i.e. a well related UDQ
   versus a field related UDQ. The variable type flows through the AST, and it
   is verified that the expression to evaluate and the target variable are of
   compatible types.

 - Have added support for UDQ field variables and UDQ group variables.

 - The UDQSet type and the UDQDefine::eval() have been refactored to multiplex
   on all the UDQ types, and the specialized UDQWellSet has been removed.
2019-05-27 16:43:22 +02:00
Kai Bao
01c0820d4c addressing reviewing comments from PR#720
and adding more tests
2019-05-24 10:19:50 +02:00
Kai Bao
584defebe0 ParseContext is used to handle the exceptions when parsing COMPSEGS 2019-05-24 10:19:50 +02:00
Joakim Hove
1c82a8ad39 Add alternative well implementation Well2 2019-05-09 09:20:23 +02:00
Joakim Hove
b148769cc6 Internalize UDA values in the deck 2019-04-28 16:08:02 +02:00
Andreas Lauser
fe1272a2e6 add the FILEUNIT keyword
currently, this keyword is basically ignored: setting the unit system
of a file to something different than the deck unit system will cause
`Opm::checkDeck()` to produce a warning.
2019-04-04 16:55:19 +02:00
Joakim Hove
fdac0f576c Add input type UDA -> double 2019-04-01 18:32:06 +02:00
Joakim Hove
e6aecbd7ac ParserItem: differentiate between input type and internal data type
Differentiate between the input type, as specified in the json configuration
file, and the internal native type used to store data. This is a many-to-one
mapping, where e.g. both the input types STRING and RAW_STRING map to the
internal datatype std::string.

Additional changes:

 - Have removed several ParserItem() constructors.
 - The size_type::SINGLE is default for a ParserItem, and not set explicitly in
   the generated ParserKeywords.cpp file.
 - Have removed a call to boost::lexical_cast<> - just use std::to_string()
2019-04-01 18:32:06 +02:00
Joakim Hove
c9821faddc Changed UDQDefine to take UDQParams argument 2019-03-14 12:40:57 +01:00
Joakim Hove
f4196ff25e Add ParseContext for undefined UDQ 2019-03-09 10:19:11 +01:00
Joakim Hove
b4edd0acda White space 2019-03-09 09:01:21 +01:00
Joakim Hove
af7693ef6b Add parse option keep '/' in data sections
The records are norally terminated on the first unquoted '/', but for the UDQ
and ACTIONX keywords the data sections of a keyword contain mathematical
expressions which can contain '/' literals. This commit adds a per-keyword
ability to terminate the records on the last '/' instead of the first '/'.
2019-03-05 07:15:29 +01:00
Bård Skaflestad
7bf635ef59 Parse Context: Add Keys for Items 1-4 of WELLDIMS
This commit introduces Parse Context keys that govern the parser's
behaviour in the case of a simulation run using dynamic sizes that
happen to exceed the maximum sizes declared in the RUNSPEC keyword
WELLDIMS.  The default action for these keys is DELAYED_EXIT1, which
reflects the fact that it is impossible to create ECLIPSE-compatible
restart files if the run exceeds those maximum sizes.
2019-02-07 14:29:08 +01:00
Joakim Hove
65b629e423 Add ParseContext::PARSE_LONG_KEYWORD
The ParserContext error mode PARSE_LONG_KEYWORD is used to handle keywords
longer than 8 characters. The lenient option is to only consider the first 8
characters.
2019-02-04 17:17:00 +01:00
Joakim Hove
29db657757 Add new error modes SIMULATOR_KEYWORD_NOT_SUPPORTED 2019-01-25 18:07:46 +01:00
Joakim Hove
cf42146d84 Add error mode DELAYED_EXIT1 to collect all errors 2019-01-07 12:38:05 +01:00
Joakim Hove
2cd6fa2f49 Add overloads without ParseContext and ErrorGuard - update all tests 2019-01-04 13:59:28 +01:00
Joakim Hove
bf52e6d123 Added ErrorGuard& arguments to library 2019-01-03 13:14:40 +01:00
Joakim Hove
ad001df804 Add small class ErrorGuard to manage errors from parsing 2019-01-03 11:54:48 +01:00
Joakim Hove
6832788eef Fix mismerge of broken formatting 2018-12-20 16:40:03 +01:00
Joakim Hove
00d1607347 Add error modes RPT_MIXED_STYLE and RPT_UNKNOWN_MNEONIC 2018-12-20 13:47:31 +01:00
Joakim Hove
bf6732559f Add ParseContext error mode SUMMARY_UNHANDLED_KEWORD 2018-12-19 10:09:02 +01:00
Joakim Hove
8d33ec55bd Add ParseContext error handler EXIT1 for user error 2018-11-25 11:53:34 +01:00
Joakim Hove
b8c5d8c129 Add whitelist of keywords allowed in ACTIONX block 2018-10-27 15:59:32 +02:00
Joakim Hove
c938765224 Ability to ignore named keywords in ParseContext 2018-10-08 18:07:21 +02:00
Lars Petter Øren Hauge
675858f1e0 Handle wildcard in group keywords
Added function getGroups(pattern) to allow records with wildcard.

Included the functionality for GCONPROD, GCONINJE and GEFAC - currently
the only group keywords that should accept wildcards.
2018-05-14 09:26:22 +02:00
Lars Petter Øren Hauge
f2cb5fe9de Add INVALID_WELL parse context
Handle invalid wellpatterns for COMPDAT.

Given a deck with:

----
WELSPECS
  'PROD' 'G1'  10 10 8400 'OIL' /
/
COMPDAT
  'SOMETHINGELSE' 10 10 3 3 'OPEN' 1* 1* 0.5 /
/
----

OPM will now by default abort and inform the user that no well match
"SOMETHINGELSE".
2018-05-14 09:26:21 +02:00
Joakim Hove
a65d6d7152 Add value type RAW_STRING
When parsing RAW_STRING items the following applies:

 - Quotes are retained - as in 'P20'
 - Asteriks are not replaced with defaults
2018-03-30 13:35:23 +02:00
Joakim Hove
aa06db984c Remove unused enum for ParserItem value type 2018-03-26 17:04:08 +02:00
Steinar Foss
d9ffb579e1 Removed MessageContainer. OpmLog used instead.
...

...

...

GenerateKeywords.cmake changed.

ParserContext.handleerror takes only two args.

Schedule: removed all MessageContainer.

...

...

...

GridProperties: removed MessageContiner.

...

Eclipse3DProperties: removed MessageContainer.

...

TabelManager:removed MessageContainer.

...

.nnn.

...

...

...

...

...

...

...

...

...

...

...

...

...
2018-03-26 10:15:18 +02:00
Joakim Hove
c904c6bf98 Added action argument to ParseContext::addKey() 2018-02-19 14:52:21 +01:00
Steinar Foss
5ef8d22a48 IGNORE_EXTRA_RECORDS changed to PARSE_EXTRA_RECORDS.
...
2018-01-16 16:58:29 +01:00
Steinar Foss
e85162703e Added ParseContext::IGNORE_EXTRA_RECORDS
...

...

...

...

...
2018-01-16 16:58:29 +01:00
Joakim Hove
22074a46bf Added one-argument ParseContext constructor. 2017-12-03 08:38:27 +01:00
Joakim Hove
56bd653e51 Added optional shift attribute in keyword size configuration. 2017-11-28 10:09:41 +01:00
Arne Morten Kvarving
b353126acf pass by reference 2017-06-09 17:38:42 +02:00
Arne Morten Kvarving
18f15e7432 mark constructors as explicit 2017-06-09 17:38:42 +02:00
Jørgen Kvalsvik
e884b0664c Redesign cmake
Tune the makefile according to new principles, which adds a few bells
and whistles and for clarity.

Synopsis:

* The dependency on opm-common is completely gone. This is reflected in
  travis and appveyor as well. No non-kitware cmake modules are used.
* Directories are flattened, quite a bit - source code is located in the
  lib/ directory if it belongs to opm-parser, and external/ if third
  party.
* The sibling build feature is implemented through cmake's
  export(PACKAGE) rather than implicitly looking through source files.
* Targets explicitly set required public and private include
  directories, compile options and definitions, which cmake will handle
  and propagate
* opm-parser-config.cmake for downstream users is now provided.
* Dependencies are set up using targets. In the future, when cmake 3.x+
  can be used, these should be either targets from newer Find modules,
  or interface libraries.
* Fewer system specific assumptions are coded in, instead we assume
  cmake or users set up system specific details.
* All module wide configuration and looking up libraries is handled in
  the root makefile - all sub directories only set up libraries and
  compile options for the module in question.
* Targets are defined and links handled transitively because cmake now
  is told about them. ${module_LIBRARIES} variables are gone.

This is largely guided by the principles outlined in
https://rix0r.nl/blog/2015/08/13/cmake-guide/

Most source files are just moved - if they have some content change then
it's nothing more than include fixes or similar in order to make them
compile.
2017-06-01 15:29:23 +02:00
Joakim Hove
39859c8d88 Skip random text when unknown keyword. 2017-03-29 18:25:23 +02:00
Tor Harald Sandve
cdfd54593f Default saturation table_id in completions with cell satnum value
Pass eclGridProperties from EclipseState to Completions in order to set
default saturation table. Most changes are due to interface change in
Schedule(...)
2017-02-16 08:27:29 +01:00
Atgeirr Flø Rasmussen
8936d9ab38 Fix tests: actually check for keyword in deck. 2017-02-13 11:16:32 +01:00
Atgeirr Flø Rasmussen
8527e646a1 Improve tests by checking for present keyword. 2017-02-10 13:02:21 +01:00
Atgeirr Flø Rasmussen
b82d9eb9b3 Add tests and test files with backslashes in INCLUDE paths. 2017-02-09 21:17:14 +01:00
Atgeirr Flø Rasmussen
b52381ca14 In INCLUDE paths, replace backslashes with slashes. 2017-02-09 21:08:16 +01:00
Jørgen Kvalsvik
5986393930 Don't crash keyword compilation on broken locales
Work around a weakness of older boosts by forcing C locale if
std::locale throws.

The real solution is to not have broken locales, but this should make it
slightly easier to get the JSON keywords compiled.
2016-12-06 09:39:36 +01:00
Joakim Hove
f3f87b5935 Merge pull request #950 from jokva/stack-allocd-items
Stack allocd items
2016-11-11 11:07:43 +01:00
Jørgen Kvalsvik
a22196546a ParserItem no longer requires heap alloc
Redesign of ParserItem so that its sum type nature no longer mandates
indirection, but rather a tag check on all operations. Because of this,
ParserRecords can now store ParserItems directly, and iterators are no
longer iterators to pointers, but behave like normal vector iterators.
2016-11-07 12:24:38 +01:00
Jørgen Kvalsvik
fdb772e075 DeckItem without internal inheritance.
Replaces the internal inheritance + unique_ptr scheme to a flat sum type
similar scheme that uses a tag to determine which operations are legal,
rather than using the indirection itself as a tag.
2016-11-07 12:24:38 +01:00
Anders Matheson
eacbade0c1 Remove default Phases from Schedule constructor 2016-11-02 15:50:39 +01:00
Joakim Hove
17ff5847b4 Merge pull request #947 from jokva/heuristic-short-circuit-strip
Short circuit when line terminator is found first
2016-10-21 08:50:32 +02:00