summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2025-08-11 18:21:59 +0200
committerClaudius "keldu" Holeksa <mail@keldu.de>2025-08-11 18:21:59 +0200
commiteec5df246866a4a1008b37fef0a96d4be5fa9c79 (patch)
tree9442b9e89d66277816bca007962a0d63a8b9e15d
parent939d110fdfc1ad5b075756dcd537b3635239260e (diff)
End of day
-rw-r--r--examples/poiseulle_particles_channel_2d.cpp28
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);
{