Partitioning the computational load of Apothesis into threads - GeomScale/gsoc24 GitHub Wiki

Overview

Kinetic Monte Carlo (kMC) method is one of the best methods to study and analyze surface phenomena such as heterogeneous catalysis and thin film growth. Compared to other methods such as ab initio and Molecular Dynamics (MD), kMC is the only modeling technique able to cope with the large sizes and the long timescales involved while retaining the molecular details [1]. In kMC, a finite set of possible processes or events is assumed a priori which can be performed on or off lattice. kMC allows one to reach practically all timescales and sizes of experimental interest. Especially in film growth, snapshots of the simulation can be directly compared to experimental measurements such as scanning tunneling microscopy images.

Related work

Apothesis is a generalized open-source software for simulating heterogeneous catalysis and deposition processes via kMC. It is based on performing certain processes (adsorption, desorption, diffusion and surface reaction(s)) on lattices. Currently, Apothesis supports simple cubic, FCC, HPC and diamond lattices. It has been used to study both heterogeneous catalysis of CO and related type growth models [2].

The source code of Aposthesis hosted on: https://github.com/nixeimar/Apothesis

Details of your coding project

By default, kMC method is serial. Thus, Apothesis is serial. However, certain processes such us writing the output information or the output lattices can be performed in parallel without interfering with the main process of Apothesis. This project is focused on distributing the computational load of Apothesis to threads i.e. a main thread will run Apothesis while other thread will be responsible for running secondary operations such as the output information which in certain cases can be very time consuming.

Size

Medium (175 hours)

Skills

Required: C++, Threads Preferred: C++17, experience with physicochemical based software

Expected impact

The project will accelerate Apothesis allowing higher computational times and more realistic representations of the physical/chemical phenomena.

Mentors

Nikolaos (Nikos) Cheimarios <n.cheimarios at gmail.com> is a researcher with contributions in scientific software development. He has previous experience as mentor in GSoC 2020, 2022 and 2023. He is one of the authors of Apothesis, Chameleon software and several web-based scientific numerical applications.

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-2017) and the R-project (2017). Students, please contact the first mentor after completing at least one of the tests below.

Tests

Students, the following test will be helpful. • Easy: Compile and run Apothesis for the CO heterogeneous catalysis case. • Medium: Measure the time of Apothesis with and without output. • Hard: Find at least two parts in the C++ implementation of Apothesis that can be partitioned to threads and write in your report how are you going to do it. For tips and references contact the Mentors!

References

[1] N. Cheimarios, D. To, G. Kokkoris, G. Memos and A.G. Boudouvis “Monte Carlo & Kinetic Monte Carlo models for deposition processes: A review of recent works”, Frontiers in Physics, 9, 165 (2021).

[2] N. Cheimarios, “Insights into the effect of growth on the Ziff-Gulari-Barshad model and the film properties”, Modelling and Simulation in Materials Science and Engineering, 31, 065007, (2023).

Solutions of tests

Students, please post a link to your test results here. • EXAMPLE STUDENT 1 NAME, LINK TO GITHUB PROFILE, LINK TO TEST RESULTS.