From 29905507577858d04a0effbceba7d31fd2f1ecd8 Mon Sep 17 00:00:00 2001 From: Elias Pipping <elias.pipping@fu-berlin.de> Date: Mon, 14 Nov 2011 09:04:23 +0100 Subject: [PATCH] Use a shared pointer --- dune/tectonic/localnonlinearity.hh | 4 ++-- dune/tectonic/myblockproblem.hh | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/dune/tectonic/localnonlinearity.hh b/dune/tectonic/localnonlinearity.hh index 195dbe7d..fbdd6325 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 3b4a8ff5..ed34b4f8 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); } } -- GitLab