Reaction Network Monte Carlo (RNMC
) is a collection of programs for Monte Carlo simulation of statistical mechanical systems heavily inspired by SPPARKS. RNMC
is designed to run large numbers of simulations of a fixed system in parallel. The project currently consists of four parts:
core
: Core code shared by all simulators, for example IO, threading logic, and model independent simulation logic.GMC
: Implementation of Gillespie's next reaction simulator. GMC is able to run simulations of reaction networks with hundreds of millions of reactions, even when the number of species is small.NPMC
: A 3D statistical field theory simulator which supports one and two site interactions. Useful for simulating nano particles.LGMC
: A simulator that can include a static or dynamic lattice region and a homogeneous region and allows electrochemical as well as chemical reactions. Suitable for multi-phase simulations (e.g., heterogeneous catalysis, electrochemical plating or stripping).
Examples of research projects using RNMC
:
- Spotte-Smith, Kam, et al., ACS Energy Lett. 7(4), 1446–1453 (2022). DOI: 10.1021/acsenergylett.2c00517
- Barter, Spotte-Smith, et al., Dig. Disc. 2, 123-137 (2023). DOI: 10.1039/D2DD00117A
- Spotte-Smith et al., J. Am. Chem. Soc. 145(2), 12181–12192 (2023). DOI: 10.1021/jacs.3c02222
- Xia et al., Nano Lett. 23(23), 11129–11136 (2023). DOI: 10.1021/acs.nanolett.3c03568
The complete documentation for RNMC
can be found here. This includes a guide to installation, setting up simulations, testing, and more.
RNMC depends on GSL for pseudo random number generation and sqlite for the database interfaces.
We welcome community contributions to RNMC! Please submit code contributions as pull requests (PRs). Work-in-progress PRs are encouraged; just include "[WIP]" in the title of your PR.
If you don't know where to start, you can check out the open issues or reach out to Sam Blau and describe what ideas you may have in mind.
Have a problem installing or running RNMC, or have an idea for how the code could be better? Need support in using RNMC? Please open a new issue, and label the issue (with e.g., “bug”, “enhancement”, or “question”) so that we can triage appropriately. Issues are preferred over e-mails or other private communications because multiple users might encounter the same problem.
A more complete guide to contributing can be found in our online documentation.
In its current form, RNMC
only allows reactions with up to two reactants and up to two products. Ternary and other n-ary reactions cannot be included in RNMC
simulations, though this would be possible with modest modifications to the code.
Reaction selection in kinetic Monte Carlo simulations can in principle be performed in RNMC
are limited to at least