From 24ac5801a9e8a08784902adb2f48072e3c563883 Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Thu, 5 Jan 2023 11:07:22 +0100 Subject: [PATCH] eclproblem: move core of handlePositionalParameter make it a typetag independent helper function in generic problem source --- ebos/eclgenericproblem.cc | 37 +++++++++++++++++++++++++++++++++++++ ebos/eclgenericproblem.hh | 11 +++++++++++ ebos/eclproblem.hh | 32 +++++--------------------------- 3 files changed, 53 insertions(+), 27 deletions(-) diff --git a/ebos/eclgenericproblem.cc b/ebos/eclgenericproblem.cc index 5d62a060c..a6eabb5f0 100644 --- a/ebos/eclgenericproblem.cc +++ b/ebos/eclgenericproblem.cc @@ -33,6 +33,9 @@ #include #include + +#include + #if HAVE_DUNE_ALUGRID #include #include @@ -47,12 +50,46 @@ #include +#include #include #include #include namespace Opm { +int eclPositionalParameter(Dune::ParameterTree& tree, + std::set& seenParams, + std::string& errorMsg, + const char** argv, + int paramIdx) +{ + std::string param = argv[paramIdx]; + size_t i = param.find('='); + if (i != std::string::npos) { + std::string oldParamName = param.substr(0, i); + std::string oldParamValue = param.substr(i+1); + std::string newParamName = "--" + oldParamName; + std::replace(newParamName.begin(), + newParamName.end(), '_' , '-'); + errorMsg = + "The old syntax to specify parameters on the command line is no longer supported: " + "Try replacing '" + oldParamName + "=" + oldParamValue + "' with "+ + "'" + newParamName + "=" + oldParamValue + "'!"; + return 0; + } + + if (seenParams.count("EclDeckFileName") > 0) { + errorMsg = + "Parameter 'EclDeckFileName' specified multiple times" + " as a command line parameter"; + return 0; + } + + tree["EclDeckFileName"] = argv[paramIdx]; + seenParams.insert("EclDeckFileName"); + return 1; +} + template EclGenericProblem:: EclGenericProblem(const EclipseState& eclState, diff --git a/ebos/eclgenericproblem.hh b/ebos/eclgenericproblem.hh index 872b53975..15e6e870e 100644 --- a/ebos/eclgenericproblem.hh +++ b/ebos/eclgenericproblem.hh @@ -32,15 +32,26 @@ #include #include +#include #include #include +namespace Dune { +class ParameterTree; +} + namespace Opm { class Deck; class EclipseState; class Schedule; +int eclPositionalParameter(Dune::ParameterTree& tree, + std::set& seenParams, + std::string& errorMsg, + const char** argv, + int paramIdx); + /*! * \ingroup EclBlackOilSimulator * diff --git a/ebos/eclproblem.hh b/ebos/eclproblem.hh index f6f6f481e..e8517aeb3 100644 --- a/ebos/eclproblem.hh +++ b/ebos/eclproblem.hh @@ -734,33 +734,11 @@ public: { using ParamsMeta = GetProp; Dune::ParameterTree& tree = ParamsMeta::tree(); - - std::string param = argv[paramIdx]; - size_t i = param.find('='); - if (i != std::string::npos) { - std::string oldParamName = param.substr(0, i); - std::string oldParamValue = param.substr(i+1); - std::string newParamName = "--" + oldParamName; - for (size_t j = 0; j < newParamName.size(); ++j) - if (newParamName[j] == '_') - newParamName[j] = '-'; - errorMsg = - "The old syntax to specify parameters on the command line is no longer supported: " - "Try replacing '"+oldParamName+"="+oldParamValue+"' with "+ - "'"+newParamName+"="+oldParamValue+"'!"; - return 0; - } - - if (seenParams.count("EclDeckFileName") > 0) { - errorMsg = - "Parameter 'EclDeckFileName' specified multiple times" - " as a command line parameter"; - return 0; - } - - tree["EclDeckFileName"] = argv[paramIdx]; - seenParams.insert("EclDeckFileName"); - return 1; + return eclPositionalParameter(tree, + seenParams, + errorMsg, + argv, + paramIdx); } /*!