Skip to content

BlauGroup/RNMC

Repository files navigation

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:

Documentation

The complete documentation for RNMC can be found here. This includes a guide to installation, setting up simulations, testing, and more.

Dependencies

RNMC depends on GSL for pseudo random number generation and sqlite for the database interfaces.

Contributing/Support

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.

Limitations

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 $O(1)$ time (see Slepoy et al., J. Chem. Phys. 128(205101) (2008). DOI: 10.1063/1.2919546). However, we have not yet implemented this algorithm, and simulations with RNMC are limited to at least $O(log(R))$ scaling, where $R$ is the number of reactions in the network.