From 93c8dfcf954f89dd35049ea9423a26d3aa09d3ee Mon Sep 17 00:00:00 2001
From: Lisa Julia Nebel <lisa_julia.nebel@tu-dresden.de>
Date: Mon, 27 Apr 2020 14:57:21 +0200
Subject: [PATCH] Repair damping parameter

---
 dune/elasticity/common/trustregionsolver.cc      | 4 +++-
 dune/elasticity/common/trustregionsolver.hh      | 6 +++++-
 problems/finite-strain-elasticity-bending.parset | 3 +++
 src/finite-strain-elasticity.cc                  | 4 +++-
 4 files changed, 14 insertions(+), 3 deletions(-)

diff --git a/dune/elasticity/common/trustregionsolver.cc b/dune/elasticity/common/trustregionsolver.cc
index 0d1da51..304e284 100644
--- a/dune/elasticity/common/trustregionsolver.cc
+++ b/dune/elasticity/common/trustregionsolver.cc
@@ -39,7 +39,8 @@ setup(const typename BasisType::GridView::Grid& grid,
          int nu1,
          int nu2,
          int baseIterations,
-         double baseTolerance)
+         double baseTolerance,
+         double damping)
 
 {
     grid_                     = &grid;
@@ -53,6 +54,7 @@ setup(const typename BasisType::GridView::Grid& grid,
     ignoreNodes_              = std::make_shared<Dune::BitSetVector<blocksize>>(dirichletNodes);
     baseIterations_           = baseIterations;
     baseTolerance_            = baseTolerance;
+    damping_                  = damping;
 
     int numLevels = grid_->maxLevel()+1;
 
diff --git a/dune/elasticity/common/trustregionsolver.hh b/dune/elasticity/common/trustregionsolver.hh
index d819a2a..2043fb3 100644
--- a/dune/elasticity/common/trustregionsolver.hh
+++ b/dune/elasticity/common/trustregionsolver.hh
@@ -79,7 +79,8 @@ public:
                int nu1,
                int nu2,
                int baseIterations,
-               double baseTolerance);
+               double baseTolerance,
+               double damping);
 
     void setIgnoreNodes(const Dune::BitSetVector<blocksize>& ignoreNodes)
     {
@@ -119,6 +120,9 @@ protected:
     /** \brief Error tolerance of the multigrid QP solver */
     double innerTolerance_;
 
+    /** \brief Damping for the smoothers in the multigrid QP solver */
+    double damping_;
+
     /** \brief Maximum number of base solver iterations */
     int baseIterations_;
 
diff --git a/problems/finite-strain-elasticity-bending.parset b/problems/finite-strain-elasticity-bending.parset
index 03cebdb..3eaf945 100644
--- a/problems/finite-strain-elasticity-bending.parset
+++ b/problems/finite-strain-elasticity-bending.parset
@@ -35,6 +35,9 @@ nu1 = 3
 # Number of postsmoothing steps
 nu2 = 3
 
+# Damping for the smoothers of the multigrid solver
+damping = 1.0
+
 # Number of coarse grid corrections
 mu = 1
 
diff --git a/src/finite-strain-elasticity.cc b/src/finite-strain-elasticity.cc
index e5dccd8..28e4970 100644
--- a/src/finite-strain-elasticity.cc
+++ b/src/finite-strain-elasticity.cc
@@ -109,6 +109,7 @@ int main (int argc, char *argv[]) try
   const int baseIterations              = parameterSet.get<int>("baseIt");
   const double mgTolerance              = parameterSet.get<double>("mgTolerance");
   const double baseTolerance            = parameterSet.get<double>("baseTolerance");
+  const double damping                  = parameterSet.get<double>("damping");
   std::string resultPath                = parameterSet.get("resultPath", "");
 
   // ///////////////////////////////////////
@@ -333,7 +334,8 @@ int main (int argc, char *argv[]) try
                  mgTolerance,
                  mu, nu1, nu2,
                  baseIterations,
-                 baseTolerance
+                 baseTolerance,
+                 damping
                 );
 
     ////////////////////////////////////////////////////////
-- 
GitLab