diff --git a/cosserat-continuum.cc b/cosserat-continuum.cc index dccd3aba36717fe7e0d5623c2ce13a52ced24b91..4475274649b2f734d1d3641488684f3020f0de2c 100644 --- a/cosserat-continuum.cc +++ b/cosserat-continuum.cc @@ -314,7 +314,7 @@ int main (int argc, char *argv[]) try // Create a Riemannian trust-region solver // ///////////////////////////////////////////////// - RiemannianTrustRegionSolver<GridType,TargetSpace> solver(mpiHelper); + RiemannianTrustRegionSolver<GridType,TargetSpace> solver; solver.setup(*grid, &assembler, x, diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc index 0f57b759815eb8dd014b903c9a8d77e2cbef598d..3853e7eb902277456e9af7aa90cae55eb34f5e11 100644 --- a/dune/gfe/riemanniantrsolver.cc +++ b/dune/gfe/riemanniantrsolver.cc @@ -2,6 +2,7 @@ #include <dune/common/bitsetvector.hh> #include <dune/common/timer.hh> +#include <dune/common/parallel/mpihelper.hh> #include <dune/istl/io.hh> @@ -184,7 +185,10 @@ setup(const GridType& grid, template <class GridType, class TargetSpace> void RiemannianTrustRegionSolver<GridType,TargetSpace>::solve() { - int rank = mpiHelper_.rank(); + int argc = 0; + char** argv; + Dune::MPIHelper& mpiHelper = Dune::MPIHelper::instance(argc,argv); + int rank = mpiHelper.rank(); MonotoneMGStep<MatrixType,CorrectionType>* mgStep = NULL; @@ -217,7 +221,7 @@ void RiemannianTrustRegionSolver<GridType,TargetSpace>::solve() // ///////////////////////////////////////////////////// double oldEnergy = assembler_->computeEnergy(x_); - oldEnergy = mpiHelper_.getCollectiveCommunication().sum(oldEnergy); + oldEnergy = mpiHelper.getCollectiveCommunication().sum(oldEnergy); bool recomputeGradientHessian = true; CorrectionType rhs; diff --git a/dune/gfe/riemanniantrsolver.hh b/dune/gfe/riemanniantrsolver.hh index 347b126fb62f382049cb911869620eb82243ab94..88ff62fb25260ade36710e7e079783a0239641cd 100644 --- a/dune/gfe/riemanniantrsolver.hh +++ b/dune/gfe/riemanniantrsolver.hh @@ -47,9 +47,8 @@ class RiemannianTrustRegionSolver public: - RiemannianTrustRegionSolver(Dune::MPIHelper& mpiHelper) + RiemannianTrustRegionSolver() : IterativeSolver<std::vector<TargetSpace>, Dune::BitSetVector<blocksize> >(0,100,NumProc::FULL), - mpiHelper_(mpiHelper), hessianMatrix_(std::auto_ptr<MatrixType>(NULL)), h1SemiNorm_(NULL) {} @@ -92,8 +91,6 @@ public: protected: - /** \brief Gateway to MPI, for the case that we are working in parallel */ - Dune::MPIHelper& mpiHelper_; /** \brief The grid */ const GridType* grid_;