handling unknown aquifer in SUMMARY section
This commit is contained in:
@@ -291,6 +291,7 @@ class KeywordLocation;
|
||||
const static std::string SUMMARY_UNKNOWN_WELL;
|
||||
const static std::string SUMMARY_UNKNOWN_GROUP;
|
||||
const static std::string SUMMARY_UNKNOWN_NODE;
|
||||
const static std::string SUMMARY_UNKNOWN_AQUIFER;
|
||||
const static std::string SUMMARY_UNHANDLED_KEYWORD;
|
||||
const static std::string SUMMARY_UNDEFINED_UDQ;
|
||||
const static std::string SUMMARY_UDQ_MISSING_UNIT;
|
||||
|
||||
@@ -345,6 +345,12 @@ void handleMissingNode( const ParseContext& parseContext, ErrorGuard& errors, co
|
||||
parseContext.handleError( ParseContext::SUMMARY_UNKNOWN_NODE, msg_fmt, location, errors );
|
||||
}
|
||||
|
||||
void handleMissingAquifer( const ParseContext& parseContext, ErrorGuard& errors, const KeywordLocation& location, const int id) {
|
||||
std::string msg_fmt = fmt::format("Request for missing aquifer {} in {{keyword}}\n"
|
||||
"In {{file}} line {{line}}", id);
|
||||
parseContext.handleError(ParseContext::SUMMARY_UNKNOWN_AQUIFER, msg_fmt, location, errors);
|
||||
}
|
||||
|
||||
inline void keywordW( SummaryConfig::keyword_list& list,
|
||||
const std::vector<std::string>& well_names,
|
||||
SummaryConfigNode baseWellParam) {
|
||||
@@ -368,10 +374,9 @@ inline void keywordAquifer( SummaryConfig::keyword_list& list,
|
||||
// maybe loc will be needed
|
||||
inline void keywordAquifer( SummaryConfig::keyword_list& list,
|
||||
const AquiferConfig& aquiferConfig,
|
||||
const ParseContext& /* parseContext */,
|
||||
ErrorGuard& /* errors */,
|
||||
const DeckKeyword& keyword,
|
||||
const Schedule& /* schedule */) {
|
||||
const ParseContext& parseContext,
|
||||
ErrorGuard& errors,
|
||||
const DeckKeyword& keyword) {
|
||||
auto param = SummaryConfigNode {
|
||||
keyword.name(), SummaryConfigNode::Category::Aquifer, keyword.location()
|
||||
}
|
||||
@@ -380,7 +385,11 @@ inline void keywordAquifer( SummaryConfig::keyword_list& list,
|
||||
|
||||
if (keyword.size() && keyword.getDataRecord().getDataItem().hasValue(0)) {
|
||||
for( const int id: keyword.getIntData()) {
|
||||
list.push_back(param.number(id));
|
||||
if (aquiferConfig.hasAquifer(id)) {
|
||||
list.push_back(param.number(id));
|
||||
} else {
|
||||
handleMissingAquifer(parseContext, errors, keyword.location(), id);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
keywordAquifer(list, aquiferConfig, param);
|
||||
@@ -943,7 +952,7 @@ inline void keywordMISC( SummaryConfig::keyword_list& list,
|
||||
case Cat::Connection: return keywordC( list, parseContext, errors, keyword, schedule, dims);
|
||||
case Cat::Segment: return keywordS( list, parseContext, errors, keyword, schedule );
|
||||
case Cat::Node: return keyword_node( list, node_names, parseContext, errors, keyword );
|
||||
case Cat::Aquifer: return keywordAquifer(list, aquiferConfig, parseContext, errors, keyword, schedule);
|
||||
case Cat::Aquifer: return keywordAquifer(list, aquiferConfig, parseContext, errors, keyword);
|
||||
case Cat::Miscellaneous: return keywordMISC( list, keyword );
|
||||
|
||||
default:
|
||||
@@ -997,8 +1006,7 @@ SummaryConfigNode::Category parseKeywordCategory(const std::string& keyword) {
|
||||
if (is_special(keyword)) { return Cat::Miscellaneous; }
|
||||
|
||||
switch (keyword[0]) {
|
||||
// TODO: maybe A and N?
|
||||
case 'A': return Cat::Aquifer;
|
||||
case 'A': if (is_aquifer(keyword)) return Cat::Aquifer; break;
|
||||
case 'W': return Cat::Well;
|
||||
case 'G': return distinguish_group_from_node(keyword);
|
||||
case 'F': return Cat::Field;
|
||||
|
||||
@@ -99,6 +99,7 @@ namespace Opm {
|
||||
addKey(SUMMARY_UNKNOWN_WELL, InputError::THROW_EXCEPTION);
|
||||
addKey(SUMMARY_UNKNOWN_GROUP, InputError::THROW_EXCEPTION);
|
||||
addKey(SUMMARY_UNKNOWN_NODE, InputError::WARN);
|
||||
addKey(SUMMARY_UNKNOWN_AQUIFER, InputError::THROW_EXCEPTION);
|
||||
addKey(SUMMARY_UNHANDLED_KEYWORD, InputError::WARN);
|
||||
addKey(SUMMARY_UNDEFINED_UDQ, InputError::WARN);
|
||||
addKey(SUMMARY_UDQ_MISSING_UNIT, InputError::WARN);
|
||||
@@ -343,6 +344,7 @@ namespace Opm {
|
||||
const std::string ParseContext::SUMMARY_UNKNOWN_WELL = "SUMMARY_UNKNOWN_WELL";
|
||||
const std::string ParseContext::SUMMARY_UNKNOWN_GROUP = "SUMMARY_UNKNOWN_GROUP";
|
||||
const std::string ParseContext::SUMMARY_UNKNOWN_NODE = "SUMMARY_UNKNOWN_NODE";
|
||||
const std::string ParseContext::SUMMARY_UNKNOWN_AQUIFER = "SUMMARY_UNKNOWN_AQUIFER";
|
||||
const std::string ParseContext::SUMMARY_UNHANDLED_KEYWORD = "SUMMARY_UNHANDLED_KEYWORD";
|
||||
const std::string ParseContext::SUMMARY_UNDEFINED_UDQ = "SUMMARY_UNDEFINED_UDQ";
|
||||
const std::string ParseContext::SUMMARY_UDQ_MISSING_UNIT = "SUMMARY_UDQ_MISSING_UNIT";
|
||||
|
||||
Reference in New Issue
Block a user