RNMC

Logo

Reaction Network Monte Carlo

View the Project on GitHub BlauGroup/RNMC

Adding Simulators to RNMC

RNMC is designed to be modular. Individual types of simulations all draw from a small core library, but most of their logic is independent. This means that, to develop a new type of simulation, you do not need to have a deep understanding of every component of RNMC. As long as you understand core and the general structure of a new simulation type, you’re free to do what you want!

Here, we describe the structure of RNMC, explaining the components of the core library and what goes into a simulator in order to help facilitate the development of new simulators.

The Core Library

The core library contains resources that are shared by just about every simulator in RNMC. New simulators may require small modifications to core, but it also may be possible for you to develop a new simulator without changing anything!

core contains:

The core folder also defines the high-level interfaces for each type of simulator. For instance, nano_particle_simulation.h/nano_particle_simulation.cpp defines the interface for NPMC.

Components of a Simulator

Different simulators may have different levels of complexity and require different components. Generally, though, RNMC simulations have similar components. These include:

Other than the main simulation interface mentioned above (which is housed in core) and testing code (housed in tests), all application-specific code should be placed in a separate directory (e.g., NPMC or GMC). For a more detailed understanding of how RNMC is organized, we encourage you to select an existing type of simulation (e.g., GMC) and read through the source code.