peclet.voro 1.0.0
Device-native moving-particle Voronoi dynamics
Loading...
Searching...
No Matches
Static Public Member Functions | Static Public Attributes | List of all members
peclet::voro::Voronoi Struct Reference

#include <plane_policy.hpp>

Static Public Member Functions

template<class Real >
static KOKKOS_INLINE_FUNCTION Real offsetFromRel (const Real r[3], Real wSelf, Real wNbr)
 
template<class Real >
static KOKKOS_INLINE_FUNCTION Real blockReachSq (Real rSqMax, Real wSelf, Real wMaxAll)
 
template<class Real >
static KOKKOS_INLINE_FUNCTION void planeFromNeighbour (const Real pSelf[3], const Real pNbr[3], Real wSelf, Real wNbr, Real L, Real pdir[3], Real &off)
 
template<class Real >
static KOKKOS_INLINE_FUNCTION void buildNormal (const Real pSelf[3], const Real pNbr[3], Real wSelf, Real wNbr, Real L, Real nOut[3])
 
template<class Real >
static KOKKOS_INLINE_FUNCTION void chain (const Real g[3], const Real r[3], Real rho, Real c, Real fSelf[3], Real fNbr[3], Real &fwSelf, Real &fwNbr)
 

Static Public Attributes

static constexpr bool kHasWeightDof = false
 Whether cells carry a per-seed weight DOF (Laguerre). Voronoi cells do not.
 

Detailed Description

Voronoi plane policy: n_ij = ½(p_j − p_i). The Jacobians are constant (∓½ I), so the chain is a pure sign/scale split of the geometry gradient between the cell's own seed and the neighbour seed. No weight degree of freedom.

Member Function Documentation

◆ blockReachSq()

template<class Real >
static KOKKOS_INLINE_FUNCTION Real peclet::voro::Voronoi::blockReachSq ( Real  rSqMax,
Real  wSelf,
Real  wMaxAll 
)
inlinestatic

Squared reachability radius for the sorted-worklist early-out: no candidate at min-image dist² ≥ blockReachSq can cut a cell whose farthest dual vertex is at rSqMax = maxVertexRsq. A plane cuts iff some vertex v has r·v > off; Cauchy–Schwarz gives r·v ≤ |r|·√rSqMax, and the Voronoi off = ½|r|², so a cut needs |r| < 2√rSqMax ⇒ |r|² < 4·rSqMax. Weights are absent, so the max-weight span is unused.

◆ buildNormal()

template<class Real >
static KOKKOS_INLINE_FUNCTION void peclet::voro::Voronoi::buildNormal ( const Real  pSelf[3],
const Real  pNbr[3],
Real  wSelf,
Real  wNbr,
Real  L,
Real  nOut[3] 
)
inlinestatic

Foot-point normal of the bisector to a neighbour at pNbr (periodic min-image, box length L). n = (off/|pdir|²) pdir = ½ r. Weights are ignored.

◆ chain()

template<class Real >
static KOKKOS_INLINE_FUNCTION void peclet::voro::Voronoi::chain ( const Real  g[3],
const Real  r[3],
Real  rho,
Real  c,
Real  fSelf[3],
Real  fNbr[3],
Real &  fwSelf,
Real &  fwNbr 
)
inlinestatic

Chain one plane's geometry gradient g = dGeom/dn_k to the seed DOFs. The Voronoi Jacobians are constant (∓½ I) so r/rho/c are unused; the weight outputs are zero (no weight DOF): dGeom/dp_self += −½ g , dGeom/dp_nbr += +½ g.

◆ offsetFromRel()

template<class Real >
static KOKKOS_INLINE_FUNCTION Real peclet::voro::Voronoi::offsetFromRel ( const Real  r[3],
Real  wSelf,
Real  wNbr 
)
inlinestatic

Half-space offset for the forward clip {x : r·x ≤ off} given the min-image relative vector r = p_j − p_i (pdir == r for both Voronoi and Power). Voronoi: off = ½|r|² (weights ignored).

◆ planeFromNeighbour()

template<class Real >
static KOKKOS_INLINE_FUNCTION void peclet::voro::Voronoi::planeFromNeighbour ( const Real  pSelf[3],
const Real  pNbr[3],
Real  wSelf,
Real  wNbr,
Real  L,
Real  pdir[3],
Real &  off 
)
inlinestatic

FORWARD clip: half-space {x : pdir·x ≤ off} cutting off the neighbour at pNbr. For a Voronoi bisector pdir = r (min-image p_j − p_i), off = ½|r|². Weights are ignored.

Member Data Documentation

◆ kHasWeightDof

constexpr bool peclet::voro::Voronoi::kHasWeightDof = false
staticconstexpr

Whether cells carry a per-seed weight DOF (Laguerre). Voronoi cells do not.


The documentation for this struct was generated from the following file: