From 1ea86fdf42c1da9a311484e7b8e810fdd0bc2bf7 Mon Sep 17 00:00:00 2001
From: podlesny <podlesny@zedat.fu-berlin.de>
Date: Fri, 9 Mar 2018 16:13:47 +0100
Subject: [PATCH] .

---
 src/spatial-solving/fixedpointiterator.cc |  4 +---
 src/spatial-solving/fixedpointiterator.hh |  5 ++---
 src/spatial-solving/solverfactory.cc      | 12 ++++++------
 src/spatial-solving/solverfactory.hh      |  6 +++++-
 4 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/src/spatial-solving/fixedpointiterator.cc b/src/spatial-solving/fixedpointiterator.cc
index 54a251f0..e4b62db5 100644
--- a/src/spatial-solving/fixedpointiterator.cc
+++ b/src/spatial-solving/fixedpointiterator.cc
@@ -34,11 +34,9 @@ void FixedPointIterationCounter::operator+=(
 
 template <class Factory, class Updaters, class ErrorNorm>
 FixedPointIterator<Factory, Updaters, ErrorNorm>::FixedPointIterator(
-    const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler,
     Factory &factory, Dune::ParameterTree const &parset,
     std::shared_ptr<Nonlinearity> globalFriction, ErrorNorm const &errorNorm)
-    : nBodyAssembler_(nBodyAssembler),
-      step_(factory.getStep()),
+    : step_(factory.getStep()),
       parset_(parset),
       globalFriction_(globalFriction),
       fixedPointMaxIterations_(parset.get<size_t>("v.fpi.maximumIterations")),
diff --git a/src/spatial-solving/fixedpointiterator.hh b/src/spatial-solving/fixedpointiterator.hh
index 873b9b42..d2fa5ea5 100644
--- a/src/spatial-solving/fixedpointiterator.hh
+++ b/src/spatial-solving/fixedpointiterator.hh
@@ -35,8 +35,7 @@ class FixedPointIterator {
   void relativeVelocities(std::vector<Vector>& v_m) const;
 
 public:
-  FixedPointIterator(const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler,
-                     Factory &factory, const Dune::ParameterTree& parset,
+  FixedPointIterator(Factory &factory, const Dune::ParameterTree& parset,
                      std::shared_ptr<Nonlinearity> globalFriction,
                      const ErrorNorm& errorNorm);
 
@@ -46,7 +45,7 @@ class FixedPointIterator {
                                  Vector &velocityIterate);
 
 private:
-  const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler_;
+
   std::shared_ptr<typename Factory::Step> step_;
   Dune::ParameterTree const &parset_;
   std::shared_ptr<Nonlinearity> globalFriction_;
diff --git a/src/spatial-solving/solverfactory.cc b/src/spatial-solving/solverfactory.cc
index 06022fd9..b289e96e 100644
--- a/src/spatial-solving/solverfactory.cc
+++ b/src/spatial-solving/solverfactory.cc
@@ -13,15 +13,16 @@
 
 template <size_t dim, class BlockProblem, class DeformedGrid>
 SolverFactory<dim, BlockProblem, DeformedGrid>::SolverFactory(
-    Dune::ParameterTree const &parset, const DeformedGrid& grid,
+    Dune::ParameterTree const &parset, const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler,
     Dune::BitSetVector<dim> const &ignoreNodes)
-    : baseEnergyNorm(linearBaseSolverStep),
+    : nBodyAssembler_(nBodyAssembler),
+      baseEnergyNorm(linearBaseSolverStep),
       linearBaseSolver(&linearBaseSolverStep,
                        parset.get<size_t>("linear.maxiumumIterations"),
                        parset.get<double>("linear.tolerance"), &baseEnergyNorm,
-                       Solver::QUIET),
+                       Solver::QUIET)/*,
       transferOperators(grid.maxLevel()),
-      multigridStep(std::make_shared<Step>(linearIterationStep, nonlinearSmoother)) {
+      multigridStep(std::make_shared<Step>(linearIterationStep, nonlinearSmoother))*/ {
 
   // linear iteration step
   linearIterationStep.setMGType(parset.get<int>("linear.cycle"),
@@ -33,8 +34,7 @@ SolverFactory<dim, BlockProblem, DeformedGrid>::SolverFactory(
   // transfer operators
   for (auto &&x : transferOperators)
     x = new CompressedMultigridTransfer<Vector>;
-  TransferOperatorAssembler<DeformedGrid>(grid)
-      .assembleOperatorPointerHierarchy(transferOperators);
+  TransferOperatorAssembler<DeformedGrid>(grid).assembleOperatorPointerHierarchy(transferOperators);
   linearIterationStep.setTransferOperators(transferOperators);
 
   // tnnmg iteration step
diff --git a/src/spatial-solving/solverfactory.hh b/src/spatial-solving/solverfactory.hh
index c14ba311..464ae539 100644
--- a/src/spatial-solving/solverfactory.hh
+++ b/src/spatial-solving/solverfactory.hh
@@ -12,6 +12,8 @@
 #include <dune/tnnmg/iterationsteps/genericnonlineargs.hh>
 //#include <dune/tnnmg/iterationsteps/tnnmgstep.hh>
 
+#include <dune/contact/assemblers/nbodyassembler.hh>
+
 #define USE_OLD_TNNMG //needed for old bisection.hh in tnnmg
 
 template <size_t dim, class BlockProblemTEMPLATE, class DeformedGridTEMPLATE>
@@ -31,7 +33,7 @@ class SolverFactory {
   using Step = NonlinearSmoother;
       //TruncatedNonsmoothNewtonMultigrid<BlockProblem, NonlinearSmoother>;
 
-  SolverFactory(Dune::ParameterTree const &parset, const DeformedGrid& grid,
+  SolverFactory(Dune::ParameterTree const &parset, const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler,
                 Dune::BitSetVector<dim> const &ignoreNodes);
 
   ~SolverFactory();
@@ -39,6 +41,8 @@ class SolverFactory {
   std::shared_ptr<Step> getStep();
 
 private:
+  const Dune::Contact::NBodyAssembler<DeformedGrid, Vector>& nBodyAssembler_;
+
   TruncatedBlockGSStep<Matrix, Vector> linearBaseSolverStep;
   EnergyNorm<Matrix, Vector> baseEnergyNorm;
   LoopSolver<Vector> linearBaseSolver;
-- 
GitLab