Skip to content

Commit

Permalink
Modify particle_line_point_contact_info struct
Browse files Browse the repository at this point in the history
  • Loading branch information
acdaigneault committed Aug 8, 2024
1 parent c8067c4 commit 6371927
Show file tree
Hide file tree
Showing 12 changed files with 70 additions and 61 deletions.
13 changes: 9 additions & 4 deletions include/dem/data_containers.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

#include <dem/boundary_cells_info_struct.h>
#include <dem/particle_particle_contact_info.h>
#include <dem/particle_point_line_contact_info_struct.h>
#include <dem/particle_point_line_contact_info.h>
#include <dem/particle_wall_contact_info.h>

#include <deal.II/base/tensor.h>
Expand Down Expand Up @@ -121,10 +121,15 @@ namespace DEM
Particles::ParticleIterator<dim>>
particle_index_iterator_map;

// <particle id, point-line info>
// <particle id, line info>
typedef std::unordered_map<types::particle_index,
particle_point_line_contact_info_struct<dim>>
particle_point_line_contact_info;
particle_line_contact_info<dim>>
particle_line_in_contact;

// <particle id, point info>
typedef std::unordered_map<types::particle_index,
particle_point_contact_info<dim>>
particle_point_in_contact;

// <particle id, (particle iterator, point, point)>
typedef std::unordered_map<
Expand Down
7 changes: 4 additions & 3 deletions include/dem/dem_contact_manager.h
Original file line number Diff line number Diff line change
Expand Up @@ -279,10 +279,11 @@ class DEMContactManager
particle_floating_wall_in_contact;
typename dem_data_structures<dim>::particle_wall_in_contact
particle_wall_in_contact;
typename dem_data_structures<dim>::particle_point_line_contact_info
particle_points_in_contact;
typename dem_data_structures<dim>::particle_point_line_contact_info
typename dem_data_structures<dim>::particle_line_in_contact
particle_lines_in_contact;
typename dem_data_structures<dim>::particle_point_in_contact
particle_points_in_contact;


// Container with all the contact information of adjacent
// local/ghost-local for pairwise contact force calculation
Expand Down
14 changes: 7 additions & 7 deletions include/dem/particle_point_line_contact_force.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

#include <dem/data_containers.h>
#include <dem/dem_solver_parameters.h>
#include <dem/particle_point_line_contact_info_struct.h>
#include <dem/particle_point_line_contact_info.h>

#include <iostream>
#include <vector>
Expand Down Expand Up @@ -53,10 +53,10 @@ class ParticlePointLineForce
*/
void
calculate_particle_point_contact_force(
const typename DEM::dem_data_structures<dim>::
particle_point_line_contact_info *particle_point_line_pairs_in_contact,
const typename DEM::dem_data_structures<dim>::particle_point_in_contact
*particle_point_pairs_in_contact,
const Parameters::Lagrangian::LagrangianPhysicalProperties
&lagrangian_physical_properties,
&physical_properties,
std::vector<Tensor<1, 3>> &force);

/**
Expand All @@ -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<dim>::particle_line_in_contact
*particle_line_pairs_in_contact,
const Parameters::Lagrangian::LagrangianPhysicalProperties
&lagrangian_physical_properties,
&physical_properties,
std::vector<Tensor<1, 3>> &force);

private:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,20 +21,29 @@
#include <deal.II/base/tensor.h>

#include <deal.II/particles/particle_iterator.h>
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 <int dim>
struct particle_point_line_contact_info_struct
struct particle_line_contact_info
{
Particles::ParticleIterator<dim> particle;
Point<3> point_one;
Point<3> point_two;
};

/**
* @brief Handle information related to the calculation of the particle-point
* contact forces.
*/
template <int dim>
struct particle_point_contact_info
{
Particles::ParticleIterator<dim> particle;
Point<3> point;
};

#endif
6 changes: 3 additions & 3 deletions include/dem/particle_point_line_fine_search.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
#include <core/dem_properties.h>

#include <dem/data_containers.h>
#include <dem/particle_point_line_contact_info_struct.h>
#include <dem/particle_point_line_contact_info.h>

#include <deal.II/particles/particle_handler.h>

Expand Down Expand Up @@ -48,7 +48,7 @@ particle_point_fine_search(
const typename DEM::dem_data_structures<dim>::particle_point_candidates
&particle_point_contact_candidates,
const double neighborhood_threshold,
typename DEM::dem_data_structures<dim>::particle_point_line_contact_info
typename DEM::dem_data_structures<dim>::particle_point_in_contact
&particle_point_pairs_in_contact);

