From c88a9156da9984f92ca8658e68b1090f8bcb502e Mon Sep 17 00:00:00 2001
From: Wenqing Wang <wenqing.wang@ufz.de>
Date: Wed, 5 Dec 2018 15:53:52 +0100
Subject: [PATCH] [SurfaceFlux]  enabled element deactivation

---
 ProcessLib/SurfaceFlux/SurfaceFlux.cpp   | 5 +++--
 ProcessLib/SurfaceFlux/SurfaceFlux.h     | 3 +++
 ProcessLib/SurfaceFlux/SurfaceFluxData.h | 5 +++--
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/ProcessLib/SurfaceFlux/SurfaceFlux.cpp b/ProcessLib/SurfaceFlux/SurfaceFlux.cpp
index 0c98cd7de64..649cbe93c91 100644
--- a/ProcessLib/SurfaceFlux/SurfaceFlux.cpp
+++ b/ProcessLib/SurfaceFlux/SurfaceFlux.cpp
@@ -57,15 +57,16 @@ void SurfaceFlux::integrate(
     MeshLib::PropertyVector<double>& balance,
     double const t,
     MeshLib::Mesh const& bulk_mesh,
+    std::vector<bool> const& element_selector,
     std::function<Eigen::Vector3d(std::size_t const, MathLib::Point3d const&,
                                   double const, GlobalVector const&)> const&
         getFlux)
 {
     DBUG("Integrate SurfaceFlux.");
 
-    GlobalExecutor::executeMemberOnDereferenced(
+    GlobalExecutor::executeSelectedMemberOnDereferenced(
         &SurfaceFluxLocalAssemblerInterface::integrate,
-        _local_assemblers, x, balance, t, bulk_mesh, getFlux);
+        _local_assemblers, element_selector, x, balance, t, bulk_mesh, getFlux);
 }
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/SurfaceFlux/SurfaceFlux.h b/ProcessLib/SurfaceFlux/SurfaceFlux.h
index 5f3e360be60..39d4d86d61d 100644
--- a/ProcessLib/SurfaceFlux/SurfaceFlux.h
+++ b/ProcessLib/SurfaceFlux/SurfaceFlux.h
@@ -9,6 +9,8 @@
 
 #pragma once
 
+#include <vector>
+
 #include "ProcessLib/Process.h"
 #include "SurfaceFluxLocalAssembler.h"
 
@@ -39,6 +41,7 @@ public:
                    MeshLib::PropertyVector<double>& balance,
                    double const t,
                    MeshLib::Mesh const& bulk_mesh,
+                   std::vector<bool> const& element_selector,
                    std::function<Eigen::Vector3d(
                        std::size_t const, MathLib::Point3d const&, double const,
                        GlobalVector const&)> const& getFlux);
diff --git a/ProcessLib/SurfaceFlux/SurfaceFluxData.h b/ProcessLib/SurfaceFlux/SurfaceFluxData.h
index 53619dc6cc3..3df6d6117bf 100644
--- a/ProcessLib/SurfaceFlux/SurfaceFluxData.h
+++ b/ProcessLib/SurfaceFlux/SurfaceFluxData.h
@@ -80,7 +80,8 @@ struct SurfaceFluxData
 
     void integrate(GlobalVector const& x, double const t, Process const& p,
                    int const process_id, int const integration_order,
-                   MeshLib::Mesh const& bulk_mesh)
+                   MeshLib::Mesh const& bulk_mesh,
+                   std::vector<bool> const& element_selector)
     {
         auto* const surfaceflux_pv = MeshLib::getOrCreateMeshProperty<double>(
             surface_mesh, property_vector_name, MeshLib::MeshItemType::Cell, 1);
@@ -92,7 +93,7 @@ struct SurfaceFluxData
             integration_order);
 
         surfaceflux_process.integrate(
-            x, *surfaceflux_pv, t, bulk_mesh,
+            x, *surfaceflux_pv, t, bulk_mesh, element_selector,
             [&p](std::size_t const element_id, MathLib::Point3d const& pnt,
                  double const t, GlobalVector const& x) {
                 return p.getFlux(element_id, pnt, t, x);
-- 
GitLab