diff --git a/apps/benchmarks/GranularGas/GranularGas.cfg b/apps/benchmarks/GranularGas/GranularGas.cfg index 69be192fad471553a2653924a48aeae46d17e9d0..647eca2ef2878fd650db07dd54cc71868623784d 100644 --- a/apps/benchmarks/GranularGas/GranularGas.cfg +++ b/apps/benchmarks/GranularGas/GranularGas.cfg @@ -8,6 +8,8 @@ GranularGas sorting linear; shift < 0.01, 0.01, 0.01 >; + checkSimulation 0; + LBAlgorithm Morton; baseWeight 1; diff --git a/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp b/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp index cb19bf5cda2ed5794ecbac7d62ad225bf1f38d25..59682aa03e99be3d8134638d25f48dc70ec01446 100644 --- a/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp +++ b/apps/benchmarks/GranularGas/MESA_PD_GranularGas.cpp @@ -74,13 +74,12 @@ namespace mesa_pd { class DEM { public: - DEM(const std::shared_ptr<domain::BlockForestDomain>& domain) + DEM(const std::shared_ptr<domain::BlockForestDomain>& domain, real_t dt, real_t mass) : domain_(domain) { - dem_.setStiffness(0, 0, real_t(0)); - dem_.setDampingN(0, 0, real_t(0)); dem_.setDampingT(0, 0, real_t(0)); dem_.setFriction(0, 0, real_t(0)); + dem_.setParametersFromCOR(0, 0, real_t(0.9), dt*real_t(20), mass * real_t(0.5)); } inline @@ -208,20 +207,20 @@ int main( int argc, char ** argv ) if (!forest->isPeriodic(0)) { - createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(+1,0,0)); - createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(-1,0,0)); + createPlane(*ps, *ss, confiningDomain.minCorner()+params.shift, Vec3(+1,0,0)); + createPlane(*ps, *ss, confiningDomain.maxCorner()+params.shift, Vec3(-1,0,0)); } if (!forest->isPeriodic(1)) { - createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(0,+1,0)); - createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(0,-1,0)); + createPlane(*ps, *ss, confiningDomain.minCorner()+params.shift, Vec3(0,+1,0)); + createPlane(*ps, *ss, confiningDomain.maxCorner()+params.shift, Vec3(0,-1,0)); } if (!forest->isPeriodic(2)) { - createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(0,0,+1)); - createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(0,0,-1)); + createPlane(*ps, *ss, confiningDomain.minCorner()+params.shift, Vec3(0,0,+1)); + createPlane(*ps, *ss, confiningDomain.maxCorner()+params.shift, Vec3(0,0,-1)); } WALBERLA_LOG_INFO_ON_ROOT("*** SETUP - END ***"); @@ -237,7 +236,7 @@ int main( int argc, char ** argv ) WALBERLA_LOG_INFO_ON_ROOT("*** SIMULATION - START ***"); // Init kernels kernel::ExplicitEulerWithShape explicitEulerWithShape( params.dt ); - DEM dem(domain); + DEM dem(domain, params.dt, ss->shapes[smallSphere]->getMass()); kernel::InsertParticleIntoLinkedCells ipilc; kernel::AssocToBlock assoc(forest); mpi::ReduceProperty RP; @@ -356,7 +355,8 @@ int main( int argc, char ** argv ) if (params.checkSimulation) { - check(*ps, *forest, params.spacing); + //if you want to activate checking you have to deactivate sorting + check(*ps, *forest, params.spacing, params.shift); } WALBERLA_LOG_INFO_ON_ROOT("*** SQL OUTPUT - START ***"); diff --git a/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp b/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp index 0ae1b0e672bafa3ca3ee99d32363e7ea226f1a61..d2c1452c48e8e9330835df77eb73e5a3fb6e9427 100644 --- a/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp +++ b/apps/benchmarks/GranularGas/MESA_PD_KernelBenchmark.cpp @@ -92,7 +92,6 @@ public: inline void operator()(const size_t idx1, const size_t idx2, T& ac) { - ++contactsChecked_; if (double_cast_(idx1, idx2, ac, acd_, ac)) { @@ -233,20 +232,20 @@ int main( int argc, char ** argv ) if (!forest->isPeriodic(0)) { - createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(+1,0,0)); - createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(-1,0,0)); + createPlane(*ps, *ss, confiningDomain.minCorner() + params.shift, Vec3(+1,0,0)); + createPlane(*ps, *ss, confiningDomain.maxCorner() + params.shift, Vec3(-1,0,0)); } if (!forest->isPeriodic(1)) { - createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(0,+1,0)); - createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(0,-1,0)); + createPlane(*ps, *ss, confiningDomain.minCorner() + params.shift, Vec3(0,+1,0)); + createPlane(*ps, *ss, confiningDomain.maxCorner() + params.shift, Vec3(0,-1,0)); } if (!forest->isPeriodic(2)) { - createPlane(*ps, *ss, confiningDomain.minCorner(), Vec3(0,0,+1)); - createPlane(*ps, *ss, confiningDomain.maxCorner(), Vec3(0,0,-1)); + createPlane(*ps, *ss, confiningDomain.minCorner() + params.shift, Vec3(0,0,+1)); + createPlane(*ps, *ss, confiningDomain.maxCorner() + params.shift, Vec3(0,0,-1)); } WALBERLA_LOG_INFO_ON_ROOT("*** SETUP - END ***"); @@ -266,10 +265,9 @@ int main( int argc, char ** argv ) kernel::AssocToBlock assoc(forest); kernel::InsertParticleIntoLinkedCells ipilc; kernel::SpringDashpot dem(1); - dem.setStiffness(0, 0, real_t(0)); - dem.setDampingN (0, 0, real_t(0)); dem.setDampingT (0, 0, real_t(0)); dem.setFriction (0, 0, real_t(0)); + dem.setParametersFromCOR(0, 0, real_t(0.9), params.dt*real_t(20), ss->shapes[smallSphere]->getMass() * real_t(0.5)); mpi::ReduceProperty RP; mpi::SyncNextNeighbors SNN; ContactDetection CD(domain); @@ -376,7 +374,8 @@ int main( int argc, char ** argv ) if (params.checkSimulation) { - check(*ps, *forest, params.spacing); + //if you want to activate checking you have to deactivate sorting + check(*ps, *forest, params.spacing, params.shift); } WALBERLA_LOG_INFO_ON_ROOT("*** SQL OUTPUT - START ***"); diff --git a/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp b/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp index 44375e3f5f82f3e6a4461e3fd9cc0b138dc208a6..dfff27199430cb1a2f715209da7692cf5aedbb0b 100644 --- a/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp +++ b/apps/benchmarks/GranularGas/MESA_PD_KernelLoadBalancing.cpp @@ -495,7 +495,7 @@ int main( int argc, char ** argv ) if (params.checkSimulation) { - check(*ps, *forest, params.spacing); + check(*ps, *forest, params.spacing, params.shift); } diff --git a/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp b/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp index 6048d5b7bf05e23a29d65f8a8799389cfed4d417..5c658a3018d4841039ce30848c4a92058f4f3c58 100644 --- a/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp +++ b/apps/benchmarks/GranularGas/MESA_PD_LoadBalancing.cpp @@ -483,7 +483,7 @@ int main( int argc, char ** argv ) if (params.checkSimulation) { - check(*ps, *forest, params.spacing); + check(*ps, *forest, params.spacing, params.shift); } WALBERLA_LOG_INFO_ON_ROOT("*** SQL OUTPUT - START ***"); diff --git a/apps/benchmarks/GranularGas/check.h b/apps/benchmarks/GranularGas/check.h index 31099e229f40645d87b369be18d91df3377dfc9c..73c457592ce0e78e976e8163e86dc346a16504bc 100644 --- a/apps/benchmarks/GranularGas/check.h +++ b/apps/benchmarks/GranularGas/check.h @@ -27,13 +27,13 @@ namespace walberla { namespace mesa_pd { -void check( data::ParticleStorage& ps, blockforest::BlockForest& forest, real_t spacing ) +void check( data::ParticleStorage& ps, blockforest::BlockForest& forest, real_t spacing, const Vec3& shift ) { WALBERLA_LOG_INFO_ON_ROOT("*** CHECKING RESULT - START ***"); auto pIt = ps.begin(); for (auto& iBlk : forest) { - for (auto it = grid_generator::SCIterator(iBlk.getAABB(), Vector3<real_t>(spacing, spacing, spacing) * real_c(0.5), spacing); + for (auto it = grid_generator::SCIterator(iBlk.getAABB(), Vector3<real_t>(spacing, spacing, spacing) * real_c(0.5) + shift, spacing); it != grid_generator::SCIterator(); ++it, ++pIt) {