When studying real-life biomedical processes by numerical simulation, the amount of computer power needed is almost unlimited. Hence, the computational efficiency of the underlying software frameworks greatly affects the range of problems that is possible to study. Additionally, as biomedical problems are often extremely complicated, the basic components of software frameworks must be generic enough to be applicable to a wide range of problems. For instance, a realistic simulation of a heart beat might involve coupling models for the electrical pulse through the heart, the elasticity of the heart when contracting and expanding, and the partially turbulent blood flow in the heart chambers. One of the major challenges in the Computational Middleware project is to develop software components that combine generality and efficiency.
The activity of the Computational Middleware project spans both academic research and pure software development. The research topics cover parallel computing, scientific software engineering, the design of middleware interfaces, and the design of interfaces for coupling complete simulators. In addition, we develop and maintain a series of software projects. Some of the most important ones that experienced significant improvements in 2007 are listed below.
- FEniCS: A collection of tools with the purpose of automating computational mathematical modeling. Several international institutions contribute to this software collection.
- FFC: A compiler that translates high-level descriptions of finite element variational forms into efficient C++ code (part of FEniCS).
- SyFi: An alternative to FFC based on symbolic computing of finite elements (part of FEniCS).
- DOLFIN: A modern C++ library for the generic tasks in finite element computations (part of FEniCS).
- PyCC: A problem solving environment for solving partial differential equations by finite element methods. PyCC is based on SyFi and DOLFIN.
- F2PY: A tool for convenient coupling of Python and Fortran code.
- Instant: A tool for inlining efficient C/C++ code in Python programs.
- UFC: An interface specification for the coupling of general finite element libraries to problem-specific descriptions of a finite element problem (part of FEniCS).
- Swiginac: A tool that makes it possible for a Python program to conveniently access the GiNaC C++ package for symbolic computations (swiginac.berlios.de).
- SciTools: A set of tools for enhancing Matlab-style computing and visualization with the powerful Python platform (code.google.com/p/scitools).
- Viper: A tool based on VTK for convenient visualization of scalar fields.
The staff in the Computational Middleware project consists of both researchers and developers, reflecting the dual nature of scientific software development and engineering.