ESPResSo
Extensible Simulation Package for Research on Soft Matter Systems
Loading...
Searching...
No Matches
fetch_particles.hpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2010-2026 The ESPResSo project
3
*
4
* This file is part of ESPResSo.
5
*
6
* ESPResSo is free software: you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation, either version 3 of the License, or
9
* (at your option) any later version.
10
*
11
* ESPResSo is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
20
#ifndef FETCH_PARTICLES_HPP
21
#define FETCH_PARTICLES_HPP
22
23
#include "
PidObservable.hpp
"
24
#include "
cell_system/CellStructure.hpp
"
25
#include "system/System.hpp"
26
27
#include <algorithm>
28
#include <iterator>
29
#include <set>
30
#include <vector>
31
32
/** Fetch a group of particles.
33
*
34
* @param ids particle identifiers
35
* @return array of particle copies, with positions in the current box.
36
*/
37
inline
auto
fetch_particles
(std::vector<int>
const
&ids) {
38
auto
const
&
system
=
System::get_system
();
39
auto
const
ids_set
= std::set<int>{ids.begin(), ids.end()};
40
auto
const
local_particles =
system
.cell_structure->local_particles();
41
Observables::ParticleReferenceRange
local_particle_refs
;
42
std::copy_if(local_particles.begin(), local_particles.end(),
43
std::back_inserter(
local_particle_refs
),
44
[&
ids_set
](
auto
const
&p) { return ids_set.contains(p.id()); });
45
return
local_particle_refs
;
46
}
47
#endif
CellStructure.hpp
stream
cudaStream_t stream[1]
CUDA streams for parallel computing on CPU and GPU.
Definition
common_cuda.cu:34
fetch_particles
auto fetch_particles(std::vector< int > const &ids)
Fetch a group of particles.
Definition
fetch_particles.hpp:37
Observables::ParticleReferenceRange
std::vector< std::reference_wrapper< Particle const > > ParticleReferenceRange
Definition
core/observables/PidObservable.hpp:47
System::get_system
System & get_system()
Definition
core/system/System.cpp:142
PidObservable.hpp
src
core
observables
fetch_particles.hpp
Generated on Thu Mar 5 2026 02:40:45 for ESPResSo by
1.9.8