Apothesis: an open source 'C ' software for studying deposition processes via the kinetic Monte Carlo - GeomScale/gsoc2020 GitHub Wiki


Apothesis is a kinetic Monte Carlo software for deposition processes.

Related work

Currently there is no generalized kinetic Monte Carlo (KMC) software for deposition processes. Although, open source software based on the KMC method do exit for handling surface processes such as SPPARKS 2016, Zakros 2016 and KMCLib 2014, these codes are focused on catalysis and do not take into account the development of film morphology - a central feature of deposition processes - or refer to material destruction (MMonCa 2016). There are also software that take into account the film development (NASCAAM 2016) but they are very simplistic and cannot be used for complex processes such as the ones that modern technologies demand.

These are the drawbacks and limitations that Apothesis tries to overcome. Apothesis targets to be the first generalized deposition oriented software based on KMC that can handle complex processes in arbitrary surfaces.


  1. [SPPARKS 2016] http://spparks.sandia.gov/
  2. [Zacros 2016] http://www.ucl.ac.uk/~ucecmst/software.html
  3. [KMClib 2014] Leetmaa M. and Skorodumova N.V. “KMCLib: A general framework for lattice kinetic Monte Carlo (KMC) simulations” Computer Physics Communications 185, 2340 (2014).
  4. [MMonCa 2016] http://www.materials.imdea.org/MMonCa
  5. [NASCAM 2016 ] https://www.unamur.be/sciences/physique/pmr/telechargement/logiciels/nascam

Details of your coding project

The goal of the code project is to enable Apothesis to handle multicomponent species. That said, currently Apothesis can handle only one species; the one that is to be deposited. In order to generalize Apothesis and enable it to handle surface reactions, it must first be able to handle multiple species in the computational domain. The tasks that have to be

  • Develop the core classes that will handle multiple species. Each species will be able to participate in a certain, predefined number of processes.

  • Develop the core classes that will treat surface reactions of the form: A -> B(solid) + (By products) ...

  • Test the development in a realistic but simple system (e.g. tungsten deposition).

  • Write documentation and simple test cases. The development will be in C++.

Expected impact

This package will be a useful asset for GeomScale since it will broader the spectrum of scientific communities that GeomScale targets. Moreover, there is a tight connection between kinetic Monte Carlo and Monte Carlo algorithms for sampling and integration from convex regions and this connection will be highlighted and exploited for the benefit of the community.


Nikolaos Cheimarios <n.cheimarios at gmail.com> is an expert in multi scale modeling and computational chemistry, in particular scientific software development, numerical solution of partial differential equations, transport phenomena, non-linear phenomena, stochastic processes, molecular simulations and high performance computing (HPC) in CPU and GPU .

Vissarion Fisikopoulos <vissarion.fisikopoulos at gmail.com> is an expert in mathematical software, computational geometry and optimization, and has previous GSOC mentoring experience with Boost C++ libraries (2016-2019) and the R-project (2018-2019).

Students, please contact both mentors below after completing at least one of the tests below.


Students, please do one or more of the following tests before contacting the mentors above.

MENTORS: write several tests that potential students can do to demonstrate their capabilities for this particular project.


  • Easy: Download, compile and run Apothesis. Perform the simple test that is described in Apothesis.
  • Medium: Write an arbitrary process class that returns its name. The class must contains only the necessary functions in order for Apothesis to compile and on runtime to print its name (i.g. "Hello I am MySurfaceReaction class") in the terminal. The class does not have to have any physical/chemical meaning.
  • Hard: Create a sketch/highlights of your idea of how multicomponent species must be introduced in Apothesis. For this special case consider only absorption, diffusion and migration for the surface processes. Create a flowchart taking into account the aforementioned processes and assume that only two species (A and B) are introduced.

Solutions of tests

Students, please post a link to your test results here.