From 4e4bd7f290fb725880e63e9a5c0637c8486b4c71 Mon Sep 17 00:00:00 2001
From: Christoph Rettinger <christoph.rettinger@fau.de>
Date: Tue, 6 Apr 2021 13:41:46 +0200
Subject: [PATCH] Adapted benchmark cases to comply with asserts, fixed test
 case

---
 .../FluidParticleCoupling/ForcesOnSphereNearPlane.cpp      | 2 ++
 .../FluidParticleCoupling/LubricationForceEvaluation.cpp   | 2 ++
 .../FluidParticleCoupling/ObliqueDryCollision.cpp          | 2 ++
 .../FluidParticleCoupling/ObliqueWetCollision.cpp          | 2 ++
 .../FluidParticleCoupling/SettlingSphereInBox.cpp          | 6 ++++++
 .../SphereMovingWithPrescribedVelocity.cpp                 | 4 ++++
 .../FluidParticleCoupling/SphereWallCollision.cpp          | 2 ++
 .../FluidParticleWorkloadDistribution.cpp                  | 1 +
 .../FluidParticleWorkloadEvaluation.cpp                    | 2 ++
 apps/benchmarks/GranularGas/CreateParticles.cpp            | 1 +
 tests/mesa_pd/ContactDetection.cpp                         | 7 ++++---
 11 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/apps/benchmarks/FluidParticleCoupling/ForcesOnSphereNearPlane.cpp b/apps/benchmarks/FluidParticleCoupling/ForcesOnSphereNearPlane.cpp
index ee3c0f143..1ef29cf39 100644
--- a/apps/benchmarks/FluidParticleCoupling/ForcesOnSphereNearPlane.cpp
+++ b/apps/benchmarks/FluidParticleCoupling/ForcesOnSphereNearPlane.cpp
@@ -309,6 +309,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
    // create bounding planes
    mesa_pd::data::Particle p0 = *ps->create(true);
    p0.setPosition(simulationDomain.minCorner());
+   p0.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p0.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,0,1) ));
    p0.setOwner(mpi::MPIManager::instance()->rank());
    p0.setType(0);
@@ -317,6 +318,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
 
    mesa_pd::data::Particle p1 = *ps->create(true);
    p1.setPosition(simulationDomain.maxCorner());
+   p1.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p1.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,0,-1) ));
    p1.setOwner(mpi::MPIManager::instance()->rank());
    p1.setType(0);
diff --git a/apps/benchmarks/FluidParticleCoupling/LubricationForceEvaluation.cpp b/apps/benchmarks/FluidParticleCoupling/LubricationForceEvaluation.cpp
index e17092473..4d3b151b4 100644
--- a/apps/benchmarks/FluidParticleCoupling/LubricationForceEvaluation.cpp
+++ b/apps/benchmarks/FluidParticleCoupling/LubricationForceEvaluation.cpp
@@ -443,6 +443,7 @@ int main( int argc, char **argv )
       // create two planes
       mesa_pd::data::Particle&& p0 = *ps->create(true);
       p0.setPosition(referenceVector);
+      p0.setInteractionRadius(std::numeric_limits<real_t>::infinity());
       p0.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(1,0,0) ));
       p0.setOwner(mpi::MPIManager::instance()->rank());
       mesa_pd::data::particle_flags::set(p0.getFlagsRef(), mesa_pd::data::particle_flags::INFINITE);
@@ -451,6 +452,7 @@ int main( int argc, char **argv )
 
       mesa_pd::data::Particle&& p1 = *ps->create(true);
       p1.setPosition(Vector3<real_t>(real_c(xSize),0,0));
+      p1.setInteractionRadius(std::numeric_limits<real_t>::infinity());
       p1.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(-1,0,0) ));
       p1.setOwner(mpi::MPIManager::instance()->rank());
       mesa_pd::data::particle_flags::set(p1.getFlagsRef(), mesa_pd::data::particle_flags::INFINITE);
diff --git a/apps/benchmarks/FluidParticleCoupling/ObliqueDryCollision.cpp b/apps/benchmarks/FluidParticleCoupling/ObliqueDryCollision.cpp
index 9314699f4..784a10334 100644
--- a/apps/benchmarks/FluidParticleCoupling/ObliqueDryCollision.cpp
+++ b/apps/benchmarks/FluidParticleCoupling/ObliqueDryCollision.cpp
@@ -119,11 +119,13 @@ int main( int argc, char ** argv )
    data::Particle&& p = *ps->create();
    p.setPosition(Vec3(0,0,2*radius));
    p.setLinearVelocity(Vec3(uTin, 0., -uNin));
+   p.setInteractionRadius(radius);
    p.setType(0);
 
    // create plane
    data::Particle&& p0 = *ps->create(true);
    p0.setPosition(Vec3(0,0,0));
+   p0.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p0.setShapeID(ss->create<data::HalfSpace>(Vector3<real_t>(0,0,1)));
    p0.setType(0);
    data::particle_flags::set(p0.getFlagsRef(), data::particle_flags::INFINITE);
diff --git a/apps/benchmarks/FluidParticleCoupling/ObliqueWetCollision.cpp b/apps/benchmarks/FluidParticleCoupling/ObliqueWetCollision.cpp
index 3bb0c57ee..2415cf72d 100644
--- a/apps/benchmarks/FluidParticleCoupling/ObliqueWetCollision.cpp
+++ b/apps/benchmarks/FluidParticleCoupling/ObliqueWetCollision.cpp
@@ -370,6 +370,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
    // create bounding planes
    mesa_pd::data::Particle&& p0 = *ps->create(true);
    p0.setPosition(simulationDomain.minCorner());
+   p0.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p0.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,0,1) ));
    p0.setOwner(mpi::MPIManager::instance()->rank());
    p0.setType(0);
@@ -381,6 +382,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
       //only create top plane when no outflow BC should be set there
       mesa_pd::data::Particle&& p1 = *ps->create(true);
       p1.setPosition(simulationDomain.maxCorner());
+      p1.setInteractionRadius(std::numeric_limits<real_t>::infinity());
       p1.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,0,-1) ));
       p1.setOwner(mpi::MPIManager::instance()->rank());
       p1.setType(0);
diff --git a/apps/benchmarks/FluidParticleCoupling/SettlingSphereInBox.cpp b/apps/benchmarks/FluidParticleCoupling/SettlingSphereInBox.cpp
index 3f2f613b2..899c27f67 100644
--- a/apps/benchmarks/FluidParticleCoupling/SettlingSphereInBox.cpp
+++ b/apps/benchmarks/FluidParticleCoupling/SettlingSphereInBox.cpp
@@ -290,6 +290,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
    // create bounding planes
    mesa_pd::data::Particle p0 = *ps->create(true);
    p0.setPosition(simulationDomain.minCorner());
+   p0.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p0.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,0,1) ));
    p0.setOwner(mpi::MPIManager::instance()->rank());
    p0.setType(0);
@@ -298,6 +299,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
 
    mesa_pd::data::Particle p1 = *ps->create(true);
    p1.setPosition(simulationDomain.maxCorner());
+   p1.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p1.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,0,-1) ));
    p1.setOwner(mpi::MPIManager::instance()->rank());
    p1.setType(0);
@@ -306,6 +308,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
 
    mesa_pd::data::Particle p2 = *ps->create(true);
    p2.setPosition(simulationDomain.minCorner());
+   p2.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p2.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(1,0,0) ));
    p2.setOwner(mpi::MPIManager::instance()->rank());
    p2.setType(0);
@@ -314,6 +317,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
 
    mesa_pd::data::Particle p3 = *ps->create(true);
    p3.setPosition(simulationDomain.maxCorner());
+   p3.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p3.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(-1,0,0) ));
    p3.setOwner(mpi::MPIManager::instance()->rank());
    p3.setType(0);
@@ -322,6 +326,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
 
    mesa_pd::data::Particle p4 = *ps->create(true);
    p4.setPosition(simulationDomain.minCorner());
+   p4.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p4.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,1,0) ));
    p4.setOwner(mpi::MPIManager::instance()->rank());
    p4.setType(0);
@@ -330,6 +335,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
 
    mesa_pd::data::Particle p5 = *ps->create(true);
    p5.setPosition(simulationDomain.maxCorner());
+   p5.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p5.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,-1,0) ));
    p5.setOwner(mpi::MPIManager::instance()->rank());
    p5.setType(0);
diff --git a/apps/benchmarks/FluidParticleCoupling/SphereMovingWithPrescribedVelocity.cpp b/apps/benchmarks/FluidParticleCoupling/SphereMovingWithPrescribedVelocity.cpp
index 9c963fa9d..0b9e6ec68 100644
--- a/apps/benchmarks/FluidParticleCoupling/SphereMovingWithPrescribedVelocity.cpp
+++ b/apps/benchmarks/FluidParticleCoupling/SphereMovingWithPrescribedVelocity.cpp
@@ -288,6 +288,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
 {
    mesa_pd::data::Particle p2 = *ps->create(true);
    p2.setPosition(simulationDomain.minCorner());
+   p2.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p2.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(1,0,0) ));
    p2.setOwner(mpi::MPIManager::instance()->rank());
    p2.setType(0);
@@ -297,6 +298,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
 
    mesa_pd::data::Particle p3 = *ps->create(true);
    p3.setPosition(simulationDomain.maxCorner());
+   p3.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p3.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(-1,0,0) ));
    p3.setOwner(mpi::MPIManager::instance()->rank());
    p3.setType(0);
@@ -306,6 +308,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
 
    mesa_pd::data::Particle p4 = *ps->create(true);
    p4.setPosition(simulationDomain.minCorner());
+   p4.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p4.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,1,0) ));
    p4.setOwner(mpi::MPIManager::instance()->rank());
    p4.setType(0);
@@ -315,6 +318,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
 
    mesa_pd::data::Particle p5 = *ps->create(true);
    p5.setPosition(simulationDomain.maxCorner());
+   p5.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p5.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,-1,0) ));
    p5.setOwner(mpi::MPIManager::instance()->rank());
    p5.setType(0);
diff --git a/apps/benchmarks/FluidParticleCoupling/SphereWallCollision.cpp b/apps/benchmarks/FluidParticleCoupling/SphereWallCollision.cpp
index 1ce306d76..13df3b0a8 100644
--- a/apps/benchmarks/FluidParticleCoupling/SphereWallCollision.cpp
+++ b/apps/benchmarks/FluidParticleCoupling/SphereWallCollision.cpp
@@ -367,6 +367,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
    // create bounding planes
    mesa_pd::data::Particle&& p0 = *ps->create(true);
    p0.setPosition(simulationDomain.minCorner());
+   p0.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p0.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,0,1) ));
    p0.setOwner(mpi::MPIManager::instance()->rank());
    p0.setType(0);
@@ -378,6 +379,7 @@ void createPlaneSetup(const shared_ptr<mesa_pd::data::ParticleStorage> & ps, con
       //only create top plane when no outflow BC should be set there
       mesa_pd::data::Particle&& p1 = *ps->create(true);
       p1.setPosition(simulationDomain.maxCorner());
+      p1.setInteractionRadius(std::numeric_limits<real_t>::infinity());
       p1.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,0,-1) ));
       p1.setOwner(mpi::MPIManager::instance()->rank());
       p1.setType(0);
diff --git a/apps/benchmarks/FluidParticleCouplingWithLoadBalancing/FluidParticleWorkloadDistribution.cpp b/apps/benchmarks/FluidParticleCouplingWithLoadBalancing/FluidParticleWorkloadDistribution.cpp
index 9f93af67b..78a8570bc 100644
--- a/apps/benchmarks/FluidParticleCouplingWithLoadBalancing/FluidParticleWorkloadDistribution.cpp
+++ b/apps/benchmarks/FluidParticleCouplingWithLoadBalancing/FluidParticleWorkloadDistribution.cpp
@@ -389,6 +389,7 @@ void createPlane( const shared_ptr<mesa_pd::data::ParticleStorage> & ps, const s
 {
    mesa_pd::data::Particle&& p0 = *ps->create(true);
    p0.setPosition(position);
+   p0.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p0.setShapeID(ss->create<mesa_pd::data::HalfSpace>( normal.getNormalized() ));
    p0.setOwner(mpi::MPIManager::instance()->rank());
    p0.setType(0);
diff --git a/apps/benchmarks/FluidParticleCouplingWithLoadBalancing/FluidParticleWorkloadEvaluation.cpp b/apps/benchmarks/FluidParticleCouplingWithLoadBalancing/FluidParticleWorkloadEvaluation.cpp
index 062e3f9c9..a78736fff 100644
--- a/apps/benchmarks/FluidParticleCouplingWithLoadBalancing/FluidParticleWorkloadEvaluation.cpp
+++ b/apps/benchmarks/FluidParticleCouplingWithLoadBalancing/FluidParticleWorkloadEvaluation.cpp
@@ -460,6 +460,7 @@ int main( int argc, char **argv )
 
    mesa_pd::data::Particle&& p0 = *ps->create(true);
    p0.setPosition(generationDomain.minCorner());
+   p0.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p0.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,0,1) ));
    p0.setOwner(mpi::MPIManager::instance()->rank());
    p0.setType(0);
@@ -468,6 +469,7 @@ int main( int argc, char **argv )
 
    mesa_pd::data::Particle&& p1 = *ps->create(true);
    p1.setPosition(generationDomain.maxCorner());
+   p1.setInteractionRadius(std::numeric_limits<real_t>::infinity());
    p1.setShapeID(ss->create<mesa_pd::data::HalfSpace>( Vector3<real_t>(0,0,-1) ));
    p1.setOwner(mpi::MPIManager::instance()->rank());
    p1.setType(0);
diff --git a/apps/benchmarks/GranularGas/CreateParticles.cpp b/apps/benchmarks/GranularGas/CreateParticles.cpp
index 4c788c163..a7a76190d 100644
--- a/apps/benchmarks/GranularGas/CreateParticles.cpp
+++ b/apps/benchmarks/GranularGas/CreateParticles.cpp
@@ -30,6 +30,7 @@ data::ParticleStorage::iterator createPlane( data::ParticleStorage& ps,
 {
    auto p0              = ps.create(true);
    p0->getPositionRef() = pos;
+   p0->getInteractionRadiusRef() = std::numeric_limits<real_t>::infinity();
    p0->getShapeIDRef()  = ss.create<data::HalfSpace>( normal );
    p0->getOwnerRef()    = walberla::mpi::MPIManager::instance()->rank();
    p0->getTypeRef()     = 0;
diff --git a/tests/mesa_pd/ContactDetection.cpp b/tests/mesa_pd/ContactDetection.cpp
index 56cb7fd81..08bf8eaa3 100644
--- a/tests/mesa_pd/ContactDetection.cpp
+++ b/tests/mesa_pd/ContactDetection.cpp
@@ -80,7 +80,7 @@ int main( const int particlesPerAxis = 2, const real_t radius = real_t(0.9) )
 
    math::seedRandomGenerator( static_cast<unsigned int>(1337 * walberla::mpi::MPIManager::instance()->worldRank()) );
 
-   const real_t spacing = 2.1_r * radius;
+   const real_t generationSpacing = 1_r;
 
    WALBERLA_LOG_INFO_ON_ROOT("*** BLOCKFOREST ***");
    const int centerParticles  = particlesPerAxis * particlesPerAxis * particlesPerAxis;
@@ -115,13 +115,14 @@ int main( const int particlesPerAxis = 2, const real_t radius = real_t(0.9) )
    auto ps = std::make_shared<data::ParticleStorage>(100);
    auto ss = std::make_shared<data::ShapeStorage>();
    ParticleAccessorWithShape accessor(ps, ss);
-   data::LinkedCells         lc(localDomain.getExtended(spacing), spacing );
+   const real_t linkedCellSize = 2.1_r * radius;
+   data::LinkedCells         lc(localDomain.getExtended(linkedCellSize), linkedCellSize );
 
    auto  smallSphere = ss->create<data::Sphere>( radius );
    ss->shapes[smallSphere]->updateMassAndInertia(real_t(2707));
    for (auto& iBlk : *forest)
    {
-      for (auto pt : grid_generator::SCGrid(iBlk.getAABB(), Vector3<real_t>(spacing, spacing, spacing) * real_c(0.5), spacing))
+      for (auto pt : grid_generator::SCGrid(iBlk.getAABB(), Vector3<real_t>(generationSpacing, generationSpacing, generationSpacing) * real_c(0.5), generationSpacing))
       {
          WALBERLA_CHECK(iBlk.getAABB().contains(pt));
 
-- 
GitLab