|
peclet.voro 1.0.0
Device-native moving-particle Voronoi dynamics
|
Viscous Navier-Stokes force over the published view (de-legacy Phase 2). More...
#include <Kokkos_Core.hpp>#include "peclet/core/common/view.hpp"#include "peclet/voro/tessellation_view.hpp"

Go to the source code of this file.
Namespaces | |
| namespace | peclet |
| namespace | peclet::voro |
| namespace | peclet::voro::physics |
Functions | |
| 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) |
| 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). | |
| 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) |
| 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) |
| 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). | |
Viscous Navier-Stokes force over the published view (de-legacy Phase 2).
Faithful port of NavierStokes::computeViscousForces, view-only (no engine). The per-cell velocity gradient is the same Green-Gauss reconstruction as the legacy computeGradients, but in the atomic-free GATHER form (each cell assembles its own gradient from its facets and the reciprocal-facet transpose, plan §2.5): grad_i = (1/V_i) Σ_{f in i} [ v_i ⊗ dV_i[f] − v_{nbr} ⊗ dV[recip(f)] ]. The Newtonian stress τ_i = μ_i (∇v + ∇vᵀ) + (μ_b − 2/3 μ) (∇·v) I is then gathered onto the force atomic-free, each cell writing only F_i: F_i += Σ_{f in i} (τ_{nbr} − τ_i) · dV_i[f].
Stress/gradient are stored 9-per-cell (9*i + 3*k + m). dV is facetConnect; the neighbour cell index is facetNeighbor (dense single-domain build). Boundary facets (recip < 0) are skipped — the periodic dynamics has none.