peclet-dem
Performance-portable XPBD Discrete Element Method (Kokkos + ArborX)
Loading...
Searching...
No Matches
sim.hpp File Reference

dem — portable (Kokkos) Simulation facade: the dem flip's host-facing driver. More...

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <fstream>
#include <Kokkos_Core.hpp>
#include <memory>
#include <stdexcept>
#include <vector>
#include "broadphase_arborx.hpp"
#include "contact_preprocessing.hpp"
#include "integration.hpp"
#include "io.hpp"
#include "narrowphase.hpp"
#include "output_sdf.hpp"
#include "particles.hpp"
#include "peclet/core/common/view.hpp"
#include "periodicity.hpp"
#include "shapes_portable.hpp"
#include "solver_friction.hpp"
#include "solver_position.hpp"
#include "solver_velocity.hpp"

Go to the source code of this file.

Classes

class  peclet::dem::Simulation
 Host-facing facade with std::vector setters/getters (binding-agnostic). More...
 

Namespaces

namespace  peclet
 
namespace  peclet::dem
 

Functions

int peclet::dem::readInt (Kokkos::View< int, CpMem > v)
 
float peclet::dem::maxOwnedRadius (const Particles &P)
 Largest effective particle radius over the owned set (= max scale × globalScale, growth included).
 
int peclet::dem::findCollisionsGrow (Particles &P, float margin)
 Broad phase with an automatically-grown pair buffer.
 
void peclet::dem::demStep (Particles &P)
 One full XPBD DEM substep over the particle SoA (mirrors simulation.cpp Simulation::step()).
 
float peclet::dem::computeOverlapsKokkos (Particles &P)
 Max pair interpenetration on the committed state (faithful to CUDA Simulation::compute_overlaps): copy committed pos/quat into the predicted buffers, regenerate the periodic ghosts from that state, then run the same broad/narrow phase as demStep and return the recorded max overlap.
 

Detailed Description

dem — portable (Kokkos) Simulation facade: the dem flip's host-facing driver.

Owns a peclet::dem::Particles SoA and runs the full XPBD DEM step by composing the ported kernels in the simulation.cpp step() order. Exposes a small std::vector-based API (binding-agnostic) so a pybind module can drive it from Python (set/get arrays, step). Sphere shapes + analytic planes for now.

Definition in file sim.hpp.