From a94fc6b126aa09a75b7055b86862ed20c5bc8f33 Mon Sep 17 00:00:00 2001 From: Timo Koch <timo.koch@iws.uni-stuttgart.de> Date: Tue, 15 Nov 2016 14:31:57 +0100 Subject: [PATCH] [generalproblem][test] Use new start.hh functionality --- .../generalproblem/test_generalproblem2p.cc | 60 +++++++++++++------ 1 file changed, 43 insertions(+), 17 deletions(-) diff --git a/test/common/generalproblem/test_generalproblem2p.cc b/test/common/generalproblem/test_generalproblem2p.cc index db14ff8002..f69f4d6fbf 100644 --- a/test/common/generalproblem/test_generalproblem2p.cc +++ b/test/common/generalproblem/test_generalproblem2p.cc @@ -23,8 +23,11 @@ */ #include <config.h> -#include "generallensproblem.hh" #include <dumux/common/start.hh> +#include <dumux/common/defaultusagemessage.hh> +#include <dumux/common/parameterparser.hh> + +#include "generallensproblem.hh" //////////////////////// // the main function @@ -50,36 +53,59 @@ void usage(const char *progName, const std::string &errorMsg) int main(int argc, char** argv) { - Dune::ParameterTree paramTree; - std::string s(Dumux::readOptions_(argc, argv, paramTree)); - if (s.empty()) // everything was read correctly - { + using namespace Dumux; + + try { + + Dune::ParameterTree paramTree; + // if the user just wanted to see the help / usage message show usage and stop program + if(!ParameterParser::parseCommandLineArguments(argc, argv, paramTree, usage)) + { + usage(argv[0], defaultUsageMessage(argv[0])); + return 0; + } + // default model type is box const std::string modelType(paramTree.get<std::string>("ModelType", "box")); if (modelType == "box") { - typedef TTAG(BoxGeneralLensProblem) ProblemTypeTag; + using ProblemTypeTag = TTAG(BoxGeneralLensProblem); + // avoid unused parameter message GET_PROP(ProblemTypeTag, ParameterTree)::runTimeParams()["ModelType"] = "box"; - return Dumux::start<ProblemTypeTag>(argc, argv, usage); + return start<ProblemTypeTag>(argc, argv, usage); } else if (modelType == "cc") { - typedef TTAG(CCGeneralLensProblem) ProblemTypeTag; - return Dumux::start<ProblemTypeTag>(argc, argv, usage); + using ProblemTypeTag = TTAG(CCGeneralLensProblem); + // avoid unused parameter message + GET_PROP(ProblemTypeTag, ParameterTree)::runTimeParams()["ModelType"] = "cc"; + return start<ProblemTypeTag>(argc, argv, usage); } else if (modelType == "sequential") { - typedef TTAG(SequentialGeneralLensProblem) ProblemTypeTag; - return Dumux::start<ProblemTypeTag>(argc, argv, usage); + using ProblemTypeTag = TTAG(SequentialGeneralLensProblem); + // avoid unused parameter message + GET_PROP(ProblemTypeTag, ParameterTree)::runTimeParams()["ModelType"] = "sequential"; + return start<ProblemTypeTag>(argc, argv, usage); } else { - Dumux::ParameterException e("Unknown ModelType: " + modelType); - std::cerr << e << ". Abort!" << std::endl + std::cerr << ParameterException("Unknown ModelType: " + modelType) << ". Abort!" << std::endl << "ModelType can be: box (2p box model), cc (2p cc model), sequential (2p impes model)" << std::endl; - exit(1); + return 1; } } - else - DUNE_THROW(Dumux::ParameterException, "Unknown command line option " << s); -} + catch (ParameterException &e) { + std::cerr << std::endl << e << ". Abort!" << std::endl; + return 1; + } + catch (Dune::Exception &e) { + std::cerr << "Dune reported error: " << e << std::endl; + return 3; + } + catch (...) { + std::cerr << "Unknown exception thrown!\n"; + return 4; + } + +} // end main -- GitLab