Loading...
Searching...
No Matches
domain.hpp File Reference

Spatial domain decomposition of one periodic frame across ranks. More...

#include <cstdint>
#include <vector>
#include <mol_sys.hpp>

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)

Detailed Description

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.