KMCThinFilm: A C++ Framework for the Rapid Development of Lattice Kinetic Monte Carlo (kMC) Simulations of Thin Film Growth

Report No. ARL-TR-7469
Authors: James J Ramsey
Date/Pages: September 2015; 52 pages
Abstract: A new C++ library for the rapid development of lattice-based kinetic Monte Carlo (kMC) simulation codes, KMCThinFilm, has been introduced. This library implements versions of the Bortz-Kalos-Lebowitz (BKL) algorithm for choosing sequences of random events on a lattice in a kMC simulation, and these implementations have been optimized so that only a subset of the cells of the lattice has to be scanned at each time step of the simulation. Researchers who wish to implement kMC models of some physical processes can use this library for the BKL algorithm rather than program an ad hoc and possibly naïve implementation of it, and focus on writing the code needed to determine the propensities for the possible events in their kMC model and the means of executing them. Example applications, one of a patterned substrate and one of ballistic deposition of a pseudo-polycrystalline film, demonstrate the flexibility of the library. The KMCThinFilm library is also capable of approximate parallel kMC simulations, and its parallel efficiency appears to be near the same or better than a previous parallel implementation described in a 2007 article by F Shi, Y Shim, and JG Amar, "Parallel Kinetic Monte Carlo Simulations of Two-Dimensional Island Coarsening," Physical Review E, volume 76, 031607. However, parallel scalability for simulations on smaller lattices tends to be poor, so it is recommended that parallelism only be used for simulations that are too computationally intensive to run on a workstation.
Distribution: Approved for public release
  Download Report ( 2.689 MBytes )
If you are visually impaired or need a physical copy of this report, please visit and contact DTIC.

Last Update / Reviewed: September 1, 2015