summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2025-09-02 18:56:39 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2025-09-02 18:56:39 +0200
commitfc795e72041b8c4e3da61f67b40a8a2b987051f7 (patch)
tree99db94abeee82cf0099277102b1eb6ed7e920d3e
parentb11de5ff807c95572d769708522d804d6702c037 (diff)
Ammended particle size for now to see a large particle
-rw-r--r--examples/poiseulle_particles_channel_2d.cpp45
1 files changed, 30 insertions, 15 deletions
diff --git a/examples/poiseulle_particles_channel_2d.cpp b/examples/poiseulle_particles_channel_2d.cpp
index e2d7200..88a7615 100644
--- a/examples/poiseulle_particles_channel_2d.cpp
+++ b/examples/poiseulle_particles_channel_2d.cpp
@@ -311,7 +311,7 @@ void add_particles(kel::lbm::particle_system<kel::lbm::sch::T,2u>& part_sys){
auto& p_mask = part.template get<"mask">();
{
particle_circle_geometry<sch::T> geo;
- p_mask = geo.template generate_mask<sch::T>(2u,1u);
+ p_mask = geo.template generate_mask<sch::T>(40u,0u);
}
auto& rigid_body = part.template get<"rigid_body">();
auto& p_size = part.template get<"size">();
@@ -327,10 +327,10 @@ void add_particles(kel::lbm::particle_system<kel::lbm::sch::T,2u>& part_sys){
p_size = {1.0};
}
- for(uint64_t i = 0; i < 60; ++i){
- for(uint64_t j = 0; j < 4; ++j){
- pos.at({{0u}}) = {static_cast<typename saw::native_data_type<sch::T>::type>(32u + j * 2u)};
- pos.at({{1u}}) = {static_cast<typename saw::native_data_type<sch::T>::type>(4u + i * 2u)};
+ for(uint64_t i = 0; i < 1; ++i){
+ for(uint64_t j = 0; j < 1; ++j){
+ pos.at({{0u}}) = {static_cast<typename saw::native_data_type<sch::T>::type>(32u + j * 8u)};
+ pos.at({{1u}}) = {static_cast<typename saw::native_data_type<sch::T>::type>(64u + i * 8u)};
old_pos.at({{1u}}) = pos.at({{0u}});
auto eov = part_sys.add_particle(part);
@@ -401,6 +401,10 @@ void couple_particles_to_lattice(
iterate_over([&](const saw::data<sch::FixedArray<sch::UInt64,2u>>& index){
+ if(p_mask_grid.at(index).get() == 0){
+ return;
+ }
+
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}});
@@ -437,7 +441,6 @@ void couple_particles_to_lattice(
p_acc.at({{i}}) = p_acc.at({{i}}) + p_vel_rel.at({{i}});
}
-
// Add forces to put away from walls
/// 1. Check if neighbour is wall
for(saw::data<sch::UInt64> k{0u}; k.get() < sch::D2Q9::Q; ++k){
@@ -641,7 +644,8 @@ 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 = p.template get<"mask">();
auto& p_mask_grid = p_mask.template get<"grid">();
auto p_mask_grid_dims = p_mask_grid.dims();
@@ -649,21 +653,32 @@ int main(int argc, char** argv){
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_lie.at({{0u}}).get()+0.5),
- static_cast<uint64_t>(p_pos_lie.at({{1u}}).get()+0.5)
- }};
// Iterate
iterate_over([&](const saw::data<sch::FixedArray<sch::UInt64,2u>>& index){
+ if(p_mask_grid.at(index).get() == 0){
+ return;
+ }
+
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}});
+ index_shift.at({{1u}}) = index.at({1u}).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_shift.at({{0u}});
+ mask_shift.at({{1u}}) = index_shift.at({{1u}});
+
+ 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_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 );