From b3372dc12f0a3b55dd2b293f30974deb0f351805 Mon Sep 17 00:00:00 2001
From: Elias Pipping <elias.pipping@fu-berlin.de>
Date: Wed, 7 Dec 2011 15:30:00 +0100
Subject: [PATCH] Use shared_ptr for Laursen's nodalIntegrals

---
 dune/tectonic/globallaursennonlinearity.hh | 6 +++---
 src/one-body-sample.cc                     | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/dune/tectonic/globallaursennonlinearity.hh b/dune/tectonic/globallaursennonlinearity.hh
index 18cbac8f..b478fe7c 100644
--- a/dune/tectonic/globallaursennonlinearity.hh
+++ b/dune/tectonic/globallaursennonlinearity.hh
@@ -21,7 +21,7 @@ class GlobalLaursenNonlinearity : public GlobalNonlinearity<dim> {
   GlobalLaursenNonlinearity(
       shared_ptr<std::vector<double> const> mu,
       shared_ptr<std::vector<double> const> normalStress,
-      std::vector<FieldVector<double, 1>> const &nodalIntegrals)
+      shared_ptr<std::vector<FieldVector<double, 1>> const> nodalIntegrals)
       : mu(mu), normalStress(normalStress), nodalIntegrals(nodalIntegrals) {}
 
   /*
@@ -39,7 +39,7 @@ class GlobalLaursenNonlinearity : public GlobalNonlinearity<dim> {
     sigma_n [id + mu id] = sigma_n (1 + mu) id
   */
   virtual shared_ptr<LocalNonlinearity<dim> const> restriction(int i) const {
-    double coefficient = nodalIntegrals[i][0];
+    double coefficient = (*nodalIntegrals)[i][0];
     coefficient *= (*normalStress)[i];
     coefficient *= 1 + (*mu)[i];
 
@@ -54,7 +54,7 @@ class GlobalLaursenNonlinearity : public GlobalNonlinearity<dim> {
   // results
   shared_ptr<std::vector<double> const> mu;
   shared_ptr<std::vector<double> const> normalStress;
-  std::vector<FieldVector<double, 1>> nodalIntegrals;
+  shared_ptr<std::vector<FieldVector<double, 1>> const> nodalIntegrals;
 };
 }
 #endif
diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index b837a84c..4a35e6d4 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -171,7 +171,7 @@ void assemble_nonlinearity(
   } else if (friction_model == std::string("Laursen")) {
     auto const tmp =
         new Dune::GlobalLaursenNonlinearity<dim, Dune::LinearFunction>(
-            mu, normalStress, *nodalIntegrals);
+            mu, normalStress, nodalIntegrals);
     myGlobalNonlinearity =
         Dune::shared_ptr<Dune::GlobalNonlinearity<dim> const>(tmp);
   } else {
-- 
GitLab