Simulation of complex physical processes usually leads to very complex software. To effectively build such software, one must be able to compose tailored solution strategies from a range of smaller, well-tested, and independent software components. These components must have a general mathematical nature, independent of specific physical end-applications, for the composition to succeed in challenging multi-physics problems. The purpose of the Computational Middleware project is to create this type of general, reusable software components and ensure that they can utilize the computational power of modern hardware architectures. Although such work creates new scientific results in itself, the project's primary outcome will be open source software for use both in the rest of CBC and in the computational science community at large.
Following our strong record in creating finite element software for solving partial differential equations (PDEs), this branch of scientific computing will remain at the core of the Computational Middleware project. Software implementations will be distributed as part of the open source project FEniCS, with official website http://fenicsproject.org.
FEniCS has basically reached its goals with respect to generality in application areas and simplicity in use. The future emphasis is therefore to further improve the computational efficiency by computing faster and smarter. Faster computing means better utilization of parallel algorithms on large supercomputers as well as new multi-core and GPU architectures and will be a cornerstone of the increased activity in the Parallel Computing subproject. Computing smarter means utilization of adaptive, resource-optimizing numerical methods, realized in the new subproject named Adaptivity.
We remark that FEniCS is primarily about numerical solution of PDEs. Construction of geometries and generation of meshes are left to other packages (in particular VMTK for biomedical flows). We also have a tight collaboration with the company Kalkulo, which specializes in computational geometry, grid generation, and visualization.
We also remark that FEniCS is not the only software platform that is used among CBC researchers. Commercial codes as well as other open source codes are also in regular use where appropriate. Solid knowledge of the capabilities and limits of other software packages is essential to guide the further development of FEniCS, and to justify spending significant resources on writing generic software.
Our computational models are to an increasing extent applied for patient-specific biomedical simulations. To this date, the main focus has been on model testing and uncovering fundamental mechanisms that expand the knowledge base of the clinicians, but the models are rapidly approaching the use as clinical decision support tools. Such applications highlight the need for model validation and uncertainty quantification as key elements of the research. The automated error control being developed as part of the FEniCS suite constitutes one important component of this picture, but does not cover data and model errors. Therefore, we have established a new subproject Model Calibration, which aims at developing methods and software to assist validation, parameter identification, and uncertainty assessment.Five key activities in the Computational Middleware project are