From fdbc9e27da8d2c74c69fbce0c178f68d6d12b3b0 Mon Sep 17 00:00:00 2001
From: Philipp Suffa <philipp.suffa@fau.de>
Date: Wed, 5 Jul 2023 16:39:36 +0200
Subject: [PATCH] Changed Communicator to cartesian one for emptyChannel[skip
 ci]

---
 .../HybridBenchmark/HybridBenchmark.cpp       | 29 ++++++++++++-------
 .../ListLBM/HybridBenchmark/input.py          | 28 +++++++++---------
 2 files changed, 33 insertions(+), 24 deletions(-)

diff --git a/apps/benchmarks/ListLBM/HybridBenchmark/HybridBenchmark.cpp b/apps/benchmarks/ListLBM/HybridBenchmark/HybridBenchmark.cpp
index 89b0062e3..87cced0f4 100644
--- a/apps/benchmarks/ListLBM/HybridBenchmark/HybridBenchmark.cpp
+++ b/apps/benchmarks/ListLBM/HybridBenchmark/HybridBenchmark.cpp
@@ -156,7 +156,6 @@ int main(int argc, char **argv)
    WALBERLA_CUDA_CHECK(cudaPeekAtLastError())
 #endif
 
-
    for (auto cfg = python_coupling::configBegin(argc, argv); cfg != python_coupling::configEnd(); ++cfg)
    {
       WALBERLA_MPI_WORLD_BARRIER()
@@ -176,7 +175,7 @@ int main(int argc, char **argv)
       const uint_t timesteps = parameters.getParameter< uint_t >("timesteps", uint_c(10));
       Vector3< int > InnerOuterSplit = parameters.getParameter< Vector3< int > >("innerOuterSplit", Vector3< int >(1, 1, 1));
       const bool weak_scaling = domainParameters.getParameter< bool >("weakScaling", false); // weak or strong scaling
-      const Vector3<bool> periodic = domainParameters.getParameter< Vector3<bool> >("periodic", Vector3<bool>(0,0,0));
+      const Vector3<bool> periodic = domainParameters.getParameter< Vector3<bool> >("periodic", Vector3<bool>(false,false,false));
 
       const real_t remainingTimeLoggerFrequency = parameters.getParameter< real_t >("remainingTimeLoggerFrequency", 3.0); // in seconds
       const real_t omega = parameters.getParameter< real_t > ( "omega", real_c( 1.4 ) );
@@ -187,11 +186,7 @@ int main(int argc, char **argv)
       const bool runHybrid = parameters.getParameter< bool >("runHybrid", false);
       const bool useCartesian = parameters.getParameter< bool >("useCartesian", false);
 
-      if(useCartesian) {
-         mpi::MPIManager::instance()->
-      }
-      else
-         mpi::MPIManager::instance()->useWorldComm();
+
 
 
       Vector3< uint_t > cellsPerBlock;
@@ -214,6 +209,7 @@ int main(int argc, char **argv)
          blocksPerDimension = domainParameters.getParameter< Vector3< uint_t > >("blocks");
       }
 
+
       /////////////////////////
       /// BOUNDARY HANDLING ///
       /////////////////////////
@@ -232,11 +228,21 @@ int main(int argc, char **argv)
 
       if (geometrySetup == "randomNoslip") {
          real_t dx = 1;
-         blocks = walberla::blockforest::createUniformBlockGrid( blocksPerDimension[0], blocksPerDimension[1], blocksPerDimension[2],
+         /*blocks = walberla::blockforest::createUniformBlockGrid( blocksPerDimension[0], blocksPerDimension[1], blocksPerDimension[2],
                                                                    cellsPerBlock[0], cellsPerBlock[1], cellsPerBlock[2],
                                                                    dx, 0, true, false,
                                                                    periodic[0], periodic[1], periodic[2],
-                                                                   false);
+                                                                   false);*/
+
+
+         blocks = walberla::blockforest::createUniformBlockGrid(
+            blocksPerDimension[0],        blocksPerDimension[1],        blocksPerDimension[2],         // blocks/processes in x/y/z direction
+            cellsPerBlock[0], cellsPerBlock[1], cellsPerBlock[2],  // cells per block in x/y/z direction
+            dx,                                                    // cell size
+            true,                                    // one block per process
+            periodic[0], periodic[1], periodic[2],                 // periodicity
+            false                             // keep global block information
+         );
 
          flagFieldId = field::addFlagFieldToStorage< FlagField_T >(blocks, "flag field");
          const real_t porosity = parameters.getParameter< real_t >("porosity");
@@ -250,6 +256,7 @@ int main(int argc, char **argv)
          geometry::setNonBoundaryCellsToDomain<FlagField_T>(*blocks, flagFieldId, fluidFlagUID);
       }
       else if (geometrySetup == "spheres") {
+         mpi::MPIManager::instance()->useWorldComm();
          real_t dx = 1;
          blocks = walberla::blockforest::createUniformBlockGrid( blocksPerDimension[0], blocksPerDimension[1], blocksPerDimension[2], cellsPerBlock[0], cellsPerBlock[1], cellsPerBlock[2], dx);
          flagFieldId = field::addFlagFieldToStorage< FlagField_T >(blocks, "flag field");
@@ -261,6 +268,7 @@ int main(int argc, char **argv)
          geometry::setNonBoundaryCellsToDomain<FlagField_T>(*blocks, flagFieldId, fluidFlagUID);
       }
       else if (geometrySetup == "artery") {
+         mpi::MPIManager::instance()->useWorldComm();
          std::string meshFile  = domainParameters.getParameter< std::string >("meshFile");
          WALBERLA_LOG_INFO_ON_ROOT("Using mesh from " << meshFile << ".")
 
@@ -329,6 +337,7 @@ int main(int argc, char **argv)
 
       }
       else if (geometrySetup == "particleBed") {
+         mpi::MPIManager::instance()->useWorldComm();
          const AABB  domainAABB = AABB(0.0, 0.0, 0.0, 0.1, 0.1, 0.1);
          Vector3<real_t> dx(0.001, 0.001, 0.001);
          Vector3<uint_t> numCells(uint_c(domainAABB.xSize() / dx[0]), uint_c(domainAABB.ySize() / dx[1]), uint_c(domainAABB.zSize() / dx[2]));
@@ -346,7 +355,7 @@ int main(int argc, char **argv)
 
       WALBERLA_LOG_INFO_ON_ROOT("Number of cells is <" << blocks->getNumberOfXCells() << "," << blocks->getNumberOfYCells() << "," << blocks->getNumberOfZCells() << ">")
       WALBERLA_LOG_INFO_ON_ROOT("Number of blocks is <" << blocks->getXSize() << "," << blocks->getYSize() << "," << blocks->getZSize() << ">")
-      WALBERLA_LOG_INFO_ON_ROOT("Is cartesian communicator used: " << mpi::MPIManager::instance()->hasCartesianSetup())
+      WALBERLA_LOG_INFO_ON_ROOT("Is cartesian communicator used: " << mpi::MPIManager::instance()->hasCartesianSetup() << " or worldComm " << mpi::MPIManager::instance()->hasWorldCommSetup())
 
 
       if(timeStepStrategy != "noOverlap") {
diff --git a/apps/benchmarks/ListLBM/HybridBenchmark/input.py b/apps/benchmarks/ListLBM/HybridBenchmark/input.py
index d54dfcfe0..a735aa247 100644
--- a/apps/benchmarks/ListLBM/HybridBenchmark/input.py
+++ b/apps/benchmarks/ListLBM/HybridBenchmark/input.py
@@ -5,7 +5,7 @@ import waLBerla as wlb
 DB_FILE = os.environ.get('DB_FILE', "ListLBMBenchmark.sqlite3")
 
 class Scenario:
-    def __init__(self, cells_per_block=(64, 64, 20), periodic=(0,0,0),
+    def __init__(self, cells_per_block=(64, 64, 20), periodic=(False,False,False),
                  timesteps=1000, time_step_strategy="noOverlap", omega=0.8, cuda_enabled_mpi=True,
                  inner_outer_split=(1, 1, 1), vtk_write_frequency=0, inflow_velocity=(0.01,0,0),
                  porosity=0.5, porositySwitch=0.8, run_hybrid = True, geometry_setup="randomNoslip",
@@ -46,7 +46,7 @@ class Scenario:
         return {
             'DomainSetup': {
                 'cellsPerBlock': self.cells_per_block,
-                'periodic':self.periodic,
+                'periodic': self.periodic,
                 'weakScaling': True,
                 'geometrySetup': self.geometry_setup,
                 'meshFile': self.mesh_file
@@ -145,26 +145,26 @@ def testGPUComm():
 
 
 def testCartesianComm():
-    cells_per_block=(256, 256, 256)
+    cells_per_block=(50, 50, 50)
     scenarios = wlb.ScenarioManager()
-    scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True,
-                        time_step_strategy="noOverlap", inner_outer_split=(0, 0, 0), run_boundaries=True, use_cartesian_communicator=False)
-    scenarios.add(scenario)
-    scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True,
+    scenario = Scenario(cells_per_block=cells_per_block, periodic=(False,True,True), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True,
                         time_step_strategy="noOverlap", inner_outer_split=(0, 0, 0), run_boundaries=True, use_cartesian_communicator=True)
     scenarios.add(scenario)
-    scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True,
-                        time_step_strategy="Overlap", inner_outer_split=(1, 1, 1), run_boundaries=True, use_cartesian_communicator=False)
-    scenarios.add(scenario)
-    scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True,
-                        time_step_strategy="Overlap", inner_outer_split=(1, 1, 1), run_boundaries=True, use_cartesian_communicator=True)
+    scenario = Scenario(cells_per_block=cells_per_block, periodic=(False,True,True), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True,
+                        time_step_strategy="noOverlap", inner_outer_split=(0, 0, 0), run_boundaries=True, use_cartesian_communicator=False)
     scenarios.add(scenario)
+    #scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True,
+    #                    time_step_strategy="Overlap", inner_outer_split=(1, 1, 1), run_boundaries=True, use_cartesian_communicator=False)
+    #scenarios.add(scenario)
+    #scenario = Scenario(cells_per_block=cells_per_block, periodic=(0,1,1), geometry_setup="randomNoslip", porosity=1.0, porositySwitch=0.0, run_hybrid=True,
+    #                    time_step_strategy="Overlap", inner_outer_split=(1, 1, 1), run_boundaries=True, use_cartesian_communicator=True)
+    #scenarios.add(scenario)
 
 #randomNoslip()
 #spheres()
-#Artery()
+Artery()
 #particleBed()
 #emptyChannel()
 #scalingBenchmark()
 #testGPUComm()
-testCartesianComm()
+#testCartesianComm()
-- 
GitLab