53 if (comm.rank() != 0) {
58 auto const &box_geo = *system.box_geo;
59 auto &cell_structure = *system.cell_structure;
61 std::vector<double> pairwise_distances;
62 for (
const auto &p : m_pairs) {
63 auto const *p1 = cell_structure.get_local_particle(p.first);
64 auto const *p2 = cell_structure.get_local_particle(p.second);
65 auto const dist = box_geo.get_mi_vector(p1->pos(), p2->pos()).norm();
66 pairwise_distances.emplace_back(dist);
68 return pairwise_distances;
71 std::vector<std::size_t>
shape()
const override {
return {m_pairs.size()}; }
74 std::vector<std::pair<int, int>> m_pairs;
76 std::vector<std::pair<int, int>>
77 get_unique_pairs(std::vector<int>
const &ids1, std::vector<int>
const &ids2) {
78 std::set<std::pair<int, int>> unique_pairs;
79 for (
int id1 : ids1) {
80 for (
int id2 : ids2) {
82 unique_pairs.emplace(std::minmax(id1, id2));
86 return {unique_pairs.begin(), unique_pairs.end()};
Particles creation and deletion.