summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2025-08-30 11:25:09 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2025-08-30 11:25:09 +0200
commit1fbfad0b44b5a3689d54d2b43940e94388b90803 (patch)
tree480d66bca3a117e520aced26c4e3ebc7f9bc1ff9 /examples
parentf17796404c1b0c4817e7232ba16dc667df9d7f68 (diff)
Adding dangling changes
Diffstat (limited to 'examples')
-rw-r--r--examples/poiseulle_particles_channel_2d.cpp40
1 files changed, 29 insertions, 11 deletions
diff --git a/examples/poiseulle_particles_channel_2d.cpp b/examples/poiseulle_particles_channel_2d.cpp
index f6a5dd0..e2d7200 100644
--- a/examples/poiseulle_particles_channel_2d.cpp
+++ b/examples/poiseulle_particles_channel_2d.cpp
@@ -9,7 +9,6 @@
#include <cmath>
-
namespace kel {
namespace lbm {
namespace sch {
@@ -619,7 +618,7 @@ int main(int argc, char** argv){
uint64_t lbm_steps = 4096u * 4u;
for(uint64_t i = 0u; i < lbm_steps; ++i){
- print_progress_bar(i+1u,lbm_steps);
+ print_progress_bar(i,lbm_steps-1u);
bool even_step = ((i % 2u) == 0u);
{
@@ -642,20 +641,39 @@ int main(int argc, char** argv){
auto& p_rb = p.template get<"rigid_body">();
auto& p_pos = p_rb.template get<"position">();
+ auto& p_mask = p_rb.template get<"mask">();
+ auto& p_mask_grid = p_mask.template get<"grid">();
+ auto p_mask_grid_dims = p_mask_grid.dims();
+
+ saw::data<sch::Vector<sch::T,2u>> p_mask_grid_shift;
+ p_mask_grid_shift.at({{0u}}) = (p_mask_grid_dims.at({0u}).template cast_to<sch::T>() - 1.0) / 2.0;
+ p_mask_grid_shift.at({{1u}}) = (p_mask_grid_dims.at({1u}).template cast_to<sch::T>() - 1.0) / 2.0;
+ auto p_pos_lie = p_pos + mask_shift;
+
+ // Cast down to get lower corner.
+ // Before casting shift by 0.5 for closest pick
saw::data<sch::FixedArray<sch::UInt64,2u>> p_cell_pos {{
- static_cast<uint64_t>(p_pos.at({{0u}}).get()+0.5),
- static_cast<uint64_t>(p_pos.at({{1u}}).get()+0.5)
+ static_cast<uint64_t>(p_pos_lie.at({{0u}}).get()+0.5),
+ static_cast<uint64_t>(p_pos_lie.at({{1u}}).get()+0.5)
}};
- if(p_cell_pos.at({0u}) >= dim.at({0u}) ){
- p_cell_pos.at({0u}).set(dim.at({0u}).get() - 1u );
- }
- if(p_cell_pos.at({1u}) >= dim.at({1u}) ){
- p_cell_pos.at({1u}).set(dim.at({1u}).get() - 1u );
- }
+ // Iterate
+ iterate_over([&](const saw::data<sch::FixedArray<sch::UInt64,2u>>& index){
+
+ saw::data<sch::Vector<sch::T,2u>> index_shift;
+ index_shift.at({{0u}}) = index.at({0u}).template cast_to<sch::T>() - p_mask_grid_shift.at({{0u}});
+ index_shift.at({{1u}}) = index.at({0u}).template cast_to<sch::T>() - p_mask_grid_shift.at({{1u}});
+
+ if(p_cell_pos.at({0u}) >= dim.at({0u}) ){
+ p_cell_pos.at({0u}).set(dim.at({0u}).get() - 1u );
+ }
+ if(p_cell_pos.at({1u}) >= dim.at({1u}) ){
+ p_cell_pos.at({1u}).set(dim.at({1u}).get() - 1u );
+ }
- macros(p_cell_pos).template get<"particle">().set(i.get() + 1u);
+ macros(p_cell_pos).template get<"particle">().set(i.get() + 1u);
+ }, {{0u,0u}}, p_mask_grid_dims);
}
{