Spatial domain decomposition of one periodic frame across ranks. More...
Go to the source code of this file.
Classes | |
| struct | seams::domain::Share |
| One rank's share of a frame. More... | |
| struct | seams::domain::RingSummary |
| What the ring analyses read off a frame's primitive rings. More... | |
Namespaces | |
| namespace | seams |
| namespace | seams::domain |
Typedefs | |
| using | seams::domain::Cloud = molSys::PointCloud<molSys::Point<double>, double> |
Functions | |
| RingSummary | seams::domain::summarize (const std::vector< std::vector< int > > &ringList, int nAtoms, int maxDepth) |
| The summary of ringList over a frame of nAtoms atoms. | |
| std::uint64_t | seams::domain::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. | |
| Share | seams::domain::decompose (const Cloud &cloud, int rank, int nRanks, double halo) |
| Cloud | seams::domain::subCloud (const Cloud &cloud, const std::vector< int > &atoms) |
| The listed atoms of cloud, in that order, in the same box. | |
| std::vector< std::vector< int > > | seams::domain::rings (const Cloud &cloud, double cutoff, int maxDepth, int rank, int nRanks) |
Spatial domain decomposition of one periodic frame across ranks.
Cells of the frame are ordered along a Hilbert curve and cut into one contiguous run per rank of near equal atom count, as Gadget splits its Peano-Hilbert keys (Springel, MNRAS 364, 1105, 2005). A rank's halo is every cell within a given distance of the cells it owns. A kernel whose answer for an atom depends only on atoms within that distance can run on the owned and halo atoms alone and agree with the whole frame on the owned ones.
Definition in file domain.hpp.