diff --git a/src/test-gradient-method-helper.hh b/src/test-gradient-method-helper.hh new file mode 100644 index 0000000000000000000000000000000000000000..45e7708b0d53242b74ae5fe3444e0dd03283c282 --- /dev/null +++ b/src/test-gradient-method-helper.hh @@ -0,0 +1,23 @@ +#include <boost/format.hpp> + +#include <dune/tnnmg/problem-classes/bisection.hh> + +#include <dune/tectonic/samplefunctional.hh> + +template <int dim> +double functionTester(Dune::SampleFunctional<dim> J, + typename Dune::SampleFunctional<dim>::SmallVector &start, + size_t runs) { + Bisection const bisection( + 0.0, // acceptError: Stop if the search interval has + // become smaller than this number + 1.0, // acceptFactor: ? + 1e-12, // requiredResidual: ? + true, // fastQuadratic + 0); // safety: acceptance factor for inexact minimization + double const original = J(start); + Dune::minimise(J, start, runs, bisection); + double const final = J(start); + std::cout << boost::format("%8g -> %e") % original % final << std::endl; + return final; +} diff --git a/src/test-gradient-method.cc b/src/test-gradient-method.cc index 18152d119d094bcd22dbc7079ed564db3b0cf311..3348aea7a0acab5afdc3e4cad834e717fad9de08 100644 --- a/src/test-gradient-method.cc +++ b/src/test-gradient-method.cc @@ -4,33 +4,13 @@ #include <cassert> -#include <boost/format.hpp> - #include <dune/common/exceptions.hh> #include <dune/common/shared_ptr.hh> -#include <dune/tnnmg/problem-classes/bisection.hh> - #include <dune/tectonic/samplefunctional.hh> -#include "test-gradient-method-nicefunction.hh" -template <int dim> -double functionTester(Dune::SampleFunctional<dim> J, - typename Dune::SampleFunctional<dim>::SmallVector &start, - size_t runs) { - Bisection const bisection( - 0.0, // acceptError: Stop if the search interval has - // become smaller than this number - 1.0, // acceptFactor: ? - 1e-12, // requiredResidual: ? - true, // fastQuadratic - 0); // safety: acceptance factor for inexact minimization - double const original = J(start); - Dune::minimise(J, start, runs, bisection); - double const final = J(start); - std::cout << boost::format("%8g -> %e") % original % final << std::endl; - return final; -} +#include "test-gradient-method-nicefunction.hh" +#include "test-gradient-method-helper.hh" void testIdentity() { int const dim = 2;