52 if (comm.rank() != 0) {
57 auto const &box_geo = *system.box_geo;
58 auto &cell_structure = *system.cell_structure;
60 std::vector<double> pairwise_distances;
61 for (
auto const &[pid1, pid2] : m_pairs) {
62 auto const *p1 = cell_structure.get_local_particle(pid1);
63 auto const *p2 = cell_structure.get_local_particle(pid2);
64 auto const dist = box_geo.get_mi_vector(p1->pos(), p2->pos()).norm();
65 pairwise_distances.emplace_back(dist);
67 return pairwise_distances;
70 std::vector<std::size_t>
shape()
const override {
return {m_pairs.size()}; }
73 std::vector<std::pair<int, int>> m_pairs;
75 std::vector<std::pair<int, int>>
76 get_unique_pairs(std::vector<int>
const &ids1, std::vector<int>
const &ids2) {
77 std::set<std::pair<int, int>> unique_pairs;
78 for (
int id1 : ids1) {
79 for (
int id2 : ids2) {
81 unique_pairs.emplace(std::minmax(id1, id2));
85 return {unique_pairs.begin(), unique_pairs.end()};
Particles creation and deletion.