From cf70396c9755a34d8cea36a220ce800d44360967 Mon Sep 17 00:00:00 2001
From: Tobias Leibner <tobias.leibner@googlemail.com>
Date: Wed, 31 Oct 2018 12:03:01 +0100
Subject: [PATCH] [functors.boundary-detector] add add_to_result method

---
 .gitsuper                                  |  8 ++++----
 dune/xt/grid/functors/boundary-detector.hh | 16 ++++++++++++++++
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/.gitsuper b/.gitsuper
index 60ad864fd..85c1e6f39 100644
--- a/.gitsuper
+++ b/.gitsuper
@@ -14,10 +14,10 @@ status = 1a3bcab04b011a5d6e44f9983cae6ff89fa695e8 bin (heads/master)
 	 741e4f8e53bdd3e1b6e19d84eb22b6e3dc48526c dune-python (remotes/origin/releases/2.5)
 	 26cc8cb4161a3a51002ab2a81b8c81d2c951ee79 dune-testtools (remotes/origin/p/renemilk/testname_listing_hack_no-skiptest)
 	 0a74e7dd0b2115778a5d490dab08a2ed07fcaa1e dune-uggrid (v2.5.2)
-	+7d4cb994b3aad0e0ff73172b187e35bbf191bf29 dune-xt-common (heads/dailywork_tleibner)
+	+30e7ad34db59be19bbf67bb72fc52eba50a5245d dune-xt-common (heads/dailywork_tleibner)
 	+3e3f3bf06e21cbbf3c0a559891b44c6f5d987d0f dune-xt-data (heads/master)
 	+f05aa7470ead4150ca7a91894cd2ad77dfcedc46 dune-xt-functions (heads/new-master)
-	+5be0c7c0e69d6364022421b866016d6443280cf2 dune-xt-grid (heads/new-master)
+	+4276ffe6f0f1f28217eb6f8f064f5b86d7b89862 dune-xt-grid (heads/new-master)
 	+f6904b69f9a3ee5d45ee824d3b244e59cfed7ff4 dune-xt-la (heads/master)
 	 09d0378f616b94d68bcdd9fc6114813181849ec0 scripts (heads/master)
 commit = 5f5841ee7a2dff290b98845c46262151752189c1
@@ -95,7 +95,7 @@ commit = 0a74e7dd0b2115778a5d490dab08a2ed07fcaa1e
 [submodule.dune-xt-common]
 remote = git@github.com:dune-community/dune-xt-common.git
 status = 2424627f0ad5de7e4aaa5e7f48bc2a02414d95a1 .vcsetup (heads/master)
-commit = 7d4cb994b3aad0e0ff73172b187e35bbf191bf29
+commit = 30e7ad34db59be19bbf67bb72fc52eba50a5245d
 
 [submodule.dune-xt-data]
 remote = git@github.com:dune-community/dune-xt-data
@@ -110,7 +110,7 @@ commit = f05aa7470ead4150ca7a91894cd2ad77dfcedc46
 [submodule.dune-xt-grid]
 remote = git@github.com:dune-community/dune-xt-grid.git
 status = 2424627f0ad5de7e4aaa5e7f48bc2a02414d95a1 .vcsetup (heads/master)
-commit = 5be0c7c0e69d6364022421b866016d6443280cf2
+commit = 4276ffe6f0f1f28217eb6f8f064f5b86d7b89862
 
 [submodule.dune-xt-la]
 remote = git@github.com:dune-community/dune-xt-la.git
diff --git a/dune/xt/grid/functors/boundary-detector.hh b/dune/xt/grid/functors/boundary-detector.hh
index abdd2d2cb..ffa597d5d 100644
--- a/dune/xt/grid/functors/boundary-detector.hh
+++ b/dune/xt/grid/functors/boundary-detector.hh
@@ -53,6 +53,15 @@ public:
   {
   }
 
+  BoundaryDetectorFunctor(const BoundaryDetectorFunctor& other)
+    : Propagator(*this)
+    , boundary_info_(other.boundary_info_)
+    , boundary_type_(other.boundary_type_)
+    , found_(other.found_)
+    , res_mutex_()
+  {
+  }
+
   virtual void prepare() override final
   {
     found_ = 0;
@@ -93,10 +102,17 @@ protected:
     found_ = res;
   }
 
+  void add_to_result(size_t res)
+  {
+    std::lock_guard<std::mutex>{res_mutex_};
+    found_ += res;
+  }
+
 private:
   const BoundaryInfo<IntersectionType>& boundary_info_;
   const std::shared_ptr<BoundaryType> boundary_type_;
   size_t found_;
+  std::mutex res_mutex_;
 }; // class BoundaryDetectorFunctor
 
 
-- 
GitLab