Open Source Ecosystem
Philosophy
We've built an entire open-source ecosystem around VOLT.
We believe in transparency, collaboration, and giving back to the community. Science, or rather, human knowledge, has always advanced on the foundation of others' work. And this is our contribution to making the world a better place.
VOLT Labs Ecosystem
| Repository | Description | Links |
|---|---|---|
| SpatialAssembler | Volt's 3D model assembler. Also available on npm: npm install @voltstack/spatial-assembler | GitHub · npm |
| HeadlessRasterizer | Rasterize GLB models without a browser! Also available on npm: npm install @voltstack/headless-rasterizer | GitHub · npm |
| CoreToolkit | Core C++ library providing math primitives (Vector3, Matrix3, Quaternion), spatial data structures (KD-trees, octrees), simulation cell handling, and parallel a… | GitHub |
| LammpsIO | High-performance parser & utilities for LAMMPS trajectory frames. Also available on npm: npm install @voltstack/lammps-io | GitHub · npm |
| VoltSDK | The SDK to interact with the Volt APIs. Available on npm: npm install @voltstack/voltclient and PyPI: pip install voltsdk | GitHub · npm · PyPI |
| ClusterDaemon | The compute node for your Volt Team! Also available on npm: npm install @voltstack/daemon-cluster-client | GitHub · npm |
| Volt | The next-generation platform designed for high-performance research teams and enthusiastic materials scientists! | GitHub |
| docs.voltcloud.dev | Docs for VOLT Labs Open-Source Software Ecosystem. | GitHub |
Foundational Algorithms
| Repository | Description | Links |
|---|---|---|
| OpenDXA | A modified DXA! Supports multiple structure identification methods including PTM, CNA, and Diamond structure analysis. Identifies dislocation lines, computes Bu… | GitHub |
| GrainSegmentation | Algorithms for detects and segments grain boundaries in polycrystalline materials. Identifies individual grains, computes grain orientations, and extracts grain… | GitHub |
| ElasticStrain | Computes elastic strain tensors by mapping local atomic environments to reference crystal structures. Separates elastic from plastic deformation and calculates … | GitHub |
| DisplacementsAnalysis | Calculates atomic displacement vectors between reference and deformed configurations. Tracks atom movements, identifies displaced atoms, and computes displaceme… | GitHub |
| CoordinationAnalysis | Computes coordination numbers and nearest neighbor statistics for each atom. Analyzes local atomic environments and detects under/over-coordinated atoms indicat… | GitHub |
| CentrosymmetryParameter | Calculates the centrosymmetry parameter (CSP) for each atom to detect point defects, surfaces, and dislocation cores. Useful for visualizing crystal defects in … | GitHub |
| AtomicStrain | Computes per-atom strain tensors from atomic configurations. Calculates Green-Lagrangian strain, von Mises strain, and principal strains for deformation analysi… | GitHub |
| StructureIdentification | Algorithms for crystal structure identification in atomistic simulations. Classifies atoms by local structural environment to detect BCC, FCC, HCP, diamond cubi… | GitHub |
| ClusterAnalysis | Groups particles into clusters based on distance cutoff or bond topology. Identifies connected components, computes cluster sizes, centers of mass, and gyration… | GitHub |
Disclaimer
When you create a team in VOLT, a set of plugins is automatically uploaded to one of the team's available clusters. Each of these plugins runs the Foundational Algorithms under the hood.
For context, there are several tools on the market that allow you to analyze LAMMPS simulations. Some, like mdapy, use the ovito library published on PyPI to programmatically interact with OVITO's modifiers through Python, as well as their own algorithms. OVITO is currently the most widely used tool in the field and, consequently, the most cited — so if you need a reliable reference to compare results against, OVITO is a solid choice.
With that context in mind, the Foundational Algorithms (and by extension the Plugins) are built entirely using our own software ecosystem.
It's important to know that when running something like CoordinationAnalysis, VOLT and OVITO produce exactly the same results. However, for more complex algorithms such as OpenDXA or ElasticStrain, you may observe differences compared to OVITO.
This does not necessarily mean the results are incorrect. There are several factors that can contribute to these differences:
- VOLT's algorithms are not 1:1 replicas of OVITO's. The algorithms are independently developed.
- Compiler optimization flags used in Release builds can introduce small numerical differences.
- If point 2 occurs and the numerical difference is significant, it may indicate undefined behavior (UB). During the development of OpenDXA, UB was encountered and took weeks to track down — it was caused by compiler optimizations applied to code that was technically correct.
- VOLT's algorithms are parallelized using different libraries and implementations than those used by OVITO. This shouldn't be a problem in general, but you may notice that after several runs of the same algorithm, results are not perfectly deterministic. This is expected if the differences are small.
- In complex algorithms like GrainSegmentation, OpenDXA, or structural identification methods such as CNA or PTM, even the smallest change — a sign flip, a single line of code — can have catastrophic effects. At one point, estimating the RMSD for DXA + PTM seemed like a good idea — it wasn't. Currently, the way cluster construction works in OpenDXA differs from OVITO's DislocationAnalysisEngine. While results are virtually identical when using CNA, we cannot guarantee the same level of accuracy when using PTM or other structural identification algorithms beyond "it makes sense because the algorithm classifies better than CNA."
The way we can ensure your confidence in the Foundational Algorithms is by providing benchmarks that compare VOLT's and OVITO's results for the same timestep. We're working on it! 🙂
Contributing
We welcome contributions from the community! Whether it's fixing a bug, improving documentation, or proposing a new feature, your help is appreciated.
- Fork the repository you want to contribute to.
- Create a branch for your changes.
- Submit a pull request with a clear description of what you've done.
Please make sure to read the CONTRIBUTING.md file in each repository for specific guidelines.
A set of AI-powered agents is available in the .github directory of the Volt repository. You can use them to develop new features or fix bugs with the help of artificial intelligence. However, do not use AI for the Foundational Algorithms — these are non-trivial algorithms, and even state-of-the-art models tend to hallucinate when working with them.
License
All VOLT Labs open source projects are released under the MIT License unless otherwise specified in the repository.