From 1fbfad0b44b5a3689d54d2b43940e94388b90803 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Sat, 30 Aug 2025 11:25:09 +0200 Subject: Adding dangling changes --- c++/converter.hpp | 16 +++++++++-- c++/particle/geometry/.circle.hpp.kate-swp | Bin 0 -> 62 bytes default.nix | 2 +- examples/poiseulle_particles_channel_2d.cpp | 40 ++++++++++++++++++++-------- tests/converter.cpp | 1 - 5 files changed, 44 insertions(+), 15 deletions(-) create mode 100644 c++/particle/geometry/.circle.hpp.kate-swp diff --git a/c++/converter.hpp b/c++/converter.hpp index 6e0a7a6..5c19c68 100644 --- a/c++/converter.hpp +++ b/c++/converter.hpp @@ -1,10 +1,18 @@ #pragma once #include "lbm_unit.hpp" +#include "descriptor.hpp" namespace kel { namespace lbm { +namespace sch { +using namespace saw::schema; +} + +/** + * Helps converting from SI types to LBM types + */ template class converter { private: @@ -59,9 +67,13 @@ public: } saw::data> kinematic_viscosity_si_to_lbm (const saw::data>& kin_si) const { - return kin_si / (meter_conv_ * meter_conv_) * second_conv_; + return (kin_si / (meter_conv_ * meter_conv_)) * second_conv_; } -}; + template + saw::data> kinematic_viscosity_si_to_tau(const saw::data>& kin_si) const { + return saw::data>{saw::data, sch::LbmKinematicViscosity>::Schema >{df_info::inv_cs2} * kinematic_viscosity_si_to_lbm(kin_si) + saw::data>{0.5}}; + } +}; } } diff --git a/c++/particle/geometry/.circle.hpp.kate-swp b/c++/particle/geometry/.circle.hpp.kate-swp new file mode 100644 index 0000000..b28db57 Binary files /dev/null and b/c++/particle/geometry/.circle.hpp.kate-swp differ diff --git a/default.nix b/default.nix index d92720d..883b70e 100644 --- a/default.nix +++ b/default.nix @@ -1,6 +1,6 @@ { pkgs ? import {} , stdenv ? pkgs.llvmPackages_19.stdenv -, clang-tools ? pkgs.clang-tools_16 +, clang-tools ? pkgs.clang-tools_19 }: let 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 - 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> p_mask_grid_shift; + p_mask_grid_shift.at({{0u}}) = (p_mask_grid_dims.at({0u}).template cast_to() - 1.0) / 2.0; + p_mask_grid_shift.at({{1u}}) = (p_mask_grid_dims.at({1u}).template cast_to() - 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> p_cell_pos {{ - static_cast(p_pos.at({{0u}}).get()+0.5), - static_cast(p_pos.at({{1u}}).get()+0.5) + static_cast(p_pos_lie.at({{0u}}).get()+0.5), + static_cast(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>& index){ + + saw::data> index_shift; + index_shift.at({{0u}}) = index.at({0u}).template cast_to() - p_mask_grid_shift.at({{0u}}); + index_shift.at({{1u}}) = index.at({0u}).template cast_to() - 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); } { diff --git a/tests/converter.cpp b/tests/converter.cpp index d7f3d67..4fc536f 100644 --- a/tests/converter.cpp +++ b/tests/converter.cpp @@ -21,7 +21,6 @@ SAW_TEST("Si Meter to Lbm Meter"){ saw::data> si_m{1.0}; auto lbm_m = converter.meter_si_to_lbm(si_m); - SAW_EXPECT(lbm_m.handle().get() == 10.0, "Correct si to lbm conversion"); } } -- cgit v1.2.3