From eec5df246866a4a1008b37fef0a96d4be5fa9c79 Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Mon, 11 Aug 2025 18:21:59 +0200 Subject: End of day --- examples/poiseulle_particles_channel_2d.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/examples/poiseulle_particles_channel_2d.cpp b/examples/poiseulle_particles_channel_2d.cpp index cfd4216..286b211 100644 --- a/examples/poiseulle_particles_channel_2d.cpp +++ b/examples/poiseulle_particles_channel_2d.cpp @@ -303,7 +303,7 @@ void add_particles(kel::lbm::particle_system& part_sys){ old_pos.at({{0u}}) = {32u}; old_pos.at({{1u}}) = {64u}; - p_size = {4.0}; + p_size = {1.0}; } for(uint64_t i = 0; i < 60; ++i){ @@ -358,20 +358,34 @@ void couple_particles_to_lattice( p_size * saw::data{std::cos(p_rot.get())} }}; + auto& p_mask_grid = p_mask.template get<"grid">(); + // Get grid so we don't pull all the time + 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; + // Particle to Fluid Coupling // Spread force to close fluid cells iterate_over([&](const saw::data>& index){ (void)index; - }, {{0u,0u}}, p_mask.template get<"grid">().dims()); + }, {{0u,0u}}, p_mask_grid_dims); // Fluid to Particle Coupling // Prepare force sum saw::data> forces; 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}}); + + saw::data> mask_shift; - mask_shift.at({{0u}}) = index.at({0u}).template cast_to() * x_dir.at({0u}) + index.at({1u}).template cast_to() * y_dir.at({0u}); - mask_shift.at({{1u}}) = index.at({0u}).template cast_to() * x_dir.at({1u}) + index.at({1u}).template cast_to() * y_dir.at({1u}); + mask_shift.at({{0u}}) = index_shift.at({{0u}}) * x_dir.at({0u}) + index_shift.at({{1u}}) * y_dir.at({0u}); + mask_shift.at({{1u}}) = index_shift.at({{0u}}) * x_dir.at({1u}) + index_shift.at({{1u}}) * y_dir.at({1u}); auto p_pos_lie = p_pos + mask_shift; @@ -407,7 +421,7 @@ void couple_particles_to_lattice( // Add forces to push away from other particles - }, {{0u,0u}}, p_mask.template get<"grid">().dims()); + }, {{0u,0u}}, p_mask_grid.dims()); p_acc.at({{0u}}).set(p_acc.at({{0u}}).get() / (p_mask.template get<"grid">().dims().at({{0u}}).get() *p_mask.template get<"grid">().dims().at({{1u}}).get() )); p_acc.at({{1u}}).set(p_acc.at({{1u}}).get() / (p_mask.template get<"grid">().dims().at({{0u}}).get() *p_mask.template get<"grid">().dims().at({{1u}}).get() )); @@ -427,7 +441,7 @@ void lbm_step( */ component coll{0.5384}; component bb; - component> inlet{1.01 * dfi::cs2}; + component> inlet{1.1 * dfi::cs2 * 2.0 / 3.0}; component> outlet{1.0 * dfi::cs2 * 2.0 / 3.0}; auto meta = latt.meta(); @@ -559,7 +573,7 @@ int main(int argc, char** argv){ saw::data,sch::D2Q9::D>> macros{dim}; - for(uint64_t i = 0u; i < 1024u; ++i){ + for(uint64_t i = 0u; i < 4096u*4u; ++i){ bool even_step = ((i % 2u) == 0u); { -- cgit v1.2.3