peclet.voro 1.0.4
Device-native moving-particle Voronoi dynamics
Loading...
Searching...
No Matches
distributed_moving.hpp File Reference

DistributedMovingTessellation — the library-level distributed dynamic-Voronoi driver. More...

#include <mpi.h>
#include <array>
#include <cmath>
#include <vector>
#include "../repair.hpp"
#include "voronoi_halo.hpp"
Include dependency graph for distributed_moving.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  peclet::voro::mpi::DistributedMovingTessellation< Real, MAXP, MAXT, Sdf >
 
struct  peclet::voro::mpi::DistributedMovingTessellation< Real, MAXP, MAXT, Sdf >::StepStats
 

Namespaces

namespace  peclet
 
namespace  peclet::voro
 Device-native Voronoi tessellation, geometry and finite-volume physics.
 
namespace  peclet::voro::mpi
 

Detailed Description

DistributedMovingTessellation — the library-level distributed dynamic-Voronoi driver.

Promotes the validated orchestration that previously lived only in tests/kokkos_mpi/bench_repair_mpi.cpp into a reusable header: VoronoiHalo (host ghost gather/refresh over core's decomposition + NBX halo) composed with the device MovingTessellation (two-pass repair) under the distributed Verlet-skin invariant.

Per step, with this rank's owned positions:

  • trip test: if ANY rank's max owned displacement since the last (re)gather exceeds skin/2, ALL ranks re-gather (halo.gather rebuilds the ghost topology via NBX) and cold- rebuild the tessellation. The trip is a LOCAL test but the gather and refresh paths are both collective, so it is reduced to a GLOBAL decision (MPI_Allreduce MAX) — without this the run deadlocks once ranks diverge on the trip (observed at np>=4).
  • fast path: refresh ghost positions on the established topology (halo.refreshPositions) and run the local device two-pass repair (MovingTessellation::step).

Owned cells are [0, nOwned) of the combined view; their geometry equals a cold rebuild of the same combined positions to the repair tolerance (gated by the repair_mpi ctests at np=1,2,4).