peclet.voro 1.0.0
Device-native moving-particle Voronoi dynamics
Loading...
Searching...
No Matches
Classes | Functions
peclet::voro::physics Namespace Reference

Classes

class  ExplicitEuler
 

Functions

template<class Real >
void eulerPressureForce (const TessellationView< Real > &view, const Kokkos::View< int *, peclet::core::MemSpace > &recip, const Kokkos::View< int *, peclet::core::MemSpace > &cellOfFacet, Real pressEq, Real volAvg, const Kokkos::View< Real *, peclet::core::MemSpace > &force)
 
template<class Real >
Real interfaceEnergy (const TessellationView< Real > &view, const Kokkos::View< int *, peclet::core::MemSpace > &types, const Kokkos::View< Real *, peclet::core::MemSpace > &tension, int nTypes)
 Total interfacial energy Σ γ(t_i,t_j)·area over phase-boundary facets.
 
template<class Real >
void velocityGradient (const TessellationView< Real > &view, const Kokkos::View< int *, peclet::core::MemSpace > &recip, const Kokkos::View< int *, peclet::core::MemSpace > &cellOfFacet, const Kokkos::View< Real *, peclet::core::MemSpace > &vel, const Kokkos::View< Real *, peclet::core::MemSpace > &grad)
 
template<class Real >
void viscousStress (const Kokkos::View< Real *, peclet::core::MemSpace > &grad, const Kokkos::View< Real *, peclet::core::MemSpace > &visc, const Kokkos::View< Real *, peclet::core::MemSpace > &bulkVisc, const Kokkos::View< Real *, peclet::core::MemSpace > &stress)
 Newtonian stress per cell from the gradient (τ stored 9-per-cell, symmetric).
 
template<class Real >
void addViscousForce (const TessellationView< Real > &view, const Kokkos::View< Real *, peclet::core::MemSpace > &stress, const Kokkos::View< Real *, peclet::core::MemSpace > &force)
 
template<class Real >
void viscousForce (const TessellationView< Real > &view, const Kokkos::View< int *, peclet::core::MemSpace > &recip, const Kokkos::View< int *, peclet::core::MemSpace > &cellOfFacet, const Kokkos::View< Real *, peclet::core::MemSpace > &vel, const Kokkos::View< Real *, peclet::core::MemSpace > &visc, const Kokkos::View< Real *, peclet::core::MemSpace > &bulkVisc, const Kokkos::View< Real *, peclet::core::MemSpace > &force, const Kokkos::View< Real *, peclet::core::MemSpace > &grad, const Kokkos::View< Real *, peclet::core::MemSpace > &stress)
 
template<class Real >
void viscousForce (const TessellationView< Real > &view, const Kokkos::View< int *, peclet::core::MemSpace > &recip, const Kokkos::View< int *, peclet::core::MemSpace > &cellOfFacet, const Kokkos::View< Real *, peclet::core::MemSpace > &vel, const Kokkos::View< Real *, peclet::core::MemSpace > &visc, const Kokkos::View< Real *, peclet::core::MemSpace > &bulkVisc, const Kokkos::View< Real *, peclet::core::MemSpace > &force)
 Convenience overload that allocates the two 9*N scratch Views itself (tests / one-shot callers).
 

Function Documentation

◆ addViscousForce()

template<class Real >
void peclet::voro::physics::addViscousForce ( const TessellationView< Real > &  view,
const Kokkos::View< Real *, peclet::core::MemSpace > &  stress,
const Kokkos::View< Real *, peclet::core::MemSpace > &  force 
)

Atomic-free gather of the viscous force, ADDED to force (size 3*N): F_i += Σ_f (τ_nbr − τ_i) · dV_i[f].

◆ eulerPressureForce()

template<class Real >
void peclet::voro::physics::eulerPressureForce ( const TessellationView< Real > &  view,
const Kokkos::View< int *, peclet::core::MemSpace > &  recip,
const Kokkos::View< int *, peclet::core::MemSpace > &  cellOfFacet,
Real  pressEq,
Real  volAvg,
const Kokkos::View< Real *, peclet::core::MemSpace > &  force 
)

Atomic-free compressible-Euler pressure force over the published view.

Parameters
viewpublished tessellation (volumes, facet neighbours, dV in facetConnect).
recipreciprocal-facet transpose (buildReciprocalMap), size numFacets.
cellOfFacetowning cell index per packed facet, size numFacets.
pressEq,volAvgEOS constants (press_i = pressEq·volAvg/vol_i).
forceoutput, size 3·numCells (x-fastest 3*i+k). Overwritten.

◆ interfaceEnergy()

template<class Real >
Real peclet::voro::physics::interfaceEnergy ( const TessellationView< Real > &  view,
const Kokkos::View< int *, peclet::core::MemSpace > &  types,
const Kokkos::View< Real *, peclet::core::MemSpace > &  tension,
int  nTypes 
)

Total interfacial energy Σ γ(t_i,t_j)·area over phase-boundary facets.

◆ velocityGradient()

template<class Real >
void peclet::voro::physics::velocityGradient ( const TessellationView< Real > &  view,
const Kokkos::View< int *, peclet::core::MemSpace > &  recip,
const Kokkos::View< int *, peclet::core::MemSpace > &  cellOfFacet,
const Kokkos::View< Real *, peclet::core::MemSpace > &  vel,
const Kokkos::View< Real *, peclet::core::MemSpace > &  grad 
)

Per-cell velocity gradient (Green-Gauss, atomic-free). vel/grad are device Views sized 3*N and 9*N (row-major 3x3: 9*i + 3*k + m = d v_k / d x_m).

◆ viscousForce() [1/2]

template<class Real >
void peclet::voro::physics::viscousForce ( const TessellationView< Real > &  view,
const Kokkos::View< int *, peclet::core::MemSpace > &  recip,
const Kokkos::View< int *, peclet::core::MemSpace > &  cellOfFacet,
const Kokkos::View< Real *, peclet::core::MemSpace > &  vel,
const Kokkos::View< Real *, peclet::core::MemSpace > &  visc,
const Kokkos::View< Real *, peclet::core::MemSpace > &  bulkVisc,
const Kokkos::View< Real *, peclet::core::MemSpace > &  force 
)

Convenience overload that allocates the two 9*N scratch Views itself (tests / one-shot callers).

◆ viscousForce() [2/2]

template<class Real >
void peclet::voro::physics::viscousForce ( const TessellationView< Real > &  view,
const Kokkos::View< int *, peclet::core::MemSpace > &  recip,
const Kokkos::View< int *, peclet::core::MemSpace > &  cellOfFacet,
const Kokkos::View< Real *, peclet::core::MemSpace > &  vel,
const Kokkos::View< Real *, peclet::core::MemSpace > &  visc,
const Kokkos::View< Real *, peclet::core::MemSpace > &  bulkVisc,
const Kokkos::View< Real *, peclet::core::MemSpace > &  force,
const Kokkos::View< Real *, peclet::core::MemSpace > &  grad,
const Kokkos::View< Real *, peclet::core::MemSpace > &  stress 
)

Full viscous force: gradient -> stress -> gather (ADDED to force), into caller-provided grad/stress scratch (each ≥ 9*N). Lets a stepper hoist the scratch out of the per-step path (E4) instead of reallocating two 9*N Views every call.

◆ viscousStress()

template<class Real >
void peclet::voro::physics::viscousStress ( const Kokkos::View< Real *, peclet::core::MemSpace > &  grad,
const Kokkos::View< Real *, peclet::core::MemSpace > &  visc,
const Kokkos::View< Real *, peclet::core::MemSpace > &  bulkVisc,
const Kokkos::View< Real *, peclet::core::MemSpace > &  stress 
)

Newtonian stress per cell from the gradient (τ stored 9-per-cell, symmetric).