diff --git a/dune/tectonic/localnonlinearity.hh b/dune/tectonic/localnonlinearity.hh index 195dbe7d00c3347a7859bd98ea1266db99d2332f..fbdd63257359a3df461d7396b48a6c8841be9f1e 100644 --- a/dune/tectonic/localnonlinearity.hh +++ b/dune/tectonic/localnonlinearity.hh @@ -18,7 +18,7 @@ template <int dimension> class LocalNonlinearity { typedef FieldVector<double, dimension> VectorType; typedef FieldMatrix<double, dimension, dimension> MatrixType; - LocalNonlinearity(NiceFunction const *func) : func_(func) {} + LocalNonlinearity(Dune::shared_ptr<NiceFunction> &func) : func_(func) {} double operator()(VectorType const x) const { double ret; @@ -63,7 +63,7 @@ template <int dimension> class LocalNonlinearity { } private: - NiceFunction const *func_; + Dune::shared_ptr<NiceFunction> &func_; }; } #endif diff --git a/dune/tectonic/myblockproblem.hh b/dune/tectonic/myblockproblem.hh index 3b4a8ff507e7f4bd7571d54beb38626322d35f86..ed34b4f850be7beeda7f8fd1acc0e41971c752d1 100644 --- a/dune/tectonic/myblockproblem.hh +++ b/dune/tectonic/myblockproblem.hh @@ -113,14 +113,13 @@ class MyBlockProblem<MyConvexProblemTypeTEMPLATE>::IterateObject { } assert(localA != NULL); - auto const f = problem.phi.restriction(m); + Dune::shared_ptr<Dune::NiceFunction> f(problem.phi.restriction(m)); Dune::LocalNonlinearity<block_size> const phi(f); Dune::SampleFunctional<block_size> localJ(*localA, localb, phi, ignore_component); LocalVectorType correction; Dune::minimise(localJ, ui, 5, bisection); // FIXME: hardcoded value - free(f); } }