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