#include <plane_policy.hpp>
|
| 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 constexpr bool | kHasWeightDof = false |
| | Whether cells carry a per-seed weight DOF (Laguerre). Voronoi cells do not.
|
| |
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.
◆ 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.
◆ 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: