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.