On the design of the EFCOSS software architecture when using parallel and distributed computing.
Mathematical optimization algorithms are ubiquitous in computational science and engineering where the objective function of the optimization problem involves a complicated computer model predicting relevant phenomena of a scientific or engineering system of interest. Therefore, in this area of mathematical software, it is indispensable to combine software for optimization with software for simulation, typically developed independently of each other by members of separate scientific communities. From a software engineering point of view, the situation becomes even more challenging when the simulation software is developed using a parallel programming paradigm without taking into consideration that it will be executed within an optimization context. The EFCOSS environment alleviates some of the problems by serving as an interfacing layer between optimization software and simulation software. In this paper, we show the software design of those parts of EFCOSS that are relevant to the integration of a simulation software involving different parallel programming paradigms. The parallel programming paradigms supported by EFCOSS include MPI for distributed memory and OpenMP for shared memory. In addition, the simulation software can be executed on a remote parallel computer.