From 66b3ebf1506ac7c5a24286db65e0a2fee04b1939 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Tue, 14 Aug 2007 13:48:08 +0000 Subject: [PATCH] don't hardwire trust-region solver tolerance [[Imported from SVN: r1510]] --- src/rodsolver.cc | 10 +++------- src/rodsolver.hh | 4 ++++ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/rodsolver.cc b/src/rodsolver.cc index 869f4549..5654066e 100644 --- a/src/rodsolver.cc +++ b/src/rodsolver.cc @@ -49,6 +49,7 @@ template <class GridType> void RodSolver<GridType>::setup(const GridType& grid, const RodAssembler<GridType>* rodAssembler, const SolutionType& x, + double tolerance, int maxTrustRegionSteps, double initialTrustRegionRadius, int multigridIterations, @@ -65,6 +66,7 @@ void RodSolver<GridType>::setup(const GridType& grid, grid_ = &grid; rodAssembler_ = rodAssembler; x_ = x; + tolerance_ = tolerance; maxTrustRegionSteps_ = maxTrustRegionSteps; initialTrustRegionRadius_ = initialTrustRegionRadius; multigridIterations_ = multigridIterations; @@ -322,7 +324,7 @@ void RodSolver<GridType>::solve() printf("infinity norm of the correction: %g\n", corr.infinity_norm()); - if (corr.infinity_norm() < 1e-5) { + if (corr.infinity_norm() < tolerance_) { std::cout << "CORRECTION IS SMALL ENOUGH" << std::endl; break; } @@ -344,12 +346,6 @@ void RodSolver<GridType>::solve() } -#if 0 - std::cout << "newIterate: \n"; - for (int j=0; j<newIterate.size(); j++) - std::cout << newIterate[j] << std::endl; -#endif - /** \todo Don't always recompute oldEnergy */ double oldEnergy = rodAssembler_->computeEnergy(x_); double energy = rodAssembler_->computeEnergy(newIterate); diff --git a/src/rodsolver.hh b/src/rodsolver.hh index 4b8dcc49..ffe9b6b7 100644 --- a/src/rodsolver.hh +++ b/src/rodsolver.hh @@ -35,6 +35,7 @@ public: void setup(const GridType& grid, const RodAssembler<GridType>* rodAssembler, const SolutionType& x, + double tolerance, int maxTrustRegionSteps, double initialTrustRegionRadius, int multigridIterations, @@ -65,6 +66,9 @@ protected: /** \brief The initial trust-region radius in the maximum-norm */ double initialTrustRegionRadius_; + /** \brief Tolerance of the trust-region solver */ + double tolerance_; + /** \brief Maximum number of trust-region steps */ int maxTrustRegionSteps_; -- GitLab