9 unstable releases (3 breaking)
0.4.2 | Feb 12, 2021 |
---|---|
0.4.1 | Feb 12, 2021 |
0.3.2 | Dec 19, 2020 |
0.2.1 | Dec 15, 2020 |
0.1.0 | Jul 19, 2020 |
#154 in Simulation
665KB
1.5K
SLoC
Velvet
Velvet is a classical atomistic simulation engine with a focus on user-friendliness and extensibility. This project is largely a learning exercise, but as development continues I hope to accomplish the following goals:
- Extensibility via user-defined plugin modules
- Optimized single CPU performace with multithreading and SIMD support
- Implement a wide variety of interatomic potentials
- Molecular Dynamics, Monte Carlo, and Minimization routines
- Visualization tools to analyze simulation results
- Support importing and exporting data in popular external formats
Getting Started
Prerequisites
Velvet has optional support to write HDF5 formatted results. If this is your preferred format, you will need a local installation of libhdf5
. The library can be installed with your package manager of choice or downloaded directly from source here.
- The HDF Group - Official HDF5 organization
Installation (from source)
To build Velvet you will need to have Rust's compiler and package manager installed on your machine. Instructions for most platforms can be found here.
- rustc - Compiler for the Rust programming language
- Cargo - Package manager for the Rust programming language
- Clone the repo
$ git clone https://github.com/seatonullberg/velvet && cd velvet
- Check that all tests pass
$ cargo test --workspace
- Build in release mode
# without optional dependencies
$ cargo build --release
# with HDF5 dependency
$ cargo build --release --features hdf5-output
# with rayon multithreading enabled
$ cargo build --release --features rayon
Usage
The examples
directory contains examples of how to use the velvet
crate to configure simulations directly in code.
The scripts
directory contains Python scripts to visualize the results of each example.
Roadmap
Refer to the open issues, FEATURES.md, and CHANGELOG.md to see planned or proposed features (and bug fixes).
FAQ
Q: Why is it called "Velvet"?
A: "Velvet" is a concatenation of Velocity Verlet, a foundational algorithm in molecular dynamics simulations.
License
Distributed under the MIT License. See LICENSE for more information.
Acknowledgements
- Lumol - Universal extensible molecular simulation engine
Dependencies
~8–18MB
~242K SLoC