KMC algorithmΒΆ

  • Form and maintain a list of all possible rates \(r_j\) in system

    \[r_j\;\mbox{for all}\;\; j=1,2,\ldots,M\]

    \(M\) – number of possible events

  • Calculate the cummulative function

    \[R_m=\sum_{j=1}^{m}r_j, \;\;\mbox{for all}\;\; m=1,2,\ldots,M\]
  • Generate random number \(\rho_1\in[0,1)\)

  • Select event \(i\)

    \[\begin{split}R_{i-1}\leq \rho_1 R_M < R_i\end{split}\]
    images/kmc_cdf_invert.png
  • Carry out event \(i\)

  • Generate random number \(\rho_2\in(0,1)\)

  • Compute time increment \(\Delta t\)

    \[\Delta t=-\frac{ln(\rho_2)}{R_M}\]
  • Update time: \(t=t+\Delta t\)

  • Update list of events and goto next step