Articles | Volume 8, issue 3
Development and technical paper
06 Mar 2015
Development and technical paper |  | 06 Mar 2015

A generic simulation cell method for developing extensible, efficient and readable parallel computational models

I. Honkonen

Abstract. I present a method for developing extensible and modular computational models without sacrificing serial or parallel performance or source code readability. By using a generic simulation cell method I show that it is possible to combine several distinct computational models to run in the same computational grid without requiring modification of existing code. This is an advantage for the development and testing of, e.g., geoscientific software as each submodel can be developed and tested independently and subsequently used without modification in a more complex coupled program. An implementation of the generic simulation cell method presented here, generic simulation cell class (gensimcell), also includes support for parallel programming by allowing model developers to select which simulation variables of, e.g., a domain-decomposed model to transfer between processes via a Message Passing Interface (MPI) library. This allows the communication strategy of a program to be formalized by explicitly stating which variables must be transferred between processes for the correct functionality of each submodel and the entire program. The generic simulation cell class requires a C++ compiler that supports a version of the language standardized in 2011 (C++11). The code is available at for everyone to use, study, modify and redistribute; those who do are kindly requested to acknowledge and cite this work.

Short summary
A programming method in the C++ language is presented that allows developers of scientific numerical simulations to better reuse already developed software leading to less time and effort spent on writing code. A software package is also presented which allows simulation developers to more easily take advantage of the introduced programming method in both desktop and supercomputing environments.