2.1 Frameworks

In the rather broad field of CSE a plethora of frameworks is available, focusing on different application areas. In this section, an overview of notable frameworks is given in alphabetical order.

ANSYS [12] provides several different commercial engineering software products, such as an finite element analysis ( FEA)-based multiphysics package. Different application areas are covered, for instance, automotive, aerospace, energy, and electronics. A comprehensive selection of pre- and postprocessing functionality is provided.

Cactus [13][14] is a multi-purpose framework, which has its roots in the field of relativistic astronomy. The framework is available under the GNU lesser general public license ( LGPL) and focuses on data parallel approaches. The design follows a modular approach and supports different target architectures as well as collaborative code development. The central part of the framework (called ”flesh”) connects the individual application modules (called ”thorns”), typically containing the implementations of the actual simulation. Communication between thorns is realized via the framework’s API. Connections between thorns are defined in configuration files, which are processed during compile-time.

The common component architecture ( CCA) [15][16][17] is a standard and applies so-called component-based software engineering (Section 3.3) to encapsulate units of functionality into components. Data communication between components is implemented via so-called ports. An interface definition language is used to describe the interfaces of components by simultaneously being independent of the underlying programming language. The actual connection mechanism of the individual components via the interfaces requires end user interaction. The CCA standard has been applied in several projects [16], such as the high-performance computing framework CCAFFEINE [18] and the distributed computing frameworks XCAT [19], Legion [20], and SCIRun2 [21].

COMSOL Multiphysics [22] is a commercial FEA simulation software for engineering and physics applications, supporting multiphysics simulations. The tool provides several essential pre- and postprocessing facilities such as visualization and mesh generation.

The COOLFluiD [23][24][25] project enables multiphysics simulations based on a component framework and is primarily designed for data parallel applications in the field of computational fluid dynamics. The source code is available under the LGPL. The core is a flexible plugin system, coupled with a data communication layer based on so-called data sockets. Each plugin can set up data sockets which are in turn used to generate a dependence hierarchy driving the overall execution.

The directed acyclic graph unified environment ( DAGuE) [26][27] enables scientific computing on large-scale distributed, heterogeneous environments. The source code is available under a license similar to the Berkeley source distribution ( BSD) license. The basis of DAGuE is a directed acyclic graph ( DAG)-based scheduling engine, where the nodes are sequential computation tasks and the edges refer to data movements between the tasks. Computational tasks are encapsulated into sequential kernels. A DAGuE-specific language is used to describe the data flow between the kernels.

The earth system modeling framework ( ESMF) [28][29] provides the setup of flexible, reusable, and large-scale simulations in climate, weather, and data assimilation domains. The source code is publicly available under the University of Illinois-National Center for Supercomputing Applications License. The software design is based on a component approach, enabling the division of functionality into reusable components offering a unified interface. The parallelization layer, such as a distributed memory model, is abstracted by a virtual machine approach and focuses on data parallel and basic task parallel approaches.

Uintah [30][31] is a large-scale multi-physics computation framework available under the Massachusetts Institute of Technology ( MIT) License. Uintah solves reacting fluid-structure problems on structured meshes, supporting adaptive mesh refinement. Uintah enables task and data parallel applications. The primary area of application is computational mechanics and fluid dynamics. The framework is based on a DAG representation of parallel computation and communication to express data dependencies between multiple components. Each node in the graph corresponds to components which in turn represent a set of tasks. The data dependencies between components are modeled by edges in the DAG.

The FLOSS frameworks provide a set of reusable components which can be combined to form the actual application [32]. The frameworks primarily support large-scale data parallelism by, for instance, providing distributed data structures based on the message passing interface ( MPI). The focus is clearly on parallelizing and decoupling the computationally intensive part of scientific simulations. Although such an approach provides a high level of reusability by simultaneously supporting large-scale parallel applications, usability is limited as these frameworks are typically utilized on supercomputers, inherently not favoring GUIs. However, GUIs are an integral part of a high-usability application. Therefore, additional tools required for pre- and postprocessing, such as data visualization, are outsourced to external tools.

In contrast, commercial simulation software provides applications with a high level of usability. However, in addition to being cost-intensive, commercial software in general struggles to support alterations of the simulation’s internals, due to its proprietary nature. Having access to simulation internals, such as the implementation of physical models, is of utmost importance to physical modeling research, allowing for an evaluation of new models or techniques. Typically, commercial products try to tackle this problem by providing an API to allow a controlled external access to internal mechanisms; however, this attempt obviously does not provide as much flexibility as a FLOSS approach. Also, commercial tools tend to focus on mainstream functionality, thus specialized customer requests are often ignored or deemed too expensive.