From 04940fe64b714bcfad9026d54ee75a2fbdc7fe7b Mon Sep 17 00:00:00 2001 From: "Claudius \"keldu\" Holeksa" Date: Wed, 17 Sep 2025 21:35:41 +0200 Subject: Streamlining and thoughts about changes in particle dynamics --- examples/poiseulle_particles_channel_2d.cpp | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) (limited to 'examples') diff --git a/examples/poiseulle_particles_channel_2d.cpp b/examples/poiseulle_particles_channel_2d.cpp index 9f7475d..4673a2a 100644 --- a/examples/poiseulle_particles_channel_2d.cpp +++ b/examples/poiseulle_particles_channel_2d.cpp @@ -54,10 +54,11 @@ using CellStruct = Struct< template using MacroStruct = Struct< - Member, "velocity">, + Member, "velocity">, Member, Member, Member, "force"> + //Member, "debug_acceleration"> >; template @@ -348,13 +349,16 @@ void couple_particles_to_lattice( // p_pos - p_pos_old // auto p_vel_rel = closest_u - p_vel; - saw::data> p_vel_rel; - p_vel_rel.at({{0u}}) = closest_u.at({0u}) - p_vel.at({{0u}}); - p_vel_rel.at({{1u}}) = closest_u.at({1u}) - p_vel.at({{1u}}); + saw::data> p_vel_rel = closest_u - p_vel; + // Add relative velocity to particle acceleration (Since our timestep is 1 we don't need to do anything else) + p_acc = p_acc + p_vel_rel; + + /* for(saw::data i{0u}; i.get() < 2u; ++i){ 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 @@ -366,10 +370,11 @@ void couple_particles_to_lattice( auto& n_cell = latt(n_p_cell_pos); auto& n_info = n_cell.template get<"info">()({0u}); - auto& n_macro_cell_particle = macros.at(n_p_cell_pos).template get<"particle">(); + auto& n_macro_cell = macros.at(n_p_cell_pos); + auto& n_macro_cell_particle = n_macro_cell.template get<"particle">(); // If neighbour is wall, then add force pushing the particle away - if(n_info.get() <= 1u or (n_macro_cell_particle.get() != i.get() and n_macro_cell_particle.get() > 0u) ) { + if(n_info.get() <= 1u or (n_macro_cell_particle.get() != (i.get()+1u) and n_macro_cell_particle.get() > 0u) ) { // add to p_acc saw::data dist_dot{ @@ -379,8 +384,16 @@ void couple_particles_to_lattice( if(dist_dot.get() > 0){ // TODO add if particle is close - p_acc.at({{0u}}) = p_acc.at({{0u}}) + saw::data{100 * dfi::directions[dfi::opposite_index[k.get()]][0u]}.template cast_to(); - p_acc.at({{1u}}) = p_acc.at({{1u}}) + saw::data{100 * dfi::directions[dfi::opposite_index[k.get()]][1u]}.template cast_to(); + //auto& n_debug_acc = n_macro_cell.template get<"debug_acceleration">(); + + saw::data> push_force; + { + push_force.at({{0u}}) = saw::data{1000 * dfi::directions[dfi::opposite_index[k.get()]][0u]}.template cast_to(); + push_force.at({{1u}}) = saw::data{1000 * dfi::directions[dfi::opposite_index[k.get()]][1u]}.template cast_to(); + } + + //n_debug_acc = n_debug_acc + push_force; + p_acc = p_acc + push_force; } } } -- cgit v1.2.3