From 63719275d821fbb4cf17107c68f324644165f234 Mon Sep 17 00:00:00 2001 From: Audrey Collard-Daigneault Date: Wed, 7 Aug 2024 18:38:08 -0400 Subject: [PATCH] Modify particle_line_point_contact_info struct --- include/dem/data_containers.h | 13 +++++-- include/dem/dem_contact_manager.h | 7 ++-- .../dem/particle_point_line_contact_force.h | 14 +++---- ...t.h => particle_point_line_contact_info.h} | 19 +++++++--- include/dem/particle_point_line_fine_search.h | 6 +-- .../dem/update_local_particle_containers.h | 2 +- source/dem/CMakeLists.txt | 2 +- source/dem/dem_contact_manager.cc | 6 +-- .../dem/particle_point_line_contact_force.cc | 6 +-- source/dem/particle_point_line_fine_search.cc | 38 ++++++++----------- .../dem/update_local_particle_containers.cc | 16 ++++---- tests/dem/particle_point_contact.cc | 2 +- 12 files changed, 70 insertions(+), 61 deletions(-) rename include/dem/{particle_point_line_contact_info_struct.h => particle_point_line_contact_info.h} (79%) diff --git a/include/dem/data_containers.h b/include/dem/data_containers.h index 274aa17539..88c6bc8b7d 100644 --- a/include/dem/data_containers.h +++ b/include/dem/data_containers.h @@ -19,7 +19,7 @@ #include #include -#include +#include #include #include @@ -121,10 +121,15 @@ namespace DEM Particles::ParticleIterator> particle_index_iterator_map; - // + // typedef std::unordered_map> - particle_point_line_contact_info; + particle_line_contact_info> + particle_line_in_contact; + + // + typedef std::unordered_map> + particle_point_in_contact; // typedef std::unordered_map< diff --git a/include/dem/dem_contact_manager.h b/include/dem/dem_contact_manager.h index e6f256c2a0..bb3f057767 100644 --- a/include/dem/dem_contact_manager.h +++ b/include/dem/dem_contact_manager.h @@ -279,10 +279,11 @@ class DEMContactManager particle_floating_wall_in_contact; typename dem_data_structures::particle_wall_in_contact particle_wall_in_contact; - typename dem_data_structures::particle_point_line_contact_info - particle_points_in_contact; - typename dem_data_structures::particle_point_line_contact_info + typename dem_data_structures::particle_line_in_contact particle_lines_in_contact; + typename dem_data_structures::particle_point_in_contact + particle_points_in_contact; + // Container with all the contact information of adjacent // local/ghost-local for pairwise contact force calculation diff --git a/include/dem/particle_point_line_contact_force.h b/include/dem/particle_point_line_contact_force.h index e2925ed09e..e2c522ffa5 100644 --- a/include/dem/particle_point_line_contact_force.h +++ b/include/dem/particle_point_line_contact_force.h @@ -21,7 +21,7 @@ #include #include -#include +#include #include #include @@ -53,10 +53,10 @@ class ParticlePointLineForce */ void calculate_particle_point_contact_force( - const typename DEM::dem_data_structures:: - particle_point_line_contact_info *particle_point_line_pairs_in_contact, + const typename DEM::dem_data_structures::particle_point_in_contact + *particle_point_pairs_in_contact, const Parameters::Lagrangian::LagrangianPhysicalProperties - &lagrangian_physical_properties, + &physical_properties, std::vector> &force); /** @@ -71,10 +71,10 @@ class ParticlePointLineForce */ void calculate_particle_line_contact_force( - const typename DEM::dem_data_structures< - dim>::particle_point_line_contact_info *particle_line_pairs_in_contact, + const typename DEM::dem_data_structures::particle_line_in_contact + *particle_line_pairs_in_contact, const Parameters::Lagrangian::LagrangianPhysicalProperties - &lagrangian_physical_properties, + &physical_properties, std::vector> &force); private: diff --git a/include/dem/particle_point_line_contact_info_struct.h b/include/dem/particle_point_line_contact_info.h similarity index 79% rename from include/dem/particle_point_line_contact_info_struct.h rename to include/dem/particle_point_line_contact_info.h index fd13e2e081..9971af53e2 100644 --- a/include/dem/particle_point_line_contact_info_struct.h +++ b/include/dem/particle_point_line_contact_info.h @@ -21,20 +21,29 @@ #include #include +using namespace dealii; /** - * @brief Handle information related to the calculation of the particle-point - * and particle-line contact forces. + * @brief Handle information related to the calculation of the particle-line contact forces. */ -using namespace dealii; - template -struct particle_point_line_contact_info_struct +struct particle_line_contact_info { Particles::ParticleIterator particle; Point<3> point_one; Point<3> point_two; }; +/** + * @brief Handle information related to the calculation of the particle-point + * contact forces. + */ +template +struct particle_point_contact_info +{ + Particles::ParticleIterator particle; + Point<3> point; +}; + #endif diff --git a/include/dem/particle_point_line_fine_search.h b/include/dem/particle_point_line_fine_search.h index 8f4da24820..0fc87137a9 100644 --- a/include/dem/particle_point_line_fine_search.h +++ b/include/dem/particle_point_line_fine_search.h @@ -20,7 +20,7 @@ #include #include -#include +#include #include @@ -48,7 +48,7 @@ particle_point_fine_search( const typename DEM::dem_data_structures::particle_point_candidates &particle_point_contact_candidates, const double neighborhood_threshold, - typename DEM::dem_data_structures::particle_point_line_contact_info + typename DEM::dem_data_structures::particle_point_in_contact &particle_point_pairs_in_contact); /** @@ -70,7 +70,7 @@ particle_line_fine_search( const typename DEM::dem_data_structures::particle_line_candidates &particle_line_contact_candidates, const double neighborhood_threshold, - typename DEM::dem_data_structures::particle_point_line_contact_info + typename DEM::dem_data_structures::particle_line_in_contact &particle_line_pairs_in_contact); /** diff --git a/include/dem/update_local_particle_containers.h b/include/dem/update_local_particle_containers.h index 9d9ec5d54f..b533e66aa3 100644 --- a/include/dem/update_local_particle_containers.h +++ b/include/dem/update_local_particle_containers.h @@ -19,7 +19,7 @@ #include #include -#include +#include #include diff --git a/source/dem/CMakeLists.txt b/source/dem/CMakeLists.txt index a83a37072b..2d770223f9 100644 --- a/source/dem/CMakeLists.txt +++ b/source/dem/CMakeLists.txt @@ -80,7 +80,7 @@ add_library(lethe-dem ../../include/dem/particle_particle_fine_search.h ../../include/dem/particle_point_line_broad_search.h ../../include/dem/particle_point_line_contact_force.h - ../../include/dem/particle_point_line_contact_info_struct.h + ../../include/dem/particle_point_line_contact_info.h ../../include/dem/particle_point_line_fine_search.h ../../include/dem/particle_wall_broad_search.h ../../include/dem/particle_wall_contact_force.h diff --git a/source/dem/dem_contact_manager.cc b/source/dem/dem_contact_manager.cc index ce7f543c11..bc14a9264d 100644 --- a/source/dem/dem_contact_manager.cc +++ b/source/dem/dem_contact_manager.cc @@ -211,13 +211,13 @@ DEMContactManager::update_local_particles_in_cells( // Update contact containers for particle-line pairs in contact update_contact_container_iterators< dim, - typename dem_data_structures::particle_point_line_contact_info, - ContactType::particle_point>(particle_lines_in_contact, particle_container); + typename dem_data_structures::particle_line_in_contact, + ContactType::particle_line>(particle_lines_in_contact, particle_container); // Update contact containers for particle-point pairs in contact update_contact_container_iterators< dim, - typename dem_data_structures::particle_point_line_contact_info, + typename dem_data_structures::particle_point_in_contact, ContactType::particle_point>(particle_points_in_contact, particle_container); } diff --git a/source/dem/particle_point_line_contact_force.cc b/source/dem/particle_point_line_contact_force.cc index 0c7d5e4173..18711eae4e 100644 --- a/source/dem/particle_point_line_contact_force.cc +++ b/source/dem/particle_point_line_contact_force.cc @@ -14,7 +14,7 @@ ParticlePointLineForce::ParticlePointLineForce() template void ParticlePointLineForce::calculate_particle_point_contact_force( - const typename DEM::dem_data_structures::particle_point_line_contact_info + const typename DEM::dem_data_structures::particle_point_in_contact *particle_point_pairs_in_contact, const Parameters::Lagrangian::LagrangianPhysicalProperties &physical_properties, @@ -42,7 +42,7 @@ ParticlePointLineForce::calculate_particle_point_contact_force( if constexpr (dim == 2) particle_location_3d = point_nd_to_3d(particle->get_location()); - const Point<3> point = contact_information->point_one; + const Point<3> point = contact_information->point; double normal_overlap = ((particle_properties[DEM::PropertiesIndex::dp]) / 2) - point.distance(particle_location_3d); @@ -138,7 +138,7 @@ ParticlePointLineForce::calculate_particle_point_contact_force( template void ParticlePointLineForce::calculate_particle_line_contact_force( - const typename DEM::dem_data_structures::particle_point_line_contact_info + const typename DEM::dem_data_structures::particle_line_in_contact *particle_line_pairs_in_contact, const Parameters::Lagrangian::LagrangianPhysicalProperties &physical_properties, diff --git a/source/dem/particle_point_line_fine_search.cc b/source/dem/particle_point_line_fine_search.cc index 237bfca929..397f629753 100644 --- a/source/dem/particle_point_line_fine_search.cc +++ b/source/dem/particle_point_line_fine_search.cc @@ -15,7 +15,7 @@ particle_point_fine_search( const typename DEM::dem_data_structures::particle_point_candidates &particle_point_contact_candidates, const double neighborhood_threshold, - typename DEM::dem_data_structures::particle_point_line_contact_info + typename DEM::dem_data_structures::particle_point_in_contact &particle_point_pairs_in_contact) { // Iterating over contact candidates from broad search. If a particle-point @@ -60,14 +60,10 @@ particle_point_fine_search( // particle-point pair are in contact if (square_distance > neighborhood_threshold) { - // Creating a sample from the particle_point_line_contact_info_struct - // and adding contact info to the sample - particle_point_line_contact_info_struct contact_info; - contact_info.particle = particle; - contact_info.point_one = vertex_location_3d; - - particle_point_pairs_in_contact.insert( - {particle->get_id(), contact_info}); + // Adding contact info to the sample + particle_point_pairs_in_contact.emplace( + particle->get_id(), + particle_point_contact_info{particle, vertex_location_3d}); } } } @@ -83,7 +79,7 @@ particle_line_fine_search( const typename DEM::dem_data_structures::particle_line_candidates &particle_line_contact_candidates, const double neighborhood_threshold, - typename DEM::dem_data_structures::particle_point_line_contact_info + typename DEM::dem_data_structures::particle_line_in_contact &particle_line_pairs_in_contact) { // Iterating over contact candidates from broad search. If a particle-line @@ -142,15 +138,13 @@ particle_line_fine_search( // contact if (square_distance > neighborhood_threshold) { - // Creating a sample from the particle_point_line_contact_info_struct + // Creating a sample from the particle_point_line_contact_info // and adding contact info to the sample - particle_point_line_contact_info_struct contact_info; - contact_info.particle = particle; - contact_info.point_one = vertex_one_location_3d; - contact_info.point_two = vertex_two_location_3d; - - particle_line_pairs_in_contact.insert( - {particle->get_id(), contact_info}); + particle_line_pairs_in_contact.emplace( + particle->get_id(), + particle_line_contact_info{particle, + vertex_one_location_3d, + vertex_two_location_3d}); } } } @@ -174,7 +168,7 @@ particle_point_fine_search<2>( const typename DEM::dem_data_structures<2>::particle_point_candidates &particle_point_contact_candidates, const double neighborhood_threshold, - typename DEM::dem_data_structures<2>::particle_point_line_contact_info + typename DEM::dem_data_structures<2>::particle_point_in_contact &particle_point_pairs_in_contact); template void @@ -182,7 +176,7 @@ particle_point_fine_search<3>( const typename DEM::dem_data_structures<3>::particle_point_candidates &particle_point_contact_candidates, const double neighborhood_threshold, - typename DEM::dem_data_structures<3>::particle_point_line_contact_info + typename DEM::dem_data_structures<3>::particle_point_in_contact &particle_point_pairs_in_contact); template void @@ -190,7 +184,7 @@ particle_line_fine_search<2>( const typename DEM::dem_data_structures<2>::particle_line_candidates &particle_line_contact_candidates, const double neighborhood_threshold, - typename DEM::dem_data_structures<2>::particle_point_line_contact_info + typename DEM::dem_data_structures<2>::particle_line_in_contact &particle_line_pairs_in_contact); template void @@ -198,5 +192,5 @@ particle_line_fine_search<3>( const typename DEM::dem_data_structures<3>::particle_line_candidates &particle_line_contact_candidates, const double neighborhood_threshold, - typename DEM::dem_data_structures<3>::particle_point_line_contact_info + typename DEM::dem_data_structures<3>::particle_line_in_contact &particle_line_pairs_in_contact); diff --git a/source/dem/update_local_particle_containers.cc b/source/dem/update_local_particle_containers.cc index 518b3f25a0..273504cd98 100644 --- a/source/dem/update_local_particle_containers.cc +++ b/source/dem/update_local_particle_containers.cc @@ -367,9 +367,9 @@ update_contact_container_iterators< template void update_contact_container_iterators< 2, - typename DEM::dem_data_structures<2>::particle_point_line_contact_info, + typename DEM::dem_data_structures<2>::particle_point_in_contact, ContactType::particle_point>( - typename DEM::dem_data_structures<2>::particle_point_line_contact_info + typename DEM::dem_data_structures<2>::particle_point_in_contact &pairs_in_contact, const typename DEM::dem_data_structures<2>::particle_index_iterator_map &particle_container); @@ -377,9 +377,9 @@ update_contact_container_iterators< template void update_contact_container_iterators< 3, - typename DEM::dem_data_structures<3>::particle_point_line_contact_info, + typename DEM::dem_data_structures<3>::particle_point_in_contact, ContactType::particle_point>( - typename DEM::dem_data_structures<3>::particle_point_line_contact_info + typename DEM::dem_data_structures<3>::particle_point_in_contact &pairs_in_contact, const typename DEM::dem_data_structures<3>::particle_index_iterator_map &particle_container); @@ -388,9 +388,9 @@ update_contact_container_iterators< template void update_contact_container_iterators< 2, - typename DEM::dem_data_structures<2>::particle_point_line_contact_info, + typename DEM::dem_data_structures<2>::particle_line_in_contact, ContactType::particle_line>( - typename DEM::dem_data_structures<2>::particle_point_line_contact_info + typename DEM::dem_data_structures<2>::particle_line_in_contact &pairs_in_contact, const typename DEM::dem_data_structures<2>::particle_index_iterator_map &particle_container); @@ -398,9 +398,9 @@ update_contact_container_iterators< template void update_contact_container_iterators< 3, - typename DEM::dem_data_structures<3>::particle_point_line_contact_info, + typename DEM::dem_data_structures<3>::particle_line_in_contact, ContactType::particle_line>( - typename DEM::dem_data_structures<3>::particle_point_line_contact_info + typename DEM::dem_data_structures<3>::particle_line_in_contact &pairs_in_contact, const typename DEM::dem_data_structures<3>::particle_index_iterator_map &particle_container); diff --git a/tests/dem/particle_point_contact.cc b/tests/dem/particle_point_contact.cc index a6bddc08ba..59ac773d56 100644 --- a/tests/dem/particle_point_contact.cc +++ b/tests/dem/particle_point_contact.cc @@ -128,7 +128,7 @@ test() contact_candidates; // Particle-point fine search - std::unordered_map> + std::unordered_map> contact_information; ParticlePointLineForce force_object;