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