diff --git a/opm/models/discretization/common/fvbaseproblem.hh b/opm/models/discretization/common/fvbaseproblem.hh index 76701c007..98ab65703 100644 --- a/opm/models/discretization/common/fvbaseproblem.hh +++ b/opm/models/discretization/common/fvbaseproblem.hh @@ -37,6 +37,7 @@ #include +#include #include #include #include @@ -268,7 +269,9 @@ public: * the next regular parameter. If this is less than 1, it indicated that the * positional parameter was invalid. */ - static int handlePositionalParameter(std::set&, + static int handlePositionalParameter(std::function, + std::set&, std::string& errorMsg, int, const char** argv, diff --git a/opm/models/utils/parametersystem.hh b/opm/models/utils/parametersystem.hh index b5366884a..8457eb8cd 100644 --- a/opm/models/utils/parametersystem.hh +++ b/opm/models/utils/parametersystem.hh @@ -41,6 +41,7 @@ #include #include +#include #include #include #include @@ -449,7 +450,8 @@ inline void printUsage(const std::string& helpPreamble, } /// \cond 0 -inline int noPositionalParameters_(std::set&, +inline int noPositionalParameters_(std::function, + std::set&, std::string& errorMsg, int, const char** argv, @@ -613,8 +615,11 @@ std::string parseCommandLineOptions(int argc, || argv[i][1] != '-') { std::string errorMsg; - int numHandled = posArgCallback(seenKeys, errorMsg, argc, argv, - i, numPositionalParams); + int numHandled = posArgCallback([](const std::string& k, const std::string& v) + { + MetaData::tree()[k] = v; + }, seenKeys, errorMsg, + argc, argv, i, numPositionalParams); if (numHandled < 1) { std::ostringstream oss; diff --git a/opm/simulators/flow/FlowGenericProblem.hpp b/opm/simulators/flow/FlowGenericProblem.hpp index 2531cd6b2..5d3be7bbd 100644 --- a/opm/simulators/flow/FlowGenericProblem.hpp +++ b/opm/simulators/flow/FlowGenericProblem.hpp @@ -52,7 +52,8 @@ class EclipseState; class Schedule; template class LookUpData; -int eclPositionalParameter(Dune::ParameterTree& tree, +int eclPositionalParameter(std::function addKey, std::set& seenParams, std::string& errorMsg, const char** argv, diff --git a/opm/simulators/flow/FlowGenericProblem_impl.hpp b/opm/simulators/flow/FlowGenericProblem_impl.hpp index 7c0fa2ed1..6c5f6b9b6 100644 --- a/opm/simulators/flow/FlowGenericProblem_impl.hpp +++ b/opm/simulators/flow/FlowGenericProblem_impl.hpp @@ -45,7 +45,7 @@ namespace Opm { -int eclPositionalParameter(Dune::ParameterTree& tree, +int eclPositionalParameter(std::function addKey, std::set& seenParams, std::string& errorMsg, const char** argv, @@ -73,7 +73,7 @@ int eclPositionalParameter(Dune::ParameterTree& tree, return 0; } - tree["EclDeckFileName"] = argv[paramIdx]; + addKey("EclDeckFileName", argv[paramIdx]); seenParams.insert("EclDeckFileName"); return 1; } diff --git a/opm/simulators/flow/FlowProblem.hpp b/opm/simulators/flow/FlowProblem.hpp index e64120946..a7125da59 100644 --- a/opm/simulators/flow/FlowProblem.hpp +++ b/opm/simulators/flow/FlowProblem.hpp @@ -228,14 +228,16 @@ public: /*! * \copydoc FvBaseProblem::handlePositionalParameter */ - static int handlePositionalParameter(std::set& seenParams, + static int handlePositionalParameter(std::function addKey, + std::set& seenParams, std::string& errorMsg, int, const char** argv, int paramIdx, int) { - return eclPositionalParameter(Parameters::MetaData::tree(), + return eclPositionalParameter(addKey, seenParams, errorMsg, argv,