peclet.voro 1.0.0
Device-native moving-particle Voronoi dynamics
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj > Struct Template Reference

#include <tessellator.hpp>

Public Types

using MemSpace = peclet::core::MemSpace
 
using Cell = ConvexCell< Real, kMaxP, kMaxT, TrackAdj >
 
using PlanePolicy = std::conditional_t< Weighted, Power, Voronoi >
 

Public Member Functions

KOKKOS_INLINE_FUNCTION void relVec (int q, Real pix, Real piy, Real piz, Real pv[3]) const
 Minimal-image relative vector from the seed at (pix,piy,piz) to sorted seed q.
 
KOKKOS_INLINE_FUNCTION int gridCell (int rgx, int rgy, int rgz) const
 Linear/Morton index of the grid cell at raw (periodic-unwrapped) offset.
 
KOKKOS_INLINE_FUNCTION void homeCell (Real pix, Real piy, Real piz, int &cx, int &cy, int &cz) const
 Home grid cell index (cx,cy,cz) of seed (pix,piy,piz).
 
KOKKOS_INLINE_FUNCTION int subBase (Real pix, Real piy, Real piz) const
 Flat base offset into the worklist tables for the wlS^3 sub-region the seed lands in.
 
KOKKOS_INLINE_FUNCTION int worklistCell (int base, int g, int cx, int cy, int cz) const
 Decode worklist entry g (relative to base) into a grid-cell index.
 
KOKKOS_INLINE_FUNCTION void finishCell (Cell &c, int i, Real pix, Real piy, Real piz, Real covSq, Real wSelf=Real(0)) const
 
KOKKOS_INLINE_FUNCTION void buildCell (int pi) const
 

Public Attributes

Kokkos::View< int *, MemSpacebinned
 
Kokkos::View< Real *, MemSpaceposSorted
 
Kokkos::View< Real *, MemSpacewSorted
 
Kokkos::View< gid_t *, MemSpacegidSorted
 
Kokkos::View< int *, MemSpacecellStart
 
Kokkos::View< int *, MemSpacewlOff
 
Kokkos::View< Real *, MemSpacewlRmin
 
Kokkos::View< int *, MemSpacestatus
 
Kokkos::View< Real *, MemSpacecellVol
 
Kokkos::View< int *, MemSpacefacetCount
 
Kokkos::View< int *, MemSpacecellFacetBase
 
Kokkos::View< int *, MemSpaceoNbr
 
Kokkos::View< Real *, MemSpaceoArea
 
Kokkos::View< Real *, MemSpaceoDV
 
Kokkos::View< Real *, MemSpaceoConn
 
Kokkos::View< int *, MemSpacefacetCursor
 
Real icx
 
Real icy
 
Real icz
 
Real Lx
 
Real Ly
 
Real Lz
 
Real minCsz
 
Real wMaxAll
 
int dimx
 
int dimy
 
int dimz
 
int sw
 
int nOff
 
int wlS
 
bool useMorton
 
bool haveGid
 
bool withForceGeom
 
size_t facetCap
 
Sdf sdf
 
Kokkos::View< int *, MemSpaceoNp
 
Kokkos::View< int *, MemSpaceoNt
 
Kokkos::View< int *, MemSpaceoTopoPnbr
 
Kokkos::View< unsigned *, MemSpaceoTri
 
Kokkos::View< unsigned char *, MemSpaceoPoke4
 
Kokkos::View< int *, MemSpaceoCand
 
Kokkos::View< int *, MemSpaceoCandCnt
 
bool emitTopo
 
bool emitCand
 
int candCap
 

Static Public Attributes

static constexpr int kMaxP = 64
 
static constexpr int kMaxT = 112
 
static constexpr int MAXF_TMP = 50
 

Detailed Description

template<class Real, bool Weighted, class Sdf, bool TrackAdj = false>
struct peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >

Per-cell build on the compact ConvexCell (dual-triangle) representation — one thread per cell (RangePolicy; the cell lives in the per-thread register/local frame). Holds the grid-sorted inputs, the published outputs, and the grid scalars; buildCell clips the worklist neighbours on the fly and emits the per-facet CSR (neighbour id + area vector + dV + connector) via ConvexCell::facetGeometry — the same quantities the retired half-edge ScratchCell published, now from the leaner cell whose geometry is a cheap separate pass (so re-eval over a fixed topology is possible: ConvexCell::reevalGeometry).

Member Typedef Documentation

◆ Cell

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
using peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::Cell = ConvexCell<Real, kMaxP, kMaxT, TrackAdj>

◆ MemSpace

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
using peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::MemSpace = peclet::core::MemSpace

◆ PlanePolicy

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
using peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::PlanePolicy = std::conditional_t<Weighted, Power, Voronoi>

Member Function Documentation

◆ buildCell()

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
KOKKOS_INLINE_FUNCTION void peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::buildCell ( int  pi) const
inline

Build the cell owning grid-sorted slot pi, writing the published outputs at the original seed index binned(pi). Worklist gather, ConvexCell clip on the fly (no candidate buffer).

◆ finishCell()

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
KOKKOS_INLINE_FUNCTION void peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::finishCell ( Cell c,
int  i,
Real  pix,
Real  piy,
Real  piz,
Real  covSq,
Real  wSelf = Real(0) 
) const
inline

Finish a built cell: completeness flag (judged on the un-clipped cell), optional SDF boundary clip, status/volume, and the per-facet CSR write (one atomic reservation into the over-buffer). covSq is the attained coverage^2; covSq > 4*rSqMax => complete.

◆ gridCell()

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
KOKKOS_INLINE_FUNCTION int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::gridCell ( int  rgx,
int  rgy,
int  rgz 
) const
inline

Linear/Morton index of the grid cell at raw (periodic-unwrapped) offset.

◆ homeCell()

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
KOKKOS_INLINE_FUNCTION void peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::homeCell ( Real  pix,
Real  piy,
Real  piz,
int &  cx,
int &  cy,
int &  cz 
) const
inline

Home grid cell index (cx,cy,cz) of seed (pix,piy,piz).

◆ relVec()

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
KOKKOS_INLINE_FUNCTION void peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::relVec ( int  q,
Real  pix,
Real  piy,
Real  piz,
Real  pv[3] 
) const
inline

Minimal-image relative vector from the seed at (pix,piy,piz) to sorted seed q.

◆ subBase()

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
KOKKOS_INLINE_FUNCTION int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::subBase ( Real  pix,
Real  piy,
Real  piz 
) const
inline

Flat base offset into the worklist tables for the wlS^3 sub-region the seed lands in.

◆ worklistCell()

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
KOKKOS_INLINE_FUNCTION int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::worklistCell ( int  base,
int  g,
int  cx,
int  cy,
int  cz 
) const
inline

Decode worklist entry g (relative to base) into a grid-cell index.

Member Data Documentation

◆ binned

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::binned

◆ candCap

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::candCap

◆ cellFacetBase

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::cellFacetBase

◆ cellStart

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::cellStart

◆ cellVol

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<Real*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::cellVol

◆ dimx

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::dimx

◆ dimy

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::dimy

◆ dimz

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::dimz

◆ emitCand

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
bool peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::emitCand

◆ emitTopo

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
bool peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::emitTopo

◆ facetCap

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
size_t peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::facetCap

◆ facetCount

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::facetCount

◆ facetCursor

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::facetCursor

◆ gidSorted

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<gid_t*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::gidSorted

◆ haveGid

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
bool peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::haveGid

◆ icx

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Real peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::icx

◆ icy

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Real peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::icy

◆ icz

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Real peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::icz

◆ kMaxP

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
constexpr int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::kMaxP = 64
staticconstexpr

◆ kMaxT

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
constexpr int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::kMaxT = 112
staticconstexpr

◆ Lx

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Real peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::Lx

◆ Ly

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Real peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::Ly

◆ Lz

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Real peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::Lz

◆ MAXF_TMP

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
constexpr int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::MAXF_TMP = 50
staticconstexpr

◆ minCsz

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Real peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::minCsz

◆ nOff

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::nOff

◆ oArea

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<Real*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::oArea

◆ oCand

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::oCand

◆ oCandCnt

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::oCandCnt

◆ oConn

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<Real*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::oConn

◆ oDV

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<Real*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::oDV

◆ oNbr

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::oNbr

◆ oNp

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::oNp

◆ oNt

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::oNt

◆ oPoke4

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<unsigned char*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::oPoke4

◆ oTopoPnbr

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::oTopoPnbr

◆ oTri

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<unsigned*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::oTri

◆ posSorted

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<Real*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::posSorted

◆ sdf

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Sdf peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::sdf

◆ status

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::status

◆ sw

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::sw

◆ useMorton

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
bool peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::useMorton

◆ withForceGeom

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
bool peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::withForceGeom

◆ wlOff

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<int*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::wlOff

◆ wlRmin

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<Real*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::wlRmin

◆ wlS

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
int peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::wlS

◆ wMaxAll

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Real peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::wMaxAll

◆ wSorted

template<class Real , bool Weighted, class Sdf , bool TrackAdj = false>
Kokkos::View<Real*, MemSpace> peclet::voro::CellBuilder< Real, Weighted, Sdf, TrackAdj >::wSorted

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