From 94d3e79a8617f88dc0219cfdeedfa3147833719d Mon Sep 17 00:00:00 2001
From: Adrian Kummerlaender
Date: Mon, 24 Jun 2019 14:43:36 +0200
Subject: Initialize at openlb-1-3
---
 src/particles/boundaries/materialBoundary3D.h | 84 +++++++++++++++++++++++++++
 1 file changed, 84 insertions(+)
 create mode 100644 src/particles/boundaries/materialBoundary3D.h
(limited to 'src/particles/boundaries/materialBoundary3D.h')
diff --git a/src/particles/boundaries/materialBoundary3D.h b/src/particles/boundaries/materialBoundary3D.h
new file mode 100644
index 0000000..2c4267b
--- /dev/null
+++ b/src/particles/boundaries/materialBoundary3D.h
@@ -0,0 +1,84 @@
+/*  This file is part of the OpenLB library
+ *
+ *  Copyright (C) 2014 Thomas Henn, Mathias J. Krause
+ *  E-mail contact: info@openlb.net
+ *  The most recent release of OpenLB can be downloaded at
+ *  
+ *
+ *  This program is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU General Public License
+ *  as published by the Free Software Foundation; either version 2
+ *  of the License, or (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public
+ *  License along with this program; if not, write to the Free
+ *  Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ *  Boston, MA  02110-1301, USA.
+ */
+
+#ifndef MATERIALBOUNDARY3D_H
+#define MATERIALBOUNDARY3D_H
+
+#include 
+
+#include "geometry/superGeometry3D.h"
+#include "particles/particleSystem3D.h"
+#include "boundary3D.h"
+
+namespace olb {
+
+template class PARTICLETYPE>
+class ParticleSystem3D;
+
+
+/*
+ * Particle boundary based on the fluids material number.
+ * If a particle moves in the vincinity of a lattice node with
+ * specified material number it is set inactive and its velocity is set to 0.
+ **/
+
+template class PARTICLETYPE>
+class MaterialBoundary3D : public Boundary3D {
+public:
+  /// Constructor
+  MaterialBoundary3D(SuperGeometry3D& sg);
+  /// Copy constructor
+  MaterialBoundary3D(MaterialBoundary3D& f);
+  /// Constructor with set of material numbers
+  MaterialBoundary3D(SuperGeometry3D& sg,
+                     std::set material);
+  ~MaterialBoundary3D() override
+  {
+  }
+  /// Add a single material number
+  void addMaterial(int mat)
+  {
+    _materials.insert(mat);
+  }
+  /// Add several material numbers
+  void addMaterial(std::vector mats)
+  {
+    for (unsigned i=0; i< mats.size(); ++i) {
+      _materials.insert(mats[i]);
+    }
+  }
+  /// Apply the boundary condition
+  void applyBoundary(
+    typename std::deque >::iterator& p,
+    ParticleSystem3D& psSys) override;
+
+private:
+  SuperGeometry3D& _sg;
+  std::set _materials;
+  std::set::iterator _matIter;
+  //  int x0, y0, z0;
+};
+
+}
+
+#endif /* MATERIALBOUNDARY3D_H */
-- 
cgit v1.2.3