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.
This commit is contained in:
Bård Skaflestad 2019-02-06 17:08:26 +01:00
parent c138e78ddb
commit 7bf635ef59
2 changed files with 25 additions and 2 deletions

View File

@ -194,6 +194,21 @@ namespace Opm {
*/
const static std::string PARSE_MISSING_INCLUDE;
/// Dynamic number of wells exceeds maximum declared in
/// RUNSPEC keyword WELLDIMS (item 1).
const static std::string RUNSPEC_NUMWELLS_TOO_LARGE;
/// Dynamic number of connections per well exceeds maximum
/// declared in RUNSPEC keyword WELLDIMS (item 2).
const static std::string RUNSPEC_CONNS_PER_WELL_TOO_LARGE;
/// Dynamic number of groups exceeds maximum number declared in
/// RUNSPEC keyword WELLDIMS (item 3).
const static std::string RUNSPEC_NUMGROUPS_TOO_LARGE;
/// Dynamic group size exceeds maximum number declared in
/// RUNSPEC keyword WELLDIMS (item 4).
const static std::string RUNSPEC_GROUPSIZE_TOO_LARGE;
/*
Should we allow keywords of length more than eight characters? If the

View File

@ -79,6 +79,11 @@ namespace Opm {
addKey(PARSE_MISSING_INCLUDE, InputError::EXIT1);
addKey(PARSE_LONG_KEYWORD, InputError::WARN);
this->addKey(RUNSPEC_NUMWELLS_TOO_LARGE, InputError::DELAYED_EXIT1);
this->addKey(RUNSPEC_CONNS_PER_WELL_TOO_LARGE, InputError::DELAYED_EXIT1);
this->addKey(RUNSPEC_NUMGROUPS_TOO_LARGE, InputError::DELAYED_EXIT1);
this->addKey(RUNSPEC_GROUPSIZE_TOO_LARGE, InputError::DELAYED_EXIT1);
addKey(UNSUPPORTED_SCHEDULE_GEO_MODIFIER, InputError::THROW_EXCEPTION);
addKey(UNSUPPORTED_COMPORD_TYPE, InputError::THROW_EXCEPTION);
addKey(UNSUPPORTED_INITIAL_THPRES, InputError::THROW_EXCEPTION);
@ -301,6 +306,11 @@ namespace Opm {
const std::string ParseContext::PARSE_MISSING_INCLUDE = "PARSE_MISSING_INCLUDE";
const std::string ParseContext::PARSE_LONG_KEYWORD = "PARSE_LONG_KEYWORD";
const std::string ParseContext::RUNSPEC_NUMWELLS_TOO_LARGE = "RUNSPEC_NUMWELLS_TOO_LARGE";
const std::string ParseContext::RUNSPEC_CONNS_PER_WELL_TOO_LARGE = "RUNSPEC_CONNS_PER_WELL_TOO_LARGE";
const std::string ParseContext::RUNSPEC_NUMGROUPS_TOO_LARGE = "RUNSPEC_NUMGROUPS_TOO_LARGE";
const std::string ParseContext::RUNSPEC_GROUPSIZE_TOO_LARGE = "RUNSPEC_GROUPSIZE_TOO_LARGE";
const std::string ParseContext::UNSUPPORTED_SCHEDULE_GEO_MODIFIER = "UNSUPPORTED_SCHEDULE_GEO_MODIFIER";
const std::string ParseContext::UNSUPPORTED_COMPORD_TYPE = "UNSUPPORTED_COMPORD_TYPE";
const std::string ParseContext::UNSUPPORTED_INITIAL_THPRES = "UNSUPPORTED_INITIAL_THPRES";
@ -321,5 +331,3 @@ namespace Opm {
const std::string ParseContext::SIMULATOR_KEYWORD_NOT_SUPPORTED = "SIMULATOR_KEYWORD_NOT_SUPPORTED";
const std::string ParseContext::SIMULATOR_KEYWORD_ITEM_NOT_SUPPORTED = "SIMULATOR_KEYWORD_ITEM_NOT_SUPPORTED";
}