From 5e0f42c887301be99283fc2bbe67ff56864c4325 Mon Sep 17 00:00:00 2001
From: Sebastian Eibl <sebastian.eibl@fau.de>
Date: Fri, 6 Sep 2019 13:22:43 +0200
Subject: [PATCH] added shift to make collision points unique

---
 apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp         | 2 +-
 apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp     | 2 +-
 apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp | 2 +-
 apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp       | 2 +-
 apps/benchmarks/GranularGas/PE_GranularGas.cpp              | 2 +-
 apps/benchmarks/GranularGas/PE_LoadBalancing.cpp            | 2 +-
 apps/benchmarks/GranularGas/Parameters.cpp                  | 4 ++++
 apps/benchmarks/GranularGas/Parameters.h                    | 1 +
 apps/benchmarks/GranularGas/generateConfig.py               | 1 +
 9 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp b/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp
index 01c253995..01dab71ea 100644
--- a/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp
+++ b/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp
@@ -125,7 +125,7 @@ int main( int argc, char ** argv )
    for (auto& iBlk : *forest)
    {
       for (auto pt : grid_generator::SCGrid(iBlk.getAABB(),
-                                            Vector3<real_t>(params.spacing) * real_c(0.5),
+                                            Vector3<real_t>(params.spacing) * real_c(0.5) + params.shift,
                                             params.spacing))
       {
          WALBERLA_CHECK(iBlk.getAABB().contains(pt));
diff --git a/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp b/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp
index a6cbb6747..669da955b 100644
--- a/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp
+++ b/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp
@@ -128,7 +128,7 @@ int main( int argc, char ** argv )
    for (auto& iBlk : *forest)
    {
       for (auto pt : grid_generator::SCGrid(iBlk.getAABB(),
-                                            Vector3<real_t>(params.spacing) * real_c(0.5),
+                                            Vector3<real_t>(params.spacing) * real_c(0.5) + params.shift,
                                             params.spacing))
       {
          WALBERLA_CHECK(iBlk.getAABB().contains(pt));
diff --git a/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp b/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp
index 76d90bbe9..f4bedea10 100644
--- a/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp
+++ b/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp
@@ -207,7 +207,7 @@ int main( int argc, char ** argv )
    for (auto& iBlk : *forest)
    {
       for (auto pt : grid_generator::SCGrid(iBlk.getAABB(),
-                                            Vector3<real_t>(params.spacing) * real_c(0.5),
+                                            Vector3<real_t>(params.spacing) * real_c(0.5) + params.shift,
                                             params.spacing))
       {
          WALBERLA_CHECK(iBlk.getAABB().contains(pt));
diff --git a/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp b/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp
index feec74e0b..7e8ea524c 100644
--- a/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp
+++ b/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp
@@ -203,7 +203,7 @@ int main( int argc, char ** argv )
    for (auto& iBlk : *forest)
    {
       for (auto pt : grid_generator::SCGrid(iBlk.getAABB(),
-                                            Vector3<real_t>(params.spacing) * real_c(0.5),
+                                            Vector3<real_t>(params.spacing) * real_c(0.5) + params.shift,
                                             params.spacing))
       {
          WALBERLA_CHECK(iBlk.getAABB().contains(pt));
diff --git a/apps/benchmarks/GranularGas/PE_GranularGas.cpp b/apps/benchmarks/GranularGas/PE_GranularGas.cpp
index ece49a745..be3fd973c 100644
--- a/apps/benchmarks/GranularGas/PE_GranularGas.cpp
+++ b/apps/benchmarks/GranularGas/PE_GranularGas.cpp
@@ -190,7 +190,7 @@ int main( int argc, char ** argv )
    for (auto& currentBlock : *forest)
    {
       for (auto it = grid_generator::SCIterator(currentBlock.getAABB().getIntersection(generationDomain),
-                                                Vector3<real_t>(params.spacing) * real_c(0.5),
+                                                Vector3<real_t>(params.spacing) * real_c(0.5) + params.shift,
                                                 params.spacing);
            it != grid_generator::SCIterator();
            ++it)
diff --git a/apps/benchmarks/GranularGas/PE_LoadBalancing.cpp b/apps/benchmarks/GranularGas/PE_LoadBalancing.cpp
index 42bcac4ec..84e2e8f41 100644
--- a/apps/benchmarks/GranularGas/PE_LoadBalancing.cpp
+++ b/apps/benchmarks/GranularGas/PE_LoadBalancing.cpp
@@ -268,7 +268,7 @@ int main( int argc, char ** argv )
    for (auto& currentBlock : *forest)
    {
       for (auto it = grid_generator::SCIterator(currentBlock.getAABB().getIntersection(generationDomain),
-                                                Vector3<real_t>(params.spacing) * real_c(0.5),
+                                                Vector3<real_t>(params.spacing) * real_c(0.5) + params.shift,
                                                 params.spacing);
            it != grid_generator::SCIterator();
            ++it)
diff --git a/apps/benchmarks/GranularGas/Parameters.cpp b/apps/benchmarks/GranularGas/Parameters.cpp
index 83a517db8..9b9e904ca 100644
--- a/apps/benchmarks/GranularGas/Parameters.cpp
+++ b/apps/benchmarks/GranularGas/Parameters.cpp
@@ -42,6 +42,9 @@ void loadFromConfig(Parameters& params, const Config::BlockHandle& cfg)
    params.spacing = cfg.getParameter<real_t>("spacing", real_t(1.0) );
    WALBERLA_LOG_INFO_ON_ROOT("spacing: " << params.spacing);
    
+   params.shift = cfg.getParameter<Vec3>("shift", Vec3(real_t(0.1), real_t(0.1), real_t(0.1)) );
+   WALBERLA_LOG_INFO_ON_ROOT("shift: " << params.shift);
+   
    params.radius = cfg.getParameter<real_t>("radius", real_t(0.5) );
    WALBERLA_LOG_INFO_ON_ROOT("radius: " << params.radius);
    
@@ -135,6 +138,7 @@ void saveToSQL(const Parameters& params,
    
    realProperties["spacing"] = double_c(params.spacing);
    
+   
    realProperties["radius"] = double_c(params.radius);
    
    
diff --git a/apps/benchmarks/GranularGas/Parameters.h b/apps/benchmarks/GranularGas/Parameters.h
index de6152baa..263b1ff5a 100644
--- a/apps/benchmarks/GranularGas/Parameters.h
+++ b/apps/benchmarks/GranularGas/Parameters.h
@@ -39,6 +39,7 @@ struct Parameters
    std::string sorting = "none";
    Vec3 normal = Vec3(real_t(1.0), real_t(1.0), real_t(1.0));
    real_t spacing = real_t(1.0);
+   Vec3 shift = Vec3(real_t(0.1), real_t(0.1), real_t(0.1));
    real_t radius = real_t(0.5);
    bool bBarrier = false;
    bool storeNodeTimings = false;
diff --git a/apps/benchmarks/GranularGas/generateConfig.py b/apps/benchmarks/GranularGas/generateConfig.py
index 5a1bd8f75..195534574 100755
--- a/apps/benchmarks/GranularGas/generateConfig.py
+++ b/apps/benchmarks/GranularGas/generateConfig.py
@@ -7,6 +7,7 @@ cfg = Config()
 cfg.addParameter("sorting",                "std::string", '"none"')
 cfg.addParameter("normal",                 "Vec3",        "Vec3(real_t(1.0), real_t(1.0), real_t(1.0))")
 cfg.addParameter("spacing",                "real_t",      "real_t(1.0)")
+cfg.addParameter("shift",                  "Vec3",        "Vec3(real_t(0.1), real_t(0.1), real_t(0.1))")
 cfg.addParameter("radius",                 "real_t",      "real_t(0.5)")
 cfg.addParameter("bBarrier",               "bool",        "false")
 cfg.addParameter("storeNodeTimings",       "bool",        "false")
-- 
GitLab