47 int nAtoms,
int maxDepth);
50std::uint64_t
hilbertKey(std::uint32_t x, std::uint32_t y, std::uint32_t z,
64std::vector<std::vector<int>>
rings(
const Cloud &cloud,
double cutoff,
65 int maxDepth,
int rank,
int nRanks);
73std::vector<std::vector<int>> gatherRings(
const Cloud &cloud,
double cutoff,
74 int maxDepth, MPI_Comm comm);
84 MPI_Comm comm,
int root = 0);
RingSummary summarize(const std::vector< std::vector< int > > &ringList, int nAtoms, int maxDepth)
The summary of ringList over a frame of nAtoms atoms.
Cloud subCloud(const Cloud &cloud, const std::vector< int > &atoms)
The listed atoms of cloud, in that order, in the same box.
Share decompose(const Cloud &cloud, int rank, int nRanks, double halo)
molSys::PointCloud< molSys::Point< double >, double > Cloud
std::vector< std::vector< int > > rings(const Cloud &cloud, double cutoff, int maxDepth, int rank, int nRanks)
std::uint64_t hilbertKey(std::uint32_t x, std::uint32_t y, std::uint32_t z, int bits)
Position of cell (x, y, z) along the Hilbert curve over a 2^bits grid.
What the ring analyses read off a frame's primitive rings.
std::vector< long long > sizeCount
Rings of each size, indexed by member count, 0 through maxDepth.
std::vector< int > atomType
One rank's share of a frame.
std::vector< char > owned
nonzero where local[k] belongs to this rank
std::vector< int > local
owned and halo atoms by frame index, ascending