Commit Graph

40 Commits

Author SHA1 Message Date
Joakim Hove
aed8c78af5 Move RestartConfig from EclipseState to Schedule 2020-02-19 12:35:07 +01:00
Arne Morten Kvarving
83a7cd04c3 remove unused boost includes
and deal with missing include fallout
2020-02-19 09:51:46 +01:00
Arne Morten Kvarving
fb75bcd4e2 changed: use std::filesystem instead of boost::filesystem
since we still support g++-7, where filesystem is marked experimental,
we introduce a wrapper header and expose the namespace to use
as Opm::filesystem.

for gcc we unconditionally link with libstdc++fs in the python bindings.
the setup.py stuff links as c code, not c++ code, so it is not
automatically added on any gcc version. this might prove unportable
later.
2020-02-13 12:34:19 +01:00
Joakim Hove
6f330a7482 Fixup of alternating records special case 2020-01-06 15:50:36 +01:00
Steinar Foss
e2e8d1eb22 Parser will skip keyword UDT.
Parser will skip UDT.
2019-12-20 12:40:20 +01:00
Steinar Foss
a5c245bc6c keyword ROCK: size->UNKNOWN. Added keyword ADSORP.
added keyword ADSOPR w/ test.

keyword ADSORP: size set to NTSFUN, TABDIMS.

keyword ADSORP size shift:1.

ParserTests: added test for kw ROCK.
2019-12-19 15:27:55 +01:00
Steinar Foss
01b62e4617 added keyword DYNAMICR.
added keyword DYNAMICR.
2019-12-18 09:34:40 +01:00
Steinar Foss
0be84e6529 DeckKeyword: double_record style keywords has empty records as block seperators. 2019-12-16 13:11:20 +01:00
Steinar Foss
87bbc46bbb can parse keywords of type double-record.
...

ParserKeyword: bool double_records set.

added keywords CECONT.

ParserKeywords: double_records set by keyword generator.

Parsertests: added test for parsing double_records.

ParserKeywords.parse: if double_records returns empty.

double_records keywords set to SLASH_TERMINATED.

...

ParserKeyword: for double records size_type = DOUBLE_SLASH_TERMINATED.

double_records: RawKeyword is Raw::DOUBLE_SLASH_TERMINATED.

RawKeyword uses m_isTempFinished.

Parser: can parse files with double-record keywords.

Parser.cpp/RawRecord.cpp: removed comments.

DeckKeyword has param m_isDoubleRecordKeyword.

test ParseDoubleRecords: double records to have linear structure.

DeckKeyword: Can create records of type double_record.

double-records parser test transferred to ParserTests.cpp.

...

...
2019-12-14 18:42:31 +01:00
Steinar Foss
52d69ca167 alernating records: not limited to 2 records. 2019-12-08 05:03:07 +01:00
Steinar Foss
8f8d45532e introducing keywords using alternating records.
added function parseRecords.

introducing alternating keywords.

parserkw: added member isAlternatingKeyword.

kw alternating_records conditions.

...

added keyword STOG.

alternating keyword: created generatortest.

alternating keyword sets bool to true by codegenerator.

alternating_records_kw returns that.

...
2019-12-06 15:51:42 +01:00
Joakim Hove
1599cc5698 Differentiate between valid and invalid default values while parsing 2019-12-04 22:36:28 +01:00
Joakim Hove
6cc3b578f5 Use value::status to keep track of data status in DeckItem
With this commit the DeckItem::push_backDummyDefault() function will push back a
default value T( ). This will give a change in behaviour in downstream code
which has used getData<T> to get DeckItem data unchecked.
2019-11-17 17:23:42 +01:00
Joakim Hove
6dbbc8c037 Remove / rename DeckItem::size() 2019-11-16 18:31:12 +01:00
Joakim Hove
697545cf54 Use dimensions from ParserKeyword 2019-10-16 21:03:02 +02:00
Joakim Hove
9eb0a01c7b Simplify ParserItem::dimensions() api 2019-09-21 20:47:46 +02:00
Joakim Hove
f3bd813f46 Use ParserKeyword values in Parser instead std::unique_ptr<> 2019-09-13 16:21:31 +02:00
Joakim Hove
e5013125f1 Refactor initial parsing stage
- Reduced the amount of state in the RawKeyword and ParserState classes.
 - RawKeyword class has normal constructor - remove init method.
 - The Rawxxx symbols are module private and the header files are not installed.
 - Removed several unused static methods from Rawxxx and ParserKeyword.
2019-08-22 09:32:11 +02:00
Joakim Hove
4258bce6c5 Use reference instead of pointer 2019-08-15 13:39:33 +02:00
Joakim Hove
1d5326f664 Change std::shared_ptr -> std::unique_ptr 2019-08-15 13:23:21 +02:00
Joakim Hove
79a2c1bd4d Removed public property from RawKeyword class 2019-08-15 12:23:29 +02:00
Joakim Hove
e3ade4dff9 Use reference instead of pointer 2019-08-15 11:51:08 +02:00
Joakim Hove
5103e7b604 Removed filename and keyword members from RawRecord 2019-08-14 07:34:56 +02:00
Arne Morten Kvarving
492fba07fc fixed: remove unused assignments 2019-07-10 15:10:29 +02:00
Joakim Hove
b14bd5acce Merge pull request #848 from joakim-hove/scan-ignore-SOH
Ignore character SOH (ASCII 1) while parsing
2019-06-24 10:01:51 +02:00
Joakim Hove
747a643288 Ignore character SOH (ASCII 1) while parsing 2019-06-23 12:09:54 +02:00
Arne Morten Kvarving
2c82787ee9 remove unused variables
quell warnings
2019-06-17 09:08:47 +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
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
2cd6fa2f49 Add overloads without ParseContext and ErrorGuard - update all tests 2019-01-04 13:59:28 +01:00
Joakim Hove
8d33ec55bd Add ParseContext error handler EXIT1 for user error 2018-11-25 11:53:34 +01:00
Bård Skaflestad
fda1719eab Correct RSCONST and RSCONSTT Specifications
This commit ensures that we never try to read more than a single
record of data when parsing the RSCONST keyword.  Previously, the
parser would attempt to parse RSCONST as if it were an unbounded
keyword that was terminated by an empty record.  This, in turn,
would produce the diagnostic message

    Inner exception: Malformed floating point number 'INCLUDE'

when trying to read a specification like

    RSCONST
     0.35  932  /

    -- Check for these data in the future this is important
    INCLUDE
      'RP.dat'  /

While here, also implement 'getSIDouble()' for the Rs value (item 1)
in keywords RSCONST and RSCONSTT by adding the correct unit of
measurement ("dimension") to the keyword specification.

Add unit tests to verify new behaviours.
2018-11-22 13:28:39 +01:00
Bård Skaflestad
baae4a3faf Recognise Requests for Stone's Second Model of 3-Phase Oil Relperm
This commit makes the parser aware of the keywords STONE and STONE2
which both request that the simulation run use Stone's second model
for three-phase relative permeability for oil.
2018-11-12 11:50:45 +01: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
56bd653e51 Added optional shift attribute in keyword size configuration. 2017-11-28 10:09:41 +01:00
Bård Skaflestad
f9973c5cf0 Parser: Recognise Keywords 'LAB' and 'PVT-M'
Add test to verify that the parser recognises these keywords.
2017-10-06 15:34:49 +02:00
Jørgen Kvalsvik
477fa5a988 Combine test files, reduce number of targets
In an effort to reduce the numbers of targets built, and consequently
the repeated work and overhead of compiling boost test, a series of
test programs are combined to larger modules.

Every target typically has a constant cost of 3-6s, depending on the
computer, just for the make to set up dependencies and for the compiler
to parse and compile the testing framework and other dependencies. Each
set of tests typically add very little, so significant savings are
achieved by merging targets.

When tested on a 2015 i5m laptop, this reduced serial, single-core
compile time from ~14m45s to ~11m15s.
2017-06-01 15:29:23 +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