This software package contains libraries and programs for the simulation of stacking and reclaiming in bulk material blending beds.
The following table lists all internal and external dependencies for the libraries and executables in this repository.
External dependencies are automatically downloaded by CMake via FetchContent.
| Target | Internal Dependencies | External Dependencies |
|---|---|---|
BlendingSimulatorCliexecutable |
BlendingSimulatorLibBlendingSimulatorFastLibBlendingSimulatorDetailedLibBlendingSimulatorLatticeLibBlendingVisualizer |
CLI11 v2.6.2 |
BlendingSimulatorLibheader-only library |
none | none |
BlendingSimulatorFastLibheader-only library |
BlendingSimulatorLib |
none |
BlendingSimulatorFastLib-testexecutable |
BlendingSimulatorFastLib |
Google Test v1.17.0 |
BlendingSimulatorDetailedLibheader-only library |
BlendingSimulatorLib |
Bullet Physics v2.87 |
BlendingSimulatorDetailedLib-testexecutable |
BlendingSimulatorDetailedLib |
Google Test v1.17.0 |
BlendingSimulatorLatticeLibheader-only library |
BlendingSimulatorLib |
none |
BlendingSimulatorLatticeLib-testexecutable |
BlendingSimulatorLatticeLib |
Google Test v1.17.0 |
BlendingVisualizerstatic library |
BlendingSimulatorLib |
OGRE v1.11.6 SDL2 v2.30.9 |
All simulators split the stacked material into particles of 1 / particlesPerCubicMeter m³, track where each particle comes to rest
and reclaim the stockpile with a reclaimer at reclaimAngle moving along x. The parameters are in
SimulationParameters.h.
| Simulator | CLI | Model | Specific parameters |
|---|---|---|---|
BlendingSimulatorFast |
default | Cubes in columns of a square height grid. A particle falls to a lower neighbor column (of 8, or of 4 with probability 1 - eightLikelihood, which gives pyramids instead of cones) until no neighbor is lower; cones reach about 44°. |
eightLikelihood, seed |
BlendingSimulatorLattice |
--lattice |
Spheres on a hexagonal close-packed lattice (port of the hexsim proof of concept). A particle rests once all three sites below it are filled. Piles are hexagonal pyramids whose volume equals that of a cone of 60.89° (faces 62.06°, edges 58.52°); the lattice is compressed vertically so that this equivalent cone reaches 45°, and the particles become spheroids of the same volume. Faces then stand at 46.4° and edges at 42.3°. Deterministic. No circular stockpiles. | none |
BlendingSimulatorDetailed |
--detailed |
Rigid-body cubes in Bullet physics, thrown from the stacker belt; the angle of repose follows from the friction. Seconds to hours per run. | dropHeight, bulkDensityFactor, seed |
Fast and lattice simulation cost about the same per particle (a chevron stockpile of 323,000 particles stacks and reclaims in about 0.2 s).
With visualize set, the simulators keep every particle (inactiveOutputParticles) for visualization and export.
The CLI reads the stacked material from stdin, one line per increment: time x z volume parameter... (whitespace separated), and writes
the reclaimed slices with --reclaim <file|stdout> and the height map with --heights <file>:
BlendingSimulatorCli --lattice --length 60 --depth 20 --ppm3 8 --reclaim stdout < deposition.txtHow versions are numbered and releases are tagged, with a complete example, is described in RELEASING.md.