|
peclet-dem 1.1.0
Performance-portable XPBD Discrete Element Method (Kokkos + ArborX)
|
nanobind module dem — the Kokkos + ArborX XPBD granular-dynamics simulation.
More...
#include <nanobind/nanobind.h>#include <nanobind/ndarray.h>#include <nanobind/stl/array.h>#include <nanobind/stl/optional.h>#include <nanobind/stl/pair.h>#include <nanobind/stl/string.h>#include <nanobind/stl/tuple.h>#include <nanobind/stl/vector.h>#include <array>#include <cstdint>#include <Kokkos_Core.hpp>#include <optional>#include <stdexcept>#include <string>#include <tuple>#include <vector>#include "peclet/core/python/kokkos_teardown.hpp"#include "peclet/core/python/ndarray_interop.hpp"#include "sim.hpp"Go to the source code of this file.
Functions | |
| NB_MODULE (_dem, m) | |
nanobind module dem — the Kokkos + ArborX XPBD granular-dynamics simulation.
Exposes peclet::dem::Simulation (the portable Kokkos+ArborX pipeline) in two tiers (suite/docs/QUALITY_PLAN.md D2): the PUBLIC surface on Simulation is what a user needs to set up, run and read out a simulation; everything a developer uses to inspect, ablate or profile lives on Simulation.diagnostics (a Diagnostics view holding a reference to the simulation, no copies of state). Names follow suite/docs/NAMING.md: set_<thing> setters, stored scalars as properties, computed scalars as bare methods, array copies as get_*, set_dt + step(n), string modes, 3-tuples for every triple, one 3-D (nx, ny, nz) Fortran-order array for every grid.
Particle arrays cross the boundary through the shared peclet::core::python bridge (core): inputs read as flat C-order buffers, getters move the result into the NumPy array's backing store (no extra copy), and under a GPU backend the bridge's device path lets CuPy arrays flow in/out zero-copy.
Kokkos teardown follows the suite-wide pattern of peclet/core/python/kokkos_teardown.hpp: Kokkos is initialized at import; Simulation keeps its own live registry (sim.hpp, Simulation::releaseAll drops every live Simulation's Views) which is plugged in as a release hook, and every zero-copy array (get_*_view) is a Releasable capsule; the module's single atexit hook (also dem.finalize()) releases all of them and THEN calls Kokkos::finalize, so a Simulation or array still referenced at interpreter exit (script globals, a Jupyter/Quarto kernel) can no longer be destroyed after finalize – which is a Kokkos::abort (SIGABRT / exit 134, on OpenMP as on CUDA).
Definition in file dem_bindings.cpp.
| NB_MODULE | ( | _dem | , |
| m | |||
| ) |
Definition at line 134 of file dem_bindings.cpp.
References peclet::dem::Simulation::addAnalyticWall(), peclet::dem::Simulation::addPlane(), peclet::dem::ShapeRegistry::addSceneShape(), peclet::dem::ShapeRegistry::addSdfShape(), peclet::dem::Simulation::addSdfWall(), peclet::dem::ShapeRegistry::addShape(), peclet::dem::Simulation::capacity(), peclet::dem::Simulation::clearExternalForces(), peclet::dem::Simulation::clearExternalTorques(), peclet::dem::Simulation::computeOverlaps(), peclet::dem::Simulation::domainExtent(), peclet::dem::Simulation::domainOrigin(), peclet::dem::Simulation::domainPeriodic(), peclet::dem::Simulation::dt(), peclet::dem::Simulation::enablePeriodicity(), peclet::dem::Simulation::exportLammps(), peclet::dem::Simulation::exportSdf(), peclet::dem::Simulation::externalForcesView(), peclet::dem::Simulation::getAngularVelocities(), peclet::dem::Simulation::getGrowthRate(), peclet::dem::Simulation::getInvInertia(), peclet::dem::Simulation::getMasses(), peclet::dem::Simulation::getPositions(), peclet::dem::Simulation::getQuaternions(), peclet::dem::Simulation::getScales(), peclet::dem::Simulation::getSdfGrid(), peclet::dem::Simulation::getVelocities(), peclet::dem::Simulation::globalScale(), peclet::dem::Simulation::gravity(), peclet::dem::Simulation::growthFactor(), peclet::dem::Simulation::incrementalColoring(), peclet::dem::ShapeRegistry::initializeShape(), peclet::dem::Simulation::invMassView(), peclet::dem::Simulation::maxOverlap(), MPI_Init(), peclet::dem::Simulation::numAsleep(), peclet::dem::Simulation::numContacts(), peclet::dem::Simulation::numManifolds(), peclet::dem::Simulation::numParticles(), peclet::dem::ShapeRegistry::numShapes(), peclet::dem::Simulation::positionsView(), peclet::dem::Simulation::relax(), peclet::dem::Simulation::releaseAll(), peclet::dem::Simulation::restitutionModel(), peclet::dem::Simulation::setAngularVelocities(), peclet::dem::Simulation::setDomainCanonical(), peclet::dem::Simulation::setDomainMinMax(), peclet::dem::Simulation::setDt(), peclet::dem::Simulation::setExternalForces(), peclet::dem::Simulation::setExternalTorques(), peclet::dem::Simulation::setGlobalScale(), peclet::dem::Simulation::setGravity(), peclet::dem::Simulation::setGrowthParams(), peclet::dem::Simulation::setHertzMaterial(), peclet::dem::Simulation::setIncrementalColoring(), peclet::dem::Simulation::setInvInertia(), peclet::dem::Simulation::setInvMass(), peclet::dem::Simulation::setMaterialIds(), peclet::dem::Simulation::setMaterialParams(), peclet::dem::Simulation::setPairMaterial(), peclet::dem::Simulation::setPositions(), peclet::dem::Simulation::setQuaternions(), peclet::dem::Simulation::setRestitutionModel(), peclet::dem::Simulation::setScales(), peclet::dem::Simulation::setScalesUniform(), peclet::dem::ShapeRegistry::setSdfShape(), peclet::dem::ShapeRegistry::setShapeIds(), peclet::dem::Simulation::setShellDetection(), peclet::dem::Simulation::setSleeping(), peclet::dem::Simulation::setSolverIterations(), peclet::dem::Simulation::setStabilizationMode(), peclet::dem::Simulation::setThermostat(), peclet::dem::Simulation::setVelocities(), peclet::dem::Simulation::setVerletSkin(), peclet::dem::Simulation::setWallMaterialId(), peclet::dem::Simulation::setWallTransform(), peclet::dem::Simulation::setWallVelocity(), peclet::dem::Simulation::shellDetection(), peclet::dem::Simulation::sleeping(), peclet::dem::Simulation::stabilizationMode(), peclet::dem::Simulation::step(), peclet::dem::Simulation::stepHertz(), peclet::dem::Simulation::velocitiesView(), peclet::dem::Simulation::verletSkin(), peclet::dem::writeLammpsDump(), and peclet::dem::Simulation::writeVtp().