diff --git a/src/mynonlinearity.hh b/src/mynonlinearity.hh index d4e4bc7496506251192630844a91481733b1370f..31bfb287495f0407fd92f08516f34d21b0405af9 100644 --- a/src/mynonlinearity.hh +++ b/src/mynonlinearity.hh @@ -13,8 +13,7 @@ #include "nicefunction.hh" namespace Dune { -template <int dimension, class OuterFunction = Dune::TrivialFunction> -class MyNonlinearity { +template <int dimension> class MyNonlinearity { public: typedef Dune::FieldVector<double, dimension> SmallVector; typedef Dune::FieldMatrix<double, dimension, dimension> SmallMatrix; @@ -22,6 +21,8 @@ class MyNonlinearity { typedef SmallVector VectorType; typedef SmallMatrix MatrixType; + MyNonlinearity(NiceFunction const &func) : func_(func) {} + double operator()(VectorType const x) const { double ret; func_.evaluate(x.two_norm(), ret); @@ -65,7 +66,7 @@ class MyNonlinearity { } private: - OuterFunction func_; + NiceFunction const &func_; }; } #endif diff --git a/src/samplefunctional.hh b/src/samplefunctional.hh index 97fad3ed121dbbebee1b12c764ab4c19b643ce0a..65c0d9f7febe3257fc3a7b4d395b899e433faa2a 100644 --- a/src/samplefunctional.hh +++ b/src/samplefunctional.hh @@ -20,9 +20,11 @@ class SampleFunctional { typedef Dune::FieldVector<double, dimension> SmallVector; typedef Dune::FieldMatrix<double, dimension, dimension> SmallMatrix; - typedef MyNonlinearity<dimension, Function> NonlinearityType; + typedef MyNonlinearity<dimension> NonlinearityType; - SampleFunctional(SmallMatrix _A, SmallVector _b) : A(_A), b(_b) {} + SampleFunctional(SmallMatrix _A, SmallVector _b, + MyNonlinearity<dimension> _phi) + : A(_A), b(_b), phi(_phi) {} double operator()(const SmallVector v) const { SmallVector y; diff --git a/src/test-gradient-method.cc b/src/test-gradient-method.cc index 72c243d4b3d9614d35e139c908fbc24d2360f989..d0aaa699edc651b6704f285f9f359b903c398b43 100644 --- a/src/test-gradient-method.cc +++ b/src/test-gradient-method.cc @@ -41,7 +41,8 @@ void testSampleFunction() { b[0] = 1; b[1] = 2; - SampleFunctional J(A, b); + Dune::SampleFunction f; + SampleFunctional J(A, b, Dune::MyNonlinearity<dim>(f)); SampleFunctional::SmallVector start = b; start *= 17; @@ -88,7 +89,8 @@ void testSampleFunctionNonsmooth() { b[0] = 1; b[1] = 2; - SampleFunctional J(A, b); + Dune::SampleFunction f; + SampleFunctional J(A, b, Dune::MyNonlinearity<dim>(f)); SampleFunctional::SmallVector start; SampleFunctional::SmallVector error; @@ -149,7 +151,8 @@ void testTrivialFunction() { b[0] = 1; b[1] = 2; - SampleFunctional J(A, b); + Dune::TrivialFunction f; + SampleFunctional J(A, b, Dune::MyNonlinearity<dim>(f)); SampleFunctional::SmallVector start = b; start *= 17;