From 15657dd7e34e2e7a48b019e0f320fa1b417be378 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Sun, 7 Sep 2014 21:22:36 +0000 Subject: [PATCH] [bugfix] Distribute norm of correction to all processors for the stopping criterion [[Imported from SVN: r9881]] --- dune/gfe/riemanniantrsolver.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc index 1767d62c..3ef37109 100644 --- a/dune/gfe/riemanniantrsolver.cc +++ b/dune/gfe/riemanniantrsolver.cc @@ -378,6 +378,10 @@ void RiemannianTrustRegionSolver<GridType,TargetSpace>::solve() corr = vectorComm.scatter(corr_global); + // Make infinity norm of corr_global known on all processors + double corrNorm = corr.infinity_norm(); + double corrGlobalInfinityNorm = mpiHelper.getCollectiveCommunication().max(corrNorm); + if (instrumented_) { fprintf(fp, "Trust-region step: %d, trust-region radius: %g\n", @@ -449,7 +453,7 @@ void RiemannianTrustRegionSolver<GridType,TargetSpace>::solve() if (this->verbosity_ == NumProc::FULL) std::cout << "Infinity norm of the correction: " << corr.infinity_norm() << std::endl; - if (corr_global.infinity_norm() < this->tolerance_) { + if (corrGlobalInfinityNorm < this->tolerance_) { if (this->verbosity_ == NumProc::FULL and rank==0) std::cout << "CORRECTION IS SMALL ENOUGH" << std::endl; -- GitLab