diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc index 778effaa91120f11ee753d52aadeb13c716011ca..bacafb19a437ffd87b2fd564000404c8fca6db16 100644 --- a/dune/gfe/riemanniantrsolver.cc +++ b/dune/gfe/riemanniantrsolver.cc @@ -351,7 +351,8 @@ void RiemannianTrustRegionSolver<Basis,TargetSpace>::solve() localMapper, 0); #endif - for (int i=0; i<maxTrustRegionSteps_; i++) { + auto& i = statistics_.finalIteration; + for (i=0; i<maxTrustRegionSteps_; i++) { /* std::cout << "current iterate:\n"; for (size_t j=0; j<x_.size(); j++) @@ -643,4 +644,6 @@ void RiemannianTrustRegionSolver<Basis,TargetSpace>::solve() // ////////////////////////////////////////////// if (instrumented_) fclose(fp); + + statistics_.finalEnergy = oldEnergy; } diff --git a/dune/gfe/riemanniantrsolver.hh b/dune/gfe/riemanniantrsolver.hh index add3d56d61c31853ab262531d23a93892bd08b1a..7c91aac16855a8ee36e765b19d388e7ded0388cf 100644 --- a/dune/gfe/riemanniantrsolver.hh +++ b/dune/gfe/riemanniantrsolver.hh @@ -92,6 +92,16 @@ class RiemannianTrustRegionSolver typedef typename MapperFactory<typename Basis::GridView,Basis>::LocalMapper LocalMapper; #endif + /** \brief Records information about the last run of the RiemannianTrustRegionSolver + * + * This is used primarily for unit testing. + */ + struct Statistics + { + std::size_t finalIteration; + + field_type finalEnergy; + }; public: @@ -144,6 +154,8 @@ public: SolutionType getSol() const {return x_;} + const Statistics& getStatistics() const {return statistics_;} + protected: #if HAVE_MPI @@ -163,7 +175,7 @@ protected: Dune::FieldVector<double,blocksize> scaling_; /** \brief Maximum number of trust-region steps */ - int maxTrustRegionSteps_; + std::size_t maxTrustRegionSteps_; /** \brief Maximum number of multigrid iterations */ int innerIterations_; @@ -195,6 +207,8 @@ protected: /** \brief If set to true we log convergence speed and other stuff */ bool instrumented_; + /** \brief Store information about solver runs for unit testing */ + Statistics statistics_; }; #include "riemanniantrsolver.cc"