From daba4ea09ee6767b8777f8db3129975f9c2ff41c Mon Sep 17 00:00:00 2001
From: podlesny <podlesny@mi.fu-berlin.de>
Date: Mon, 29 Jul 2019 13:15:08 +0200
Subject: [PATCH] .

---
 src/factories/stackedblocksfactory.cc   | 10 +++++-----
 src/multi-body-problem.cfg              |  2 +-
 src/solverfactorytest.cc                |  4 ++--
 src/spatial-solving/solverfactory.cc    |  6 +++---
 src/spatial-solving/solverfactory.hh    |  4 ++--
 src/spatial-solving/tnnmg/functional.hh |  8 ++++----
 6 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/src/factories/stackedblocksfactory.cc b/src/factories/stackedblocksfactory.cc
index 648518f3..051afa46 100644
--- a/src/factories/stackedblocksfactory.cc
+++ b/src/factories/stackedblocksfactory.cc
@@ -202,11 +202,6 @@ void StackedBlocksFactory<HostGridType, VectorType>::setBoundaryConditions() {
             for (int j=0; j<leafVertexCount; j++) {
                 if (leafFaces_[i]->upper.containsVertex(j))
                     (*velocityDirichletNodes)[j][0] = true;
-
-                #if MY_DIM == 3 //TODO: wrong, needs revision
-                if (leafFaces_[i]->front.containsVertex(j) || leafFaces_[i]->back.containsVertex(j))
-                    zeroDirichletNodes->at(j)[2] = true;
-                #endif
             }
 
             std::shared_ptr<LeafBoundaryCondition> velocityDirichletBoundary = std::make_shared<LeafBoundaryCondition>("dirichlet");
@@ -229,6 +224,11 @@ void StackedBlocksFactory<HostGridType, VectorType>::setBoundaryConditions() {
               (*zeroDirichletNodes)[j][d] = true;
             }
         }
+
+        #if MY_DIM == 3 //TODO: wrong, needs revision
+        if (leafFaces_[0]->front.containsVertex(j) || leafFaces_[0]->back.containsVertex(j))
+            (*zeroDirichletNodes)[j][2] = true;
+        #endif
     }
 
     std::shared_ptr<LeafBoundaryCondition> zeroDirichletBoundary = std::make_shared<LeafBoundaryCondition>("dirichlet");
diff --git a/src/multi-body-problem.cfg b/src/multi-body-problem.cfg
index 8df2a20d..b3a4ff9e 100644
--- a/src/multi-body-problem.cfg
+++ b/src/multi-body-problem.cfg
@@ -77,7 +77,7 @@ maximumIterations = 10000
 verbosity         = quiet
 
 [solver.tnnmg.main]
-pre   = 10
+pre   = 1
 multi = 5 # number of multigrid steps
 post  = 0
 
diff --git a/src/solverfactorytest.cc b/src/solverfactorytest.cc
index 9ae2798e..5365726f 100644
--- a/src/solverfactorytest.cc
+++ b/src/solverfactorytest.cc
@@ -177,10 +177,10 @@ void solveProblem(const ContactNetwork& contactNetwork,
     refSolver.solve();
     std::cout << correctionNorms.size() << std::endl;
 
-    if (initial) {
+    /*if (initial) {
         x = refX;
         return;
-    }
+    }*/
     // set up solver factory solver
 
     // set up functional
diff --git a/src/spatial-solving/solverfactory.cc b/src/spatial-solving/solverfactory.cc
index 0650c522..7084672a 100644
--- a/src/spatial-solving/solverfactory.cc
+++ b/src/spatial-solving/solverfactory.cc
@@ -19,10 +19,10 @@ SolverFactory<Functional, BitVector>::SolverFactory(
     const BitVector& ignoreNodes) :
         J_(Dune::Solvers::wrap_own_share<const Functional>(std::forward<Functional>(J))) {
 
-    auto localSolver = Dune::TNNMG::gaussSeidelLocalSolver(LocalSolver());
-    nonlinearSmoother_ = std::make_shared<NonlinearSmoother>(*J_, dummyIterate_, localSolver);
+    //auto localSolver = Dune::TNNMG::gaussSeidelLocalSolver(LocalSolver());
+    //nonlinearSmoother_ = std::make_shared<NonlinearSmoother>(*J_, dummyIterate_, localSolver);
 
-    //nonlinearSmoother_ = std::make_shared<NonlinearSmoother>(*J_, dummyIterate_, LocalSolver());
+    nonlinearSmoother_ = std::make_shared<NonlinearSmoother>(*J_, dummyIterate_, LocalSolver());
 
     auto linearSolver_ptr = Dune::Solvers::wrap_own_share<std::decay_t<LinearSolver>>(std::forward<LinearSolver>(linearSolver));
 
diff --git a/src/spatial-solving/solverfactory.hh b/src/spatial-solving/solverfactory.hh
index 203bd955..a68755ec 100644
--- a/src/spatial-solving/solverfactory.hh
+++ b/src/spatial-solving/solverfactory.hh
@@ -28,8 +28,8 @@ class SolverFactory {
     using Vector = typename Functional::Vector;
     using BitVector = BitVectorType;
 
-    using LocalSolver = Dune::TNNMG::ScalarObstacleSolver;//LocalBisectionSolver;
-    using NonlinearSmoother = Dune::TNNMG::NonlinearGSStep<Functional, Dune::TNNMG::GaussSeidelLocalSolver<LocalSolver>, BitVector>;
+    using LocalSolver = LocalBisectionSolver;//Dune::TNNMG::ScalarObstacleSolver;//LocalBisectionSolver;
+    using NonlinearSmoother = Dune::TNNMG::NonlinearGSStep<Functional, LocalBisectionSolver, BitVector>;//Dune::TNNMG::NonlinearGSStep<Functional, Dune::TNNMG::GaussSeidelLocalSolver<LocalSolver>, BitVector>;
     using Linearization = Linearization<Functional, BitVector>;
     using DefectProjection = typename Dune::TNNMG::ObstacleDefectProjection;
 
diff --git a/src/spatial-solving/tnnmg/functional.hh b/src/spatial-solving/tnnmg/functional.hh
index 098c7208..8305b04b 100644
--- a/src/spatial-solving/tnnmg/functional.hh
+++ b/src/spatial-solving/tnnmg/functional.hh
@@ -352,13 +352,13 @@ auto coordinateRestriction(const ShiftedFunctional<M, V, Nonlinearity, R>& f, co
 
   auto&& phii = f.phi().restriction(i);
 
-  /*auto v = ri;
+  auto v = ri;
   double const vnorm = v.two_norm();
   if (vnorm > 1.0)
-        v /= vnorm;*/
+        v /= vnorm;
 
-  //return FirstOrderModelFunctional<LocalVector, decltype(phii), LocalLowerObstacle, LocalUpperObstacle, LocalVector, LocalVector, Range>(*Aii_p, std::move(ri), std::move(phii), std::move(dli), std::move(dui), std::move(f.origin()[i]), std::move(v));
-  return Functional<LocalMatrix&, LocalVector, decltype(phii), LocalLowerObstacle, LocalUpperObstacle, Range>(*Aii_p, std::move(ri), std::move(phii), std::move(dli), std::move(dui));
+  return FirstOrderModelFunctional<LocalVector, decltype(phii), LocalLowerObstacle, LocalUpperObstacle, LocalVector, LocalVector, Range>(*Aii_p, std::move(ri), std::move(phii), std::move(dli), std::move(dui), std::move(f.origin()[i]), std::move(v));
+  //return Functional<LocalMatrix&, LocalVector, decltype(phii), LocalLowerObstacle, LocalUpperObstacle, Range>(*Aii_p, std::move(ri), std::move(phii), std::move(dli), std::move(dui));
 }
 
 
-- 
GitLab