From cb7fa8aaea5df4cc04f24b18539faff8a361a146 Mon Sep 17 00:00:00 2001
From: Timo Koch <timo.koch@iws.uni-stuttgart.de>
Date: Wed, 4 Nov 2015 11:32:20 +0100
Subject: [PATCH] [test][common] Simplify general lens problem

It was not clear where the name of the test is coming from, because
it was set in the cc file. Deduce the name from the modeltype now.
---
 test/common/generalproblem/CMakeLists.txt     |  6 +-
 .../generalproblem/generallensproblem.hh      |  3 +-
 .../generalproblem/test_generalproblem2p.cc   | 88 +++++--------------
 3 files changed, 27 insertions(+), 70 deletions(-)

diff --git a/test/common/generalproblem/CMakeLists.txt b/test/common/generalproblem/CMakeLists.txt
index 7342b3f52a..fdf3aeb607 100644
--- a/test/common/generalproblem/CMakeLists.txt
+++ b/test/common/generalproblem/CMakeLists.txt
@@ -5,21 +5,21 @@ add_dumux_test(test_general_box test_general test_generalproblem2p.cc
                  --script fuzzy
                  --files ${CMAKE_SOURCE_DIR}/test/references/generallens_box-reference.vtu
                          ${CMAKE_CURRENT_BINARY_DIR}/generallens_box-00003.vtu
-                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_general -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_generalproblem2p_reference.input -ModelType Box")
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_general -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_generalproblem2p_reference.input -ModelType box")
 
 add_dumux_test(test_general_cc test_general test_generalproblem2p.cc
                python ${CMAKE_SOURCE_DIR}/bin/runtest.py
                  --script fuzzy
                  --files ${CMAKE_SOURCE_DIR}/test/references/generallens_cc-reference.vtu
                          ${CMAKE_CURRENT_BINARY_DIR}/generallens_cc-00003.vtu
-                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_general -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_generalproblem2p_reference.input -ModelType CC")
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_general -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_generalproblem2p_reference.input -ModelType cc")
 
 add_dumux_test(test_general_dec test_general test_generalproblem2p.cc
                python ${CMAKE_SOURCE_DIR}/bin/runtest.py
                  --script fuzzy
                  --files ${CMAKE_SOURCE_DIR}/test/references/generallens_decoupled-reference.vtu
                          ${CMAKE_CURRENT_BINARY_DIR}/generallens_decoupled-00003.vtu
-                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_general -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_generalproblem2p_reference.input -ModelType Decoupled")
+                 --command "${CMAKE_CURRENT_BINARY_DIR}/test_general -ParameterFile ${CMAKE_CURRENT_SOURCE_DIR}/test_generalproblem2p_reference.input -ModelType decoupled")
 
 #install sources
 install(FILES
diff --git a/test/common/generalproblem/generallensproblem.hh b/test/common/generalproblem/generallensproblem.hh
index 7bbc220d8a..aff71ccf6d 100644
--- a/test/common/generalproblem/generallensproblem.hh
+++ b/test/common/generalproblem/generallensproblem.hh
@@ -249,8 +249,7 @@ public:
      */
     const std::string name() const
     {
-        try { return GET_RUNTIME_PARAM_FROM_GROUP(TypeTag, std::string, Problem, OutputfileName); }
-        catch (...) { return "test_generalproblem2p"; }
+        return "generallens_" + GET_RUNTIME_PARAM(TypeTag, std::string, ModelType);
     }
 
     /*!
diff --git a/test/common/generalproblem/test_generalproblem2p.cc b/test/common/generalproblem/test_generalproblem2p.cc
index 9c2f2bbd60..889af1db6e 100644
--- a/test/common/generalproblem/test_generalproblem2p.cc
+++ b/test/common/generalproblem/test_generalproblem2p.cc
@@ -45,7 +45,7 @@ void usage(const char *progName, const std::string &errorMsg)
                 "\t-Grid.UpperRightX              Dimension of the grid [m]\n"
                 "\t-Grid.UpperRightY              Dimension of the grid [m]\n";
         errorMessageOut += "\n\nThe Optional command line argument:\n"
-                "\t-ModelType                     Can be: Box (2p box model), Decoupled (2p impes model),\n";
+                "\t-ModelType                     Can be: box (2p box model), cc (2p cc model), decoupled (2p impes model),\n";
         std::cout << errorMessageOut << "\n";
     }
 }
@@ -54,76 +54,34 @@ int main(int argc, char** argv)
 {
     Dune::ParameterTree paramTree;
     std::string s(Dumux::readOptions_(argc, argv, paramTree));
-    if (s.empty())
+    if (s.empty()) // everything was read correctly
     {
-        if (paramTree.hasKey("ModelType"))
+        // default model type is box
+        const std::string modelType(paramTree.get<std::string>("ModelType", "box"));
+        if (modelType == "box")
         {
-            std::string modelType(paramTree.get<std::string>("ModelType"));
-
-            if (modelType == "Box")
-            {
-                typedef TTAG(BoxGeneralLensProblem) ProblemTypeTag;
-                typedef GET_PROP(ProblemTypeTag, ParameterTree) ParamTree;
-                Dune::ParameterTree &rt = ParamTree::runTimeParams();
-                rt["ModelType"]=modelType;
-                ParamTree::tree()["Problem.OutputfileName"] = "generallens_box";
-                int startReturn =  Dumux::start<ProblemTypeTag>(argc, argv, usage);
-                std::cout<<"######################################################\n";
-                std::cout<<"Used box 2p model\n";
-                return startReturn;
-            }
-            else if (modelType == "CC")
-            {
-                typedef TTAG(CCGeneralLensProblem) ProblemTypeTag;
-                typedef GET_PROP(ProblemTypeTag, ParameterTree) ParamTree;
-                Dune::ParameterTree &rt = ParamTree::runTimeParams();
-                rt["ModelType"]=modelType;
-                ParamTree::tree()["Problem.OutputfileName"] = "generallens_cc";
-                int startReturn =  Dumux::start<ProblemTypeTag>(argc, argv, usage);
-                std::cout<<"######################################################\n";
-                std::cout<<"Used cc 2p model\n";
-                return startReturn;
-            }
-            else if (modelType == "Decoupled")
-            {
-                typedef TTAG(DecoupledGeneralLensProblem) ProblemTypeTag;
-                typedef GET_PROP(ProblemTypeTag, ParameterTree) ParamTree;
-                Dune::ParameterTree &rt = ParamTree::runTimeParams();
-                rt["ModelType"]=modelType;
-                ParamTree::tree()["Problem.OutputfileName"] = "generallens_decoupled";
-                int startReturn =  Dumux::start<ProblemTypeTag>(argc, argv, usage);
-                std::cout<<"######################################################\n";
-                std::cout<<"Used decoupled 2p model\n";
-                return startReturn;
-            }
-            else
-            {
-                typedef TTAG(BoxGeneralLensProblem) ProblemTypeTag;
-                int startReturn =  Dumux::start<ProblemTypeTag>(argc, argv, usage);
-                std::cout<<"######################################################\n";
-                std::cout<<"Unknwon model type "<<modelType<<" specified\n";
-                std::cout<<"Default to box model\n";
-                return startReturn;
-            }
+            typedef TTAG(BoxGeneralLensProblem) ProblemTypeTag;
+            GET_PROP(ProblemTypeTag, ParameterTree)::runTimeParams()["ModelType"] = "box";
+            return Dumux::start<ProblemTypeTag>(argc, argv, usage);
+        }
+        else if (modelType == "cc")
+        {
+            typedef TTAG(CCGeneralLensProblem) ProblemTypeTag;
+            return Dumux::start<ProblemTypeTag>(argc, argv, usage);
+        }
+        else if (modelType == "decoupled")
+        {
+            typedef TTAG(DecoupledGeneralLensProblem) ProblemTypeTag;
+            return Dumux::start<ProblemTypeTag>(argc, argv, usage);
         }
         else
         {
-            typedef TTAG(BoxGeneralLensProblem) ProblemTypeTag;
-            int startReturn =  Dumux::start<ProblemTypeTag>(argc, argv, usage);
-            std::cout<<"######################################################\n";
-            std::cout<<"No model type specified\n";
-            std::cout<<"Default to box model\n";
-            return startReturn;
+            Dumux::ParameterException e("Unknown ModelType: " + modelType);
+            std::cerr << e << ". Abort!" << std::endl
+                      << "ModelType can be: box (2p box model), cc (2p cc model), decoupled (2p impes model)" << std::endl;
+            exit(1);
         }
     }
     else
-    {
-        typedef TTAG(BoxGeneralLensProblem) ProblemTypeTag;
-        int startReturn =  Dumux::start<ProblemTypeTag>(argc, argv, usage);
-        std::cout<<"######################################################\n";
-        std::cout<<s<<" is not a valid model type specification!\n";
-        std::cout<<"Default to box model\n";
-        return startReturn;
-    }
+        DUNE_THROW(Dumux::ParameterException, "Unknown command line option " << s);
 }
-
-- 
GitLab