In this section we enumerate and briefly describe each of Cain's solvers. See the Simulation Methods section for more details and derivations. In the method editor the solvers are grouped according to four heirarchical categories: time dependence, simulation output, algorithm, and option. One choose a solver by selecting items from each of these in turn.

Time Dependence

The first category differentiates between time homogeneous and time inhomogeneous systems. In a time homogenous problem the reaction propensities do not have explicit time dependence. Time inhomogenous problems typically arise when the volume or temperature have a prescribed time dependence. This implies that the reaction rates will explicitly depend on time. Cain has many solvers for time homogeneous problems, but few for time inhomogenous ones. While conceptually very similar, one uses different algorithms for the two cases. Thus in choosing a solver one first selects the time dependence category.

Simulation Output

Next one selects the desired simulation output. The various kinds of output are described in the Method Editor section. To recap, one can either collect time series or histogram data. For time series data one can either record the state at uniformly spaced time frames or one can record every reaction event. Although Cain is primarily for stochastic simulations, it does offer a few simple deterministic solvers. These generate time series data and are grouped in a separate category. When the species populations are recorded in histograms, the mean and standard deviation are also recorded. This is useful because unless the bin width is unity one can only approximately calculate these statistics from the histogram data. For histogram output one can either study transient or steady state behavior. For the former one records the state at uniformly spaced frames in time. For the latter one averages the populations over a specified time interval. Thus, in summary there are five simulation output categories:


The third category in selecting a solvers is the simulation algorithm. There are algorithms for exact and approximate stochastic simulation. Below is a list with some implementation details.


Below is a list of the available solvers grouped according to the heirarchical categories. Each of the solvers use sparse arrays for the state change vectors [Li 2006]. The methods that require exponential deviates use the ziggurat method [Marsaglia 2000].