/**
Expand All @@ -70,7 +70,7 @@ particle_line_fine_search(
const typename DEM::dem_data_structures<dim>::particle_line_candidates
&particle_line_contact_candidates,
const double neighborhood_threshold,
typename DEM::dem_data_structures<dim>::particle_point_line_contact_info
typename DEM::dem_data_structures<dim>::particle_line_in_contact
&particle_line_pairs_in_contact);

/**
Expand Down
2 changes: 1 addition & 1 deletion include/dem/update_local_particle_containers.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@

#include <dem/contact_type.h>
#include <dem/data_containers.h>
#include <dem/particle_point_line_contact_info_struct.h>
#include <dem/particle_point_line_contact_info.h>

#include <deal.II/particles/particle_handler.h>

Expand Down
2 changes: 1 addition & 1 deletion source/dem/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions source/dem/dem_contact_manager.cc
Original file line number Diff line number Diff line change
Expand Up @@ -211,13 +211,13 @@ DEMContactManager<dim>::update_local_particles_in_cells(
// Update contact containers for particle-line pairs in contact
update_contact_container_iterators<
dim,
typename dem_data_structures<dim>::particle_point_line_contact_info,
ContactType::particle_point>(particle_lines_in_contact, particle_container);
typename dem_data_structures<dim>::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<dim>::particle_point_line_contact_info,
typename dem_data_structures<dim>::particle_point_in_contact,
ContactType::particle_point>(particle_points_in_contact,
particle_container);
}
Expand Down
6 changes: 3 additions & 3 deletions source/dem/particle_point_line_contact_force.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ ParticlePointLineForce<dim>::ParticlePointLineForce()
template <int dim>
void
ParticlePointLineForce<dim>::calculate_particle_point_contact_force(
const typename DEM::dem_data_structures<dim>::particle_point_line_contact_info
const typename DEM::dem_data_structures<dim>::particle_point_in_contact
*particle_point_pairs_in_contact,
const Parameters::Lagrangian::LagrangianPhysicalProperties
&physical_properties,
Expand Down Expand Up @@ -42,7 +42,7 @@ ParticlePointLineForce<dim>::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);
Expand Down Expand Up @@ -138,7 +138,7 @@ ParticlePointLineForce<dim>::calculate_particle_point_contact_force(
template <int dim>
void
ParticlePointLineForce<dim>::calculate_particle_line_contact_force(
const typename DEM::dem_data_structures<dim>::particle_point_line_contact_info
const typename DEM::dem_data_structures<dim>::particle_line_in_contact
*particle_line_pairs_in_contact,
const Parameters::Lagrangian::LagrangianPhysicalProperties
&physical_properties,
Expand Down
38 changes: 16 additions & 22 deletions source/dem/particle_point_line_fine_search.cc
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ particle_point_fine_search(
const typename DEM::dem_data_structures<dim>::particle_point_candidates
&particle_point_contact_candidates,
const double neighborhood_threshold,
typename DEM::dem_data_structures<dim>::particle_point_line_contact_info
typename DEM::dem_data_structures<dim>::particle_point_in_contact
&particle_point_pairs_in_contact)
{
// Iterating over contact candidates from broad search. If a particle-point
Expand Down Expand Up @@ -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<dim> 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<dim>{particle, vertex_location_3d});
}
}
}
Expand All @@ -83,7 +79,7 @@ particle_line_fine_search(
const typename DEM::dem_data_structures<dim>::particle_line_candidates
&particle_line_contact_candidates,
const double neighborhood_threshold,
typename DEM::dem_data_structures<dim>::particle_point_line_contact_info
typename DEM::dem_data_structures<dim>::particle_line_in_contact
&particle_line_pairs_in_contact)
{
// Iterating over contact candidates from broad search. If a particle-line
Expand Down Expand Up @@ -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<dim> 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<dim>{particle,
vertex_one_location_3d,
vertex_two_location_3d});
}
}
}
Expand All @@ -174,29 +168,29 @@ 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
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
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
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);
16 changes: 8 additions & 8 deletions source/dem/update_local_particle_containers.cc
Original file line number Diff line number Diff line change
Expand Up @@ -367,19 +367,19 @@ 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);

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);
Expand All @@ -388,19 +388,19 @@ 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);

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);
2 changes: 1 addition & 1 deletion tests/dem/particle_point_contact.cc
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ test()
contact_candidates;

// Particle-point fine search
std::unordered_map<unsigned int, particle_point_line_contact_info_struct<dim>>
std::unordered_map<unsigned int, particle_point_line_contact_info<dim>>
contact_information;

ParticlePointLineForce<dim> force_object;
Expand Down

0 comments on commit 6371927

Please sign in to comment.