gRASPA (pronounced “gee raspa”) is a GPU-accelerated Monte Carlo simulation software built for molecular adsorption in nanoporous materials, such as zeolites and metal-organic frameworks (MOFs).
| Functionalities | gRASPA | gRASPA-fast | gRASPA-HTC |
|---|---|---|---|
| Simulation Types | |||
| Canonical Monte Carlo (NVT-MC) |
✔️ | ✔️ | ✔️ |
| Grand Canonical Monte Carlo (GCMC) |
✔️ | ✔️ | ✔️ |
| Transition-Matrix Monte Carlo in grand canonical ensemble (GC-TMMC) |
✔️ | ✔️ | |
| Mixture Adsorption via GCMC | ✔️ | ||
| NVT-Gibbs MC | ✔️ | ✔️ | |
| Interactions | |||
| Lennard-Jones (12-6) | ✔️ | ✔️ | ✔️ |
| Short-Range Coulomb | ✔️ | ✔️ | ✔️ |
| Long-Range Coulomb: Ewald Summation | ✔️ | ✔️ | ✔️ |
| Analytical Tail Correction | ✔️ | ✔️ | |
| Machine-Learning Potential (via LibTorch and cppFlow) |
✔️ | ||
| Moves | |||
| Translation/Rotation | ✔️ | ✔️ | ✔️ |
| Configurational-Bias Monte Carlo (CBMC) | ✔️ | ✔️ | |
| Widom test particle insertion | ✔️ | ✔️ | |
| Insertion/Deletion (without CBMC) |
✔️ | ✔️ | ✔️ |
| Insertion/Deletion (with CBMC) |
✔️ | ✔️ | |
| Identity Swap | ✔️ | ||
| NVT-Gibbs volume change move | ✔️ | ✔️ | |
| Gibbs particle transfer | ✔️ | ✔️ | |
| Configurational Bias/ Continuous Fractional Components (CB/CFC) MC |
✔️ | ✔️ | |
| Extra Functionalities | |||
| Write: LAMMPS data file | ✔️ | ✔️ | ✔️ |
| Read: LAMMPS data file | ✔️ | ||
| Write: Restart files (Compatible with RASPA-2) |
✔️ | ✔️ | |
| Read: Restart files | ✔️ | ✔️ | |
| Peng-Robinson Equation of State | ✔️ | ||
| Automatic Determination of # unit cells |
✔️ |
To install gRASPA on NERSC (DOE) and QUEST (Northwestern) clusters, check out Cluster-Setup
A detailed installation note for gRASPA on CentOS/Ubuntu 24.04 is documented in the manual here
- For NVIDIA GPUs, gRASPA code has been tested on the following NVIDIA GPUs:
- A40, A100, RTX 3080 Ti, RTX 3090, RTX 4090.
- 🤯: RTX 3090/4090 is faster than A40/A100 for gRASPA
- gRASPA has a SYCL version (experimental) that supports other devices, available in Releases
- Pybind extension for gRASPA allows user to interact with the internal variables of gRASPA, break down MC moves, add their modifications
- Access the pybind-gRASPA extension here, as a patch to the original code
- Go to
Examples/folder and read more!
- gRASPA manual is available online @ https://zhaoli2042.github.io/gRASPA-mkdoc
- also available in Chinese
- a doxygen documentation is also available @ https://zhaoli2042.github.io/gRASPA
- gRASPA paper is now published. Please kindly cite it if you find it useful.
- Li, Shi, Dubbeldam, Dewing, Knight, Vázquez-Mayagoitia, Snurr, "Efficient Implementation of Monte Carlo Algorithms on Graphical Processing Units for Simulation of Adsorption in Porous Materials", J. Chem. Theory Comput. 2024, 20, 23, 10649–10666
- DOI: 10.1021/acs.jctc.4c01058
- Also, please give our repository a ⭐ if our code helps!
- Zhao Li (Northwestern University, currently at Purdue University/University of Notre Dame, [email protected])
- Kaihang Shi (Northwestern University, currently at University at Buffalo, [email protected])
- David Dubbeldam (University of Amsterdam, [email protected])
- Mark Dewing (Argonne National Laboratory, [email protected])
- Christopher Knight (Argonne National Laboratory, [email protected])
- Alvaro Vazquez Mayagoitia (Argonne National Laboratory, [email protected])
- Randall Q. Snurr (Northwestern University, [email protected])