core 1.5.0
Shared MPI block decomposition, asynchronous ghost-layer exchange, SDF geometry, load balancing (header-only C++20)
Loading...
Searching...
No Matches
scene_query.hpp File Reference
#include <cstddef>
#include <stdexcept>
#include <vector>
#include "peclet/core/common/types.hpp"
#include "peclet/core/geom/scene.hpp"

Go to the source code of this file.

Classes

struct  peclet::core::geom::PeriodicBox< Real >
 Min-image box. on = false disables wrapping (all extents ignored). More...
 
struct  peclet::core::geom::SphereUnionView< Real >
 Non-owning union-of-spheres view. More...
 
struct  peclet::core::geom::CandidateGridView< Real >
 Non-owning candidate grid: uniform bins over [origin, origin+extent), CSR lists of primitive (or instance) indices, plus an ALWAYS list of never-pruned entries. More...
 
struct  peclet::core::geom::CandidateGrid< Real >
 Owning host-side candidate grid. More...
 
struct  peclet::core::geom::InstanceBound< Real >
 World bounding sphere of an instance + the PRUNING CERTIFICATE. More...
 
struct  peclet::core::geom::query_detail::NodeBound< Real >
 
struct  peclet::core::geom::InstanceMotionView< Real >
 Non-owning, POD, device-copyable rigid-body motion state for a scene's instances. More...
 
struct  peclet::core::geom::SceneQueryView< Real >
 The one POD every consumer captures: sphere-union fast path when the scene is a plain sphere union, general scene otherwise, candidate-accelerated in both modes, min-image periodic. More...
 
class  peclet::core::geom::SphereBedQuery
 Owning, host-side accelerated union-of-spheres query. More...
 

Namespaces

namespace  peclet
 
namespace  peclet::core
 
namespace  peclet::core::geom
 
namespace  peclet::core::geom::query_detail
 
namespace  peclet::core::geom::owner_detail
 

Functions

template<class Real >
PECLET_HD Vec3< Real > peclet::core::geom::minImage (Vec3< Real > d, const PeriodicBox< Real > &b)
 Min-image a displacement.
 
template<class Real >
PECLET_HD Real peclet::core::geom::sphereDist2 (const SphereUnionView< Real > &u, int i, Vec3< Real > p, const PeriodicBox< Real > &box)
 Squared min-image distance from p to sphere i — THE per-sphere expression, shared by every path (brute, subset, batched, host, device) so drift between them is impossible.
 
template<class Real >
PECLET_HD Real peclet::core::geom::evalSphereUnionSubset (const SphereUnionView< Real > &u, Vec3< Real > p, const PeriodicBox< Real > &box, const int *items, int count)
 Union SDF over an index subset (a candidate list).
 
template<class Real >
PECLET_HD Real peclet::core::geom::evalSphereUnion (const SphereUnionView< Real > &u, Vec3< Real > p, const PeriodicBox< Real > &box)
 Brute-force union SDF (all spheres) — the reference the candidate path must match bit-for-bit, and the fallback for out-of-coverage queries.
 
template<class Real >
PECLET_HD Real peclet::core::geom::evalSphereUnionGrid (const SphereUnionView< Real > &u, Vec3< Real > p, const PeriodicBox< Real > &box, const CandidateGridView< Real > &g)
 Union SDF through the candidate grid: bin lookup + short list, full-scan fallback when the bin is out of coverage or its list is empty.
 
template<class Real >
CandidateGrid< Real > peclet::core::geom::buildSphereCandidateGrid (const SphereUnionView< Real > &u, Vec3< Real > origin, Vec3< Real > extent, const PeriodicBox< Real > &box, int nbHint=0)
 Geometry-driven candidate build for a sphere union over [origin, origin+extent).
 
template<class Real >
PECLET_HD Real peclet::core::geom::evalInstancePeriodic (const SceneView< Real > &sc, int i, Vec3< Real > p, const PeriodicBox< Real > &box, Real boundR=Real(-1))
 Instance evaluation with MIN-IMAGE periodicity.
 
template<class Real >
PECLET_HD Real peclet::core::geom::evalScenePeriodic (const SceneView< Real > &sc, Vec3< Real > p, const PeriodicBox< Real > &box, const Real *boundR=nullptr)
 Union over every instance, min-image periodic.
 
template<class Real >
NodeBound< Real > peclet::core::geom::query_detail::nodeBound (const SceneView< Real > &sc, int node)
 
template<class Real >
InstanceBound< Real > peclet::core::geom::instanceBound (const SceneView< Real > &sc, int i)
 World bounding sphere + certificate of one instance (host-side; used by candidate builds).
 
template<class Real >
PECLET_HD Real peclet::core::geom::evalSceneGrid (const SceneView< Real > &sc, Vec3< Real > p, const PeriodicBox< Real > &box, const CandidateGridView< Real > &g, const Real *boundR=nullptr)
 Union over a candidate list + the always-list, min-image periodic.
 
