VOLT
Open Source Ecosystem

CoreToolkit

Core C++ library powering VOLT's atomistic simulation analysis. Provides math primitives, spatial data structures, neighbor search, simulation cell handling, and the plugin build system.

Overview

CoreToolkit is the foundational C++23 static library that every VOLT analysis plugin links against. It provides the math primitives, spatial data structures, neighbor-search algorithms, LAMMPS parsing, simulation cell handling, and CLI scaffolding that the Foundational Algorithms rely on.

LanguageC++23
Build systemCMake ≥ 3.20 + Conan 2
Package typeStatic library (libcoretoolkit.a)
LicenseMIT
LinksGitHub

Modules

CoreToolkit is organized into six modules under the include/volt/ namespace:

volt/math

Linear algebra and geometry primitives optimized for atomistic simulation.

HeaderDescription
vector2.h / vector3.h / vector4.h2D, 3D, and 4D vector types
point2.h / point3.h2D and 3D point types
matrix3.h / matrix4.h3×3 and 4×4 matrix types
quaternion.hQuaternion for rotation representation
rotation.h / scaling.hRotation and scaling transformations
affine_transformation.hGeneral affine transformation
affine_decomposition.hDecomposition of affine transforms
symmetric_tensor.hSymmetric tensor (e.g. strain tensors)
box3.h3D axis-aligned bounding box
plane.hPlane representation
ray.hRay for geometric queries
lin_alg.hLinear algebra utilities

volt/core

Core data model for atomistic simulations.

HeaderDescription
simulation_cell.hSimulation cell (box vectors, periodicity)
frame_adapter.hAdapter for reading simulation frames
lammps_parser.hHigh-performance LAMMPS dump parser
particle_property.hPer-particle property storage
property_base.hType-erased property base class
analysis_result.hStandard result type for analysis plugins
volt.hPrecompiled header aggregating all core includes

volt/analysis

Spatial query algorithms used by analysis plugins.

HeaderDescription
cutoff_neighbor_finder.hDistance-cutoff neighbor search (cell-list based)
nearest_neighbor_finder.hk-nearest neighbor search (KD-tree based)

volt/structures

Higher-level crystallographic data structures.

HeaderDescription
cluster.hCluster representation for defect analysis
lattice_vectors.hCrystal lattice vector utilities

volt/utilities

General-purpose infrastructure.

HeaderDescription
memory_pool.hThread-safe arena-style memory pool
bounded_priority_queue.hFixed-capacity priority queue for k-NN search
json_utils.hJSON serialization helpers (nlohmann/json)
concurrence/TBB-based parallel utilities

volt/cli

CLI scaffolding for plugin executables.

HeaderDescription
common.hArgument parsing, I/O paths, and JSON output helpers shared by all plugin binaries

Dependencies

CoreToolkit manages its dependencies via Conan 2:

DependencyVersionPurpose
Boost1.88.0Header-only utilities
oneTBB2021.12.0Parallel algorithms & concurrency
spdlog1.14.1Structured logging
nlohmann_json3.11.3JSON I/O

Additionally, three vendored libraries are compiled as static dependencies:

LibraryPurpose
PTMPolyhedral Template Matching for crystal structure identification
MWM_CSPMinimum-weight matching for centrosymmetry parameter calculation
GeogramDelaunay tessellation (PSM subset)

Build Flags

Release builds use HPC-tuned compiler flags:

-O3 -march=native -fno-math-errno -fno-trapping-math -ffp-contract=fast

CoreToolkit deliberately avoids -ffast-math globally to preserve strict IEEE compliance on geometry-critical code paths.

CI / GitHub Actions

CoreToolkit exposes a reusable workflow at .github/workflows/build-plugin-binary.yml that any plugin repository can call to:

  1. Build the plugin against a fresh CoreToolkit checkout (on Linux, macOS, and Windows).
  2. Package the resulting binary into a .tar.gz archive with SHA-256 checksum and metadata.
  3. Publish the bundle to GHCR as an OCI artifact.

Package naming follows:

ghcr.io/voltlabs-research/<plugin-lowercase>-binary:sha-<commit>-<os>-<arch>
ghcr.io/voltlabs-research/<plugin-lowercase>-binary:<tag>-<os>-<arch>

On this page