diff options
author | Claudius "keldu" Holeksa <mail@keldu.de> | 2025-08-11 18:21:59 +0200 |
---|---|---|
committer | Claudius "keldu" Holeksa <mail@keldu.de> | 2025-08-11 18:21:59 +0200 |
commit | eec5df246866a4a1008b37fef0a96d4be5fa9c79 (patch) | |
tree | 9442b9e89d66277816bca007962a0d63a8b9e15d | |
parent | 939d110fdfc1ad5b075756dcd537b3635239260e (diff) |
End of day
-rw-r--r-- | examples/poiseulle_particles_channel_2d.cpp | 28 |
1 files 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<kel::lbm::sch::T,2u>& 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<sch::T>{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<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; + // Particle to Fluid Coupling // Spread force to close fluid cells iterate_over([&](const saw::data<sch::FixedArray<sch::UInt64,2u>>& 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<sch::FixedArray<sch::T,2u>> forces; 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}}); + + saw::data<sch::Vector<sch::T,2u>> mask_shift; - mask_shift.at({{0u}}) = index.at({0u}).template cast_to<sch::T>() * x_dir.at({0u}) + index.at({1u}).template cast_to<sch::T>() * y_dir.at({0u}); - mask_shift.at({{1u}}) = index.at({0u}).template cast_to<sch::T>() * x_dir.at({1u}) + index.at({1u}).template cast_to<sch::T>() * 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<sch::T, sch::D2Q9, cmpt::BGK> coll{0.5384}; component<sch::T, sch::D2Q9, cmpt::BounceBack> bb; - component<sch::T, sch::D2Q9, cmpt::PressureBoundaryRestrictedVelocityTo<true>> inlet{1.01 * dfi::cs2}; + component<sch::T, sch::D2Q9, cmpt::PressureBoundaryRestrictedVelocityTo<true>> inlet{1.1 * dfi::cs2 * 2.0 / 3.0}; component<sch::T, sch::D2Q9, cmpt::PressureBoundaryRestrictedVelocityTo<false>> 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::Array<sch::MacroStruct<sch::T,sch::D2Q9::D>,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); { |