template<class Real >
CandidateGrid< Real > peclet::core::geom::buildSceneCandidateGrid (const SceneView< Real > &sc, Vec3< Real > origin, Vec3< Real > extent, const PeriodicBox< Real > &box, Real binSizeHint=0)
 Candidate grid for a GENERAL scene: certified instances splat Lipschitz bounds evaluated at bin centers within their inflated bounding-sphere band (the generateSdfKokkos pattern); non-certified instances go on the always-list.
 
template<class Real >
PECLET_HD void peclet::core::geom::owner_detail::take (Real v, int i, Real &best, int &bestI)
 The single tie-break rule (lowest index wins an exact tie), shared by every owner path.
 
template<class Real >
PECLET_HD void peclet::core::geom::sphereUnionOwnerSubset (const SphereUnionView< Real > &u, Vec3< Real > p, const PeriodicBox< Real > &box, const int *items, int count, Real &best, int &bestI)
 Accumulate the argmin over an explicit index subset (a candidate list) into (best, bestI).
 
template<class Real >
PECLET_HD Real peclet::core::geom::sphereUnionEvalOwner (const SphereUnionView< Real > &u, Vec3< Real > p, const PeriodicBox< Real > &box, int &own)
 Brute-force value + owner (all spheres) — the reference the candidate path must match, and the out-of-coverage fallback.
 
template<class Real >
PECLET_HD Real peclet::core::geom::sphereUnionEvalOwnerGrid (const SphereUnionView< Real > &u, Vec3< Real > p, const PeriodicBox< Real > &box, const CandidateGridView< Real > &g, int &own)
 Value + owner through the candidate grid.
 
template<class Real >
PECLET_HD Real peclet::core::geom::sceneEvalOwnerPeriodic (const SceneView< Real > &sc, Vec3< Real > p, const PeriodicBox< Real > &box, int &own, const Real *boundR=nullptr)
 Value + owner over every instance of a general scene, min-image periodic.
 
template<class Real >
PECLET_HD Real peclet::core::geom::sceneEvalOwnerGrid (const SceneView< Real > &sc, Vec3< Real > p, const PeriodicBox< Real > &box, const CandidateGridView< Real > &g, int &own, const Real *boundR=nullptr)
 Value + owner through a general-scene candidate grid: always-list ∪ candidate list, with the same empty-list / out-of-coverage full-scan fallback evalSceneGrid uses (an owner that disagreed with the value would attribute a wall velocity to a body that is not the nearest).
 
template<class Real >
PECLET_HD int peclet::core::geom::sphereUnionOwner (const SphereUnionView< Real > &u, Vec3< Real > p, const PeriodicBox< Real > &box)
 Owner-only wrappers (the value is discarded by the compiler on every backend).
 
template<class Real >
PECLET_HD int peclet::core::geom::sphereUnionOwnerGrid (const SphereUnionView< Real > &u, Vec3< Real > p, const PeriodicBox< Real > &box, const CandidateGridView< Real > &g)
 
template<class Real >
PECLET_HD int peclet::core::geom::sceneOwnerPeriodic (const SceneView< Real > &sc, Vec3< Real > p, const PeriodicBox< Real > &box, const Real *boundR=nullptr)
 
template<class Real >
PECLET_HD int peclet::core::geom::sceneOwnerGrid (const SceneView< Real > &sc, Vec3< Real > p, const PeriodicBox< Real > &box, const CandidateGridView< Real > &g, const Real *boundR=nullptr)
 
template<class Real >
PECLET_HD Vec3< Real > peclet::core::geom::instanceVelocity (const InstanceMotionView< Real > &m, int i, Vec3< Real > p, const PeriodicBox< Real > &box)
 Velocity of the material point of instance i currently at world point p: v = lin_i + ang_i x (p - c_i)
 
template<class Real >
PECLET_HD Vec3< Real > peclet::core::geom::wallPoint (Vec3< Real > p, Real sdf, Vec3< Real > grad)
 Project a probe onto the zero level set along the local gradient: w = p - sdf(p) * n_hat.
 
template<class Real >
bool peclet::core::geom::motionIsStatic (const InstanceMotionView< Real > &m)
 True when no instance carries motion – the predicate a consumer uses to keep the static path bit-identical rather than "moving with zero velocity".
 
template<class Real >
bool peclet::core::geom::extractSphereUnion (const SceneView< Real > &sc, std::vector< Real > &cx, std::vector< Real > &cy, std::vector< Real > &cz, std::vector< Real > &r)
 Try to view a scene as a PLAIN sphere union: every instance a single kSphere leaf with a bitwise-identity node transform and a translation-only, scale-1, identity-rotation instance transform.