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.
...
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.
...
...
- 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.
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.
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.
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()
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 '/'.
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.
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.
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.
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".