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/communication/MakeHeader                |   38 +
 src/communication/blockLoadBalancer.cpp     |   29 +
 src/communication/blockLoadBalancer.h       |   57 ++
 src/communication/blockLoadBalancer.hh      |  105 +++
 src/communication/communication2D.h         |   41 +
 src/communication/communication2D.hh        |   38 +
 src/communication/communication3D.h         |   42 +
 src/communication/communication3D.hh        |   38 +
 src/communication/communicator2D.cpp        |   37 +
 src/communication/communicator2D.h          |   99 +++
 src/communication/communicator2D.hh         |  185 +++++
 src/communication/communicator3D.cpp        |   37 +
 src/communication/communicator3D.h          |   97 +++
 src/communication/communicator3D.hh         |  181 +++++
 src/communication/cuboidNeighbourhood2D.cpp |   38 +
 src/communication/cuboidNeighbourhood2D.h   |  195 +++++
 src/communication/cuboidNeighbourhood2D.hh  |  452 +++++++++++
 src/communication/cuboidNeighbourhood3D.cpp |   38 +
 src/communication/cuboidNeighbourhood3D.h   |  190 +++++
 src/communication/cuboidNeighbourhood3D.hh  |  449 +++++++++++
 src/communication/heuristicLoadBalancer.cpp |   29 +
 src/communication/heuristicLoadBalancer.h   |   85 ++
 src/communication/heuristicLoadBalancer.hh  |  402 ++++++++++
 src/communication/loadBalancer.cpp          |   31 +
 src/communication/loadBalancer.h            |  208 +++++
 src/communication/loadBalancer.hh           |  167 ++++
 src/communication/module.mk                 |   27 +
 src/communication/mpiManager.cpp            | 1154 +++++++++++++++++++++++++++
 src/communication/mpiManager.h              |  279 +++++++
 src/communication/ompManager.cpp            |   59 ++
 src/communication/ompManager.h              |   49 ++
 src/communication/superStructure2D.cpp      |   34 +
 src/communication/superStructure2D.h        |   91 +++
 src/communication/superStructure2D.hh       |  114 +++
 src/communication/superStructure3D.cpp      |   34 +
 src/communication/superStructure3D.h        |   95 +++
 src/communication/superStructure3D.hh       |  120 +++
 37 files changed, 5364 insertions(+)
 create mode 100644 src/communication/MakeHeader
 create mode 100644 src/communication/blockLoadBalancer.cpp
 create mode 100644 src/communication/blockLoadBalancer.h
 create mode 100644 src/communication/blockLoadBalancer.hh
 create mode 100644 src/communication/communication2D.h
 create mode 100644 src/communication/communication2D.hh
 create mode 100644 src/communication/communication3D.h
 create mode 100644 src/communication/communication3D.hh
 create mode 100644 src/communication/communicator2D.cpp
 create mode 100644 src/communication/communicator2D.h
 create mode 100644 src/communication/communicator2D.hh
 create mode 100644 src/communication/communicator3D.cpp
 create mode 100644 src/communication/communicator3D.h
 create mode 100644 src/communication/communicator3D.hh
 create mode 100644 src/communication/cuboidNeighbourhood2D.cpp
 create mode 100644 src/communication/cuboidNeighbourhood2D.h
 create mode 100644 src/communication/cuboidNeighbourhood2D.hh
 create mode 100644 src/communication/cuboidNeighbourhood3D.cpp
 create mode 100644 src/communication/cuboidNeighbourhood3D.h
 create mode 100644 src/communication/cuboidNeighbourhood3D.hh
 create mode 100644 src/communication/heuristicLoadBalancer.cpp
 create mode 100644 src/communication/heuristicLoadBalancer.h
 create mode 100644 src/communication/heuristicLoadBalancer.hh
 create mode 100644 src/communication/loadBalancer.cpp
 create mode 100644 src/communication/loadBalancer.h
 create mode 100644 src/communication/loadBalancer.hh
 create mode 100644 src/communication/module.mk
 create mode 100644 src/communication/mpiManager.cpp
 create mode 100644 src/communication/mpiManager.h
 create mode 100644 src/communication/ompManager.cpp
 create mode 100644 src/communication/ompManager.h
 create mode 100644 src/communication/superStructure2D.cpp
 create mode 100644 src/communication/superStructure2D.h
 create mode 100644 src/communication/superStructure2D.hh
 create mode 100644 src/communication/superStructure3D.cpp
 create mode 100644 src/communication/superStructure3D.h
 create mode 100644 src/communication/superStructure3D.hh
(limited to 'src/communication')
diff --git a/src/communication/MakeHeader b/src/communication/MakeHeader
new file mode 100644
index 0000000..169f7c1
--- /dev/null
+++ b/src/communication/MakeHeader
@@ -0,0 +1,38 @@
+#  This file is part of the OpenLB library
+#
+#  Copyright (C) 2007 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.
+
+
+generic        := loadBalancer \
+                  mpiManager \
+                  ompManager
+
+precompiled    := blockLoadBalancer \
+                  communicator2D \
+                  communicator3D \
+                  cuboidNeighbourhood2D \
+                  cuboidNeighbourhood3D \
+                  heuristicLoadBalancer \
+                  loadBalancer \
+                  mpiManager \
+                  ompManager \
+                  superStructure2D \
+                  superStructure3D
diff --git a/src/communication/blockLoadBalancer.cpp b/src/communication/blockLoadBalancer.cpp
new file mode 100644
index 0000000..35558e9
--- /dev/null
+++ b/src/communication/blockLoadBalancer.cpp
@@ -0,0 +1,29 @@
+/*  This file is part of the OpenLB library
+ *
+ *  Copyright (C) 2007 Mathias 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.
+*/
+
+#include "communication/blockLoadBalancer.h"
+#include "communication/blockLoadBalancer.hh"
+
+namespace olb {
+template class BlockLoadBalancer;
+}
diff --git a/src/communication/blockLoadBalancer.h b/src/communication/blockLoadBalancer.h
new file mode 100644
index 0000000..0aa0f2e
--- /dev/null
+++ b/src/communication/blockLoadBalancer.h
@@ -0,0 +1,57 @@
+/*  This file is part of the OpenLB library
+ *
+ *  Copyright (C) 2007 Mathias 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 BLOCK_LOAD_BALANCER_H
+#define BLOCK_LOAD_BALANCER_H
+
+
+#include "communication/loadBalancer.h"
+
+
+
+namespace olb {
+
+template class CuboidGeometry3D;
+template class CuboidGeometry2D;
+
+
+template
+class BlockLoadBalancer : public LoadBalancer {
+private:
+  int _locChunkSize;
+  int _firstGlobNum;
+  int _lastGlobNum;
+public:
+  BlockLoadBalancer() {}
+  BlockLoadBalancer(int rank, int size, int globChunkSize, int offset);
+  BlockLoadBalancer(CuboidGeometry2D& cGeometry);
+  BlockLoadBalancer(CuboidGeometry3D& cGeometry);
+  void init_chunkD(int rank, int size, int globChunkSize, int offset);
+  int locChunkSize() const;
+  int firstGlobNum() const;
+  int lastGlobNum() const;
+};
+}  // namespace olb
+
+#endif
diff --git a/src/communication/blockLoadBalancer.hh b/src/communication/blockLoadBalancer.hh
new file mode 100644
index 0000000..0c61af1
--- /dev/null
+++ b/src/communication/blockLoadBalancer.hh
@@ -0,0 +1,105 @@
+/*  This file is part of the OpenLB library
+ *
+ *  Copyright (C) 2007 Mathias 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 BLOCK_LOAD_BALANCER_HH
+#define BLOCK_LOAD_BALANCER_HH
+
+#include 
+#include