From aaba2173def9ff419e42b291e66d1cbabe39d3b4 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Tue, 7 Apr 2015 16:04:30 +0200
Subject: [PATCH] [Extend]  Introduce a dimension-specific config

---
 src/CMakeLists.txt                |  2 ++
 src/sand-wedge-data/parset-2D.cfg | 21 +++++++++++++++++++++
 src/sand-wedge-data/parset-3D.cfg | 21 +++++++++++++++++++++
 src/sand-wedge-data/parset.cfg    |  7 -------
 src/sand-wedge.cc                 |  4 ++++
 5 files changed, 48 insertions(+), 7 deletions(-)
 create mode 100644 src/sand-wedge-data/parset-2D.cfg
 create mode 100644 src/sand-wedge-data/parset-3D.cfg

diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e8454b20..7da8041f 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -19,6 +19,8 @@ set(SOURCE_FILES
 file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/sand-wedge-data")
 dune_symlink_to_source_files("sand-wedge-data/boundaryconditions.py")
 dune_symlink_to_source_files("sand-wedge-data/parset.cfg")
+dune_symlink_to_source_files("sand-wedge-data/parset-2D.cfg")
+dune_symlink_to_source_files("sand-wedge-data/parset-3D.cfg")
 
 find_package(Boost REQUIRED system filesystem serialization)
 
diff --git a/src/sand-wedge-data/parset-2D.cfg b/src/sand-wedge-data/parset-2D.cfg
new file mode 100644
index 00000000..a61cfba2
--- /dev/null
+++ b/src/sand-wedge-data/parset-2D.cfg
@@ -0,0 +1,21 @@
+# -*- mode:conf -*-
+[boundary.friction]
+smallestDiameter= 2e-3  # [m]
+
+[timeSteps]
+refinementTolerance = 1e-5
+
+[u0.solver]
+tolerance         = 1e-8
+
+[a0.solver]
+tolerance         = 1e-8
+
+[v.solver]
+tolerance         = 1e-8
+
+[v.fpi]
+tolerance         = 1e-5
+
+[solver.tnnmg.linear]
+tolerance          = 1e-10
diff --git a/src/sand-wedge-data/parset-3D.cfg b/src/sand-wedge-data/parset-3D.cfg
new file mode 100644
index 00000000..3495d53f
--- /dev/null
+++ b/src/sand-wedge-data/parset-3D.cfg
@@ -0,0 +1,21 @@
+# -*- mode:conf -*-
+[boundary.friction]
+smallestDiameter= 2e-2  # [m]
+
+[timeSteps]
+refinementTolerance = 1e-5
+
+[u0.solver]
+tolerance         = 1e-6
+
+[a0.solver]
+tolerance         = 1e-6
+
+[v.solver]
+tolerance         = 1e-6
+
+[v.fpi]
+tolerance         = 1e-5
+
+[solver.tnnmg.linear]
+tolerance          = 1e-10
diff --git a/src/sand-wedge-data/parset.cfg b/src/sand-wedge-data/parset.cfg
index a0841f42..21c7d5fc 100644
--- a/src/sand-wedge-data/parset.cfg
+++ b/src/sand-wedge-data/parset.cfg
@@ -21,7 +21,6 @@ shearViscosity  = 1e4   # [Pas]
 bulkViscosity   = 1e4   # [Pas]
 
 [boundary.friction]
-smallestDiameter= 2e-3  # [m]
 C               = 10    # [Pa]
 mu0             = 0.7   # [ ]
 V0              = 5e-5  # [m/s]
@@ -42,32 +41,26 @@ first = 0
 spacing = 20
 
 [timeSteps]
-refinementTolerance = 1e-5
 scheme = newmark
 
 [u0.solver]
-tolerance         = 1e-8
 maximumIterations = 100000
 verbosity         = quiet
 
 [a0.solver]
-tolerance         = 1e-8
 maximumIterations = 100000
 verbosity         = quiet
 
 [v.solver]
-tolerance         = 1e-8
 maximumIterations = 100000
 verbosity         = quiet
 
 [v.fpi]
-tolerance         = 1e-5
 maximumIterations = 10000
 lambda            = 0.5
 
 [solver.tnnmg.linear]
 maxiumumIterations = 100000
-tolerance          = 1e-10
 pre                = 3
 cycle              = 1  # 1 = V, 2 = W, etc.
 post               = 3
diff --git a/src/sand-wedge.cc b/src/sand-wedge.cc
index 24c68e86..c717b887 100644
--- a/src/sand-wedge.cc
+++ b/src/sand-wedge.cc
@@ -92,6 +92,10 @@ Dune::ParameterTree getParameters(int argc, char *argv[],
   fs::path sharedParsetPath(dataDirectory / fs::path(sharedParsetName));
   Dune::ParameterTreeParser::readINITree(sharedParsetPath.string(), parset);
 
+  std::string individualParsetName(str(boost::format("parset-%dD.cfg") % dims));
+  fs::path individualParsetPath(dataDirectory / fs::path(individualParsetName));
+  Dune::ParameterTreeParser::readINITree(individualParsetPath.string(), parset);
+
   Dune::ParameterTreeParser::readOptions(argc, argv, parset);
 
   return parset;
-- 
GitLab