From 7cd7fde6f60ca68ce90474c2097d46ac7d769cfa Mon Sep 17 00:00:00 2001
From: Oliver Sander <oliver.sander@tu-dresden.de>
Date: Fri, 5 Jan 2018 11:48:20 +0100
Subject: [PATCH] Allow switching between cube and simplex structured grids at
 runtime

---
 src/compute-disc-error.cc | 11 ++++++++---
 src/harmonicmaps.cc       | 10 ++++++++--
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/src/compute-disc-error.cc b/src/compute-disc-error.cc
index 27b6bd37..14b9551f 100644
--- a/src/compute-disc-error.cc
+++ b/src/compute-disc-error.cc
@@ -355,14 +355,19 @@ int main (int argc, char *argv[]) try
 
   FieldVector<double,dimworld> lower(0), upper(1);
 
-  if (parameterSet.get<bool>("structuredGrid"))
+  std::string structuredGridType = parameterSet["structuredGrid"];
+  if (structuredGridType != "false" )
   {
     lower = parameterSet.get<FieldVector<double,dimworld> >("lower");
     upper = parameterSet.get<FieldVector<double,dimworld> >("upper");
 
     auto elements = parameterSet.get<std::array<unsigned int,dim> >("elements");
-    grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements);
-    referenceGrid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements);
+    if (structuredGridType == "simplex")
+      grid = StructuredGridFactory<GridType>::createSimplexGrid(lower, upper, elements);
+    else if (structuredGridType == "cube")
+      grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements);
+    else
+      DUNE_THROW(Exception, "Unknown structured grid type '" << structuredGridType << "' found!");
   }
   else
   {
diff --git a/src/harmonicmaps.cc b/src/harmonicmaps.cc
index 09b50c94..f7902d9b 100644
--- a/src/harmonicmaps.cc
+++ b/src/harmonicmaps.cc
@@ -132,13 +132,19 @@ int main (int argc, char *argv[])
     FieldVector<double,dim> lower(0), upper(1);
     std::array<unsigned int,dim> elements;
 
-    if (parameterSet.get<bool>("structuredGrid")) {
+    std::string structuredGridType = parameterSet["structuredGrid"];
+    if (structuredGridType != "false" ) {
 
         lower = parameterSet.get<FieldVector<double,dim> >("lower");
         upper = parameterSet.get<FieldVector<double,dim> >("upper");
 
         elements = parameterSet.get<std::array<unsigned int,dim> >("elements");
-        grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements);
+        if (structuredGridType == "simplex")
+            grid = StructuredGridFactory<GridType>::createSimplexGrid(lower, upper, elements);
+        else if (structuredGridType == "cube")
+            grid = StructuredGridFactory<GridType>::createCubeGrid(lower, upper, elements);
+        else
+          DUNE_THROW(Exception, "Unknown structured grid type '" << structuredGridType << "' found!");
 
     } else {
 
-- 
GitLab