diff --git a/apps/benchmarks/FluidParticleCoupling/ForcesOnSphereNearPlane.cpp b/apps/benchmarks/FluidParticleCoupling/ForcesOnSphereNearPlane.cpp index ee3c0f1431a0c73d137c1bd07943729bab44ba8b..1ef29cf39aa0157493dc4fd63a5a3a39c192c17e 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 e17092473fdbc3524286da109ec2b93552c71dd5..4d3b151b46ae8ef2556495dbf2a0d343b94ad570 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 9314699f4f67314fc0002c643e26c52d6971443d..784a10334a07e33021d984f336ed2617f4f5d3ce 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 3bb0c57eef6b1138797cef785afe47869abb3f0f..2415cf72dbce81af49ef574b82774623bdbb1513 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 3f2f613b252ece2fc72ad5c3df257e3c2f2f5223..899c27f674d8cdc9bd59914bc7e8c9a99700e287 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 9c963fa9dcbc0580af7ce7476d92c0884bbaec27..0b9e6ec68b214d220b93ba75c56be6c8e35af7ed 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 1ce306d76a368929dce44e0e52fb73e7753bab7f..13df3b0a875f416360629711ac01fb435ebd4f9c 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 9f93af67b37cfec23a3543948c70da55c388542b..78a8570bcc36678bf30654eb32ac829c3b6469fe 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 062e3f9c95f25baa5ddadd3b6511d9695cb5e457..a78736fff7996ee079d6bc2534a0e6bd2722347f 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 4c788c163066a68ce70f0448f458fbbb7877bfc7..a7a76190db22e8555f4154fc7bcf9a21bd441314 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 56cb7fd811320abbb6854e646db694e6b3b22c32..08bf8eaa304b95ecd3cd8ba1c0d47efcf773531b 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));