summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorClaudius "keldu" Holeksa <mail@keldu.de>2025-12-21 20:53:50 +0100
committerClaudius "keldu" Holeksa <mail@keldu.de>2025-12-21 20:53:50 +0100
commitb1d61c67c28a9ba4a1de834e401d97cfc9e84764 (patch)
treef84727c98f5bd41d6937d7936272120a2821e669 /examples
parent3077dce642f110a3e010d154a9687310ab71de43 (diff)
downloadlibs-lbm-b1d61c67c28a9ba4a1de834e401d97cfc9e84764.tar.gz
Reworking some structures. adding particle tests again
Diffstat (limited to 'examples')
-rw-r--r--examples/poiseulle_2d_gpu/poiseulle_2d_gpu.cpp36
-rw-r--r--examples/poiseulle_particles_2d_gpu/poiseulle_2d_gpu.cpp2
2 files changed, 32 insertions, 6 deletions
diff --git a/examples/poiseulle_2d_gpu/poiseulle_2d_gpu.cpp b/examples/poiseulle_2d_gpu/poiseulle_2d_gpu.cpp
index 89ad709..1d525ad 100644
--- a/examples/poiseulle_2d_gpu/poiseulle_2d_gpu.cpp
+++ b/examples/poiseulle_2d_gpu/poiseulle_2d_gpu.cpp
@@ -199,7 +199,7 @@ void step(
using namespace kel::lbm;
using dfi = df_info<sch::T,Desc>;
- constexpr saw::data<sch::T> frequency{1.0 / 0.5384};
+ constexpr saw::data<sch::T> frequency{1.0 / 0.8};
bool is_even = ((time_step % 2u) == 0u);
/**
@@ -209,8 +209,8 @@ void step(
component<sch::T, sch::D2Q9, cmpt::BGK> coll{0.5384};
component<sch::T, sch::D2Q9, cmpt::BounceBack> bb;
*/
- component<sch::T, Desc, cmpt::PressureBoundaryRestrictedVelocityTo<true>> inlet{1.1 * dfi::cs2};
- component<sch::T, Desc, cmpt::PressureBoundaryRestrictedVelocityTo<false>> outlet{1.0 * dfi::cs2};
+ component<sch::T, Desc, cmpt::PressureBoundaryRestrictedVelocityTo<true>> inlet{1.01 * dfi::cs2 * 2.0/3.0};
+ component<sch::T, Desc, cmpt::PressureBoundaryRestrictedVelocityTo<false>> outlet{1.0 * dfi::cs2 * 2.0/3.0};
// auto collision_ev =
@@ -257,10 +257,36 @@ void step(
}
case 3u: {
inlet.apply(cells, {{i,j}}, meta, time_step);
+ auto& dfs_old = is_even ? c.template get<"dfs_old">() : c.template get<"dfs">();
+
+ auto& macro_c = macro_cells[acc_id];
+
+ saw::data<sch::T>& rho = macro_c.template get<"pressure">();
+ saw::data<sch::FixedArray<sch::T,Desc::D>>& vel = macro_c.template get<"velocity">();
+
+ compute_rho_u<sch::T,Desc>(dfs_old,rho,vel);
+ auto eq = equilibrium<sch::T,Desc>(rho,vel);
+
+ for(uint64_t k = 0u; k < Desc::Q; ++k){
+ dfs_old({k}) = dfs_old({k}) + frequency * (eq.at({k}) - dfs_old({k}));
+ }
break;
}
case 4u: {
outlet.apply(cells, {{i,j}}, meta, time_step);
+ auto& dfs_old = is_even ? c.template get<"dfs_old">() : c.template get<"dfs">();
+
+ auto& macro_c = macro_cells[acc_id];
+
+ saw::data<sch::T>& rho = macro_c.template get<"pressure">();
+ saw::data<sch::FixedArray<sch::T,Desc::D>>& vel = macro_c.template get<"velocity">();
+
+ compute_rho_u<sch::T,Desc>(dfs_old,rho,vel);
+ auto eq = equilibrium<sch::T,Desc>(rho,vel);
+
+ for(uint64_t k = 0u; k < Desc::Q; ++k){
+ dfs_old({k}) = dfs_old({k}) + frequency * (eq.at({k}) - dfs_old({k}));
+ }
break;
}
default:
@@ -323,8 +349,8 @@ saw::error_or<void> kel_main(int argc, char** argv){
{{1.0}}
};
- uint64_t x_d = 256u;
- uint64_t y_d = 64u;
+ uint64_t x_d = 512u;
+ uint64_t y_d = 128u;
saw::data<lbm::sch::FixedArray<lbm::sch::UInt64,Desc::D>> meta{{x_d,y_d}};
diff --git a/examples/poiseulle_particles_2d_gpu/poiseulle_2d_gpu.cpp b/examples/poiseulle_particles_2d_gpu/poiseulle_2d_gpu.cpp
index 71854a8..1fcfd9c 100644
--- a/examples/poiseulle_particles_2d_gpu/poiseulle_2d_gpu.cpp
+++ b/examples/poiseulle_particles_2d_gpu/poiseulle_2d_gpu.cpp
@@ -203,7 +203,7 @@ void step(
using namespace kel::lbm;
using dfi = df_info<sch::T,Desc>;
- constexpr saw::data<sch::T> frequency{1.0 / 0.5384};
+ constexpr saw::data<sch::T> frequency{1.0 / 0.51};
bool is_even = ((time_step % 2u) == 0u);
/**