From e65ddd4b5c5bb350ccfa6315137c08850ffd99a3 Mon Sep 17 00:00:00 2001
From: Sebastian Eibl <sebastian.eibl@fau.de>
Date: Thu, 18 Jan 2018 17:37:40 +0100
Subject: [PATCH] added body filter to PeVTKMeshWriter

---
 src/mesh/pe/vtk/PeVTKMeshWriter.h | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/mesh/pe/vtk/PeVTKMeshWriter.h b/src/mesh/pe/vtk/PeVTKMeshWriter.h
index 1f1ba9102..55721ae20 100644
--- a/src/mesh/pe/vtk/PeVTKMeshWriter.h
+++ b/src/mesh/pe/vtk/PeVTKMeshWriter.h
@@ -124,6 +124,9 @@ public:
    void addVertexPropertyRank() { meshWriter_.addDataSource( make_shared<RankVertexDataSource<MeshType>>() ); }
    void addFacePropertyRank() { meshWriter_.addDataSource( make_shared<RankFaceDataSource<MeshType>>() ); }
 
+   void setBodyFilter( const std::function<bool(const walberla::pe::RigidBody&)>& filter) { bodyFilter_ = filter; }
+   const std::function<bool(const walberla::pe::RigidBody&)>& getBodyFilter() const { return bodyFilter_; }
+
 protected:
 
    template< typename T >
@@ -183,6 +186,7 @@ protected:
          const walberla::pe::BodyStorage & bodyStorage = (*storage)[0];
          for(auto bodyIt = bodyStorage.begin(); bodyIt != bodyStorage.end(); ++bodyIt)
          {
+            if (!bodyFilter_(**bodyIt)) continue;
             newVertices.clear();
             newFaces.clear();
             tesselation_( **bodyIt, *mesh_, newVertices, newFaces );
@@ -204,6 +208,7 @@ protected:
    DistributedVTKMeshWriter<MeshType> meshWriter_;
    BodyPointerFPropManager faceBodyPointer_;
    BodyPointerVPropManager vertexBodyPointer_;
+   std::function<bool(const walberla::pe::RigidBody&)> bodyFilter_ = [](const walberla::pe::RigidBody&){ return true; };
 };
 
 } // namespace pe
-- 
GitLab