From 5193cae1f11008404d9f1aab80efc5c66aa9bb8f Mon Sep 17 00:00:00 2001 From: Sebastian Eibl <sebastian.eibl@fau.de> Date: Mon, 27 Jan 2020 10:18:16 +0100 Subject: [PATCH] [BUGFIX] fixed wrong cell calculation in LinkedCells --- .../templates/data/LinkedCells.templ.h | 11 +++-------- src/mesa_pd/data/LinkedCells.h | 19 ++++--------------- 2 files changed, 7 insertions(+), 23 deletions(-) diff --git a/python/mesa_pd/templates/data/LinkedCells.templ.h b/python/mesa_pd/templates/data/LinkedCells.templ.h index 3cd762e5e..dc13cfdf4 100644 --- a/python/mesa_pd/templates/data/LinkedCells.templ.h +++ b/python/mesa_pd/templates/data/LinkedCells.templ.h @@ -150,9 +150,7 @@ LinkedCells::LinkedCells(const math::AABB& domain, const Vec3& cellDiameter) , numCellsPerDim_( static_cast<int>(std::ceil( domain.sizes()[0] / cellDiameter[0])), static_cast<int>(std::ceil( domain.sizes()[1] / cellDiameter[1])), static_cast<int>(std::ceil( domain.sizes()[2] / cellDiameter[2])) ) - , cellDiameter_( domain.sizes()[0] / real_c(numCellsPerDim_[0]), - domain.sizes()[1] / real_c(numCellsPerDim_[1]), - domain.sizes()[2] / real_c(numCellsPerDim_[2]) ) + , cellDiameter_( cellDiameter) , invCellDiameter_( real_t(1) / cellDiameter_[0], real_t(1) / cellDiameter_[1], real_t(1) / cellDiameter_[2] ) , cells_(uint_c(numCellsPerDim_[0]*numCellsPerDim_[1]*numCellsPerDim_[2])) { @@ -163,10 +161,7 @@ LinkedCells::LinkedCells(const math::AABB& domain, const Vec3& cellDiameter) //postcondition {%- for dim in range(3) %} - WALBERLA_CHECK_GREATER_EQUAL(cellDiameter_[{{dim}}], real_t(0)); - WALBERLA_CHECK_LESS_EQUAL(cellDiameter_[{{dim}}], cellDiameter[{{dim}}]); - - WALBERLA_CHECK_GREATER_EQUAL(numCellsPerDim_[{{dim}}], 0); + WALBERLA_CHECK_GREATER_EQUAL(real_c(numCellsPerDim_[{{dim}}]) * cellDiameter_[{{dim}}], domain.size({{dim}})); {%- endfor %} std::fill(cells_.begin(), cells_.end(), -1); @@ -290,4 +285,4 @@ inline void LinkedCells::forEachParticlePair{%- if half %}Half{%- endif %}(const } //namespace data } //namespace mesa_pd -} //namespace walberla +} //namespace walberla \ No newline at end of file diff --git a/src/mesa_pd/data/LinkedCells.h b/src/mesa_pd/data/LinkedCells.h index ead0d25d0..f3d4ea54d 100644 --- a/src/mesa_pd/data/LinkedCells.h +++ b/src/mesa_pd/data/LinkedCells.h @@ -154,9 +154,7 @@ LinkedCells::LinkedCells(const math::AABB& domain, const Vec3& cellDiameter) , numCellsPerDim_( static_cast<int>(std::ceil( domain.sizes()[0] / cellDiameter[0])), static_cast<int>(std::ceil( domain.sizes()[1] / cellDiameter[1])), static_cast<int>(std::ceil( domain.sizes()[2] / cellDiameter[2])) ) - , cellDiameter_( domain.sizes()[0] / real_c(numCellsPerDim_[0]), - domain.sizes()[1] / real_c(numCellsPerDim_[1]), - domain.sizes()[2] / real_c(numCellsPerDim_[2]) ) + , cellDiameter_( cellDiameter) , invCellDiameter_( real_t(1) / cellDiameter_[0], real_t(1) / cellDiameter_[1], real_t(1) / cellDiameter_[2] ) , cells_(uint_c(numCellsPerDim_[0]*numCellsPerDim_[1]*numCellsPerDim_[2])) { @@ -166,18 +164,9 @@ LinkedCells::LinkedCells(const math::AABB& domain, const Vec3& cellDiameter) WALBERLA_CHECK_GREATER_EQUAL(cellDiameter[2], real_t(0)); //postcondition - WALBERLA_CHECK_GREATER_EQUAL(cellDiameter_[0], real_t(0)); - WALBERLA_CHECK_LESS_EQUAL(cellDiameter_[0], cellDiameter[0]); - - WALBERLA_CHECK_GREATER_EQUAL(numCellsPerDim_[0], 0); - WALBERLA_CHECK_GREATER_EQUAL(cellDiameter_[1], real_t(0)); - WALBERLA_CHECK_LESS_EQUAL(cellDiameter_[1], cellDiameter[1]); - - WALBERLA_CHECK_GREATER_EQUAL(numCellsPerDim_[1], 0); - WALBERLA_CHECK_GREATER_EQUAL(cellDiameter_[2], real_t(0)); - WALBERLA_CHECK_LESS_EQUAL(cellDiameter_[2], cellDiameter[2]); - - WALBERLA_CHECK_GREATER_EQUAL(numCellsPerDim_[2], 0); + WALBERLA_CHECK_GREATER_EQUAL(real_c(numCellsPerDim_[0]) * cellDiameter_[0], domain.size(0)); + WALBERLA_CHECK_GREATER_EQUAL(real_c(numCellsPerDim_[1]) * cellDiameter_[1], domain.size(1)); + WALBERLA_CHECK_GREATER_EQUAL(real_c(numCellsPerDim_[2]) * cellDiameter_[2], domain.size(2)); std::fill(cells_.begin(), cells_.end(), -1); } -- GitLab