peclet.voro 1.0.0
Device-native moving-particle Voronoi dynamics
Loading...
Searching...
No Matches
Namespaces | Functions
viscous.hpp File Reference

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"
Include dependency graph for viscous.hpp:
This graph shows which files directly or indirectly include this file:

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).
 

Detailed Description

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.