Int. J. Computational Science and Engineering, Vol. 4, No. 4, 2009 221

Preface

Hans Petter Langtangen Simula Research Laboratory, P.O. Box 134, NO-1325 Lysaker,

Department of Informatics, University of , P.O. Box 1080, Blindern N-0316 Oslo, Norway E-mail: [email protected] Michael Thuné Department of Information Technology, Uppsala University, P.O. Box 337, SE-751 05 Uppsala, Sweden E-mail: [email protected]

Biographical notes: Hans Petter Langtangen is a Professor of Mathematical Modelling at the Department of Informatics, , and a director of the Centre for Biomedical Computing at Simula Research Laboratory. His research concerns numerical methods for partial differential equations, scientific software, and applications to problems in mechanics. He is a principal developer of Diffpack, a software framework for solving partial differential equations, and the author of several books on mathematical modelling OG scientific programming.

Michael Thuné is a Professor of Scientific Computing at the Department of Information Technology, Uppsala University. While his work in early years concerned development of numerical methods, he has over a period of almost two decades built a research group performing fundamental research on how to design software frameworks that significantly simplify the implementation of numerical methods for solving partial differential equations on parallel computers.

Software is a crucial prerequisite for Computational key features. Complicated scientific software should also Science and Engineering (CSE). However, while other key be easy to use to solve scientific or engineering ingredients such as mathematical modelling and numerical problems. The overall challenge is to find ways to construct analysis are regarded as research areas, it is not as widely numerical software so that all these different goals are met recognised that the construction of software for CSE gives simultaneously. The workshop provided a forum for rise to highly important research issues. researchers to present recent advances in this area. “Software Issues in Computational Science and This special issue of IJCSE contains papers based Engineering” was the theme of a workshop at Uppsala on some of the material presented at the workshop. University, Sweden, 15–16 August, 2007. The event was The contributions can broadly be grouped into three organised jointly by Uppsala University and Simula themes: Software Engineering/Architecture; Implementation Research Laboratory and was held in conjunction with the for Efficient Execution of Software; and Automatic annual meeting of IFIP Working Group 2.5 (‘Numerical Software Construction. Software’). See http://www.it.uu.se/research/conf/SCSE07 The Software Engineering/Architecture theme is for more information. addressed in the first three contributions. One key aspect The workshop addressed challenging research of software engineering is to design software architectures issues regarding software for numerical computations. that reduce the costs for implementation, modification, Ideally, adaptation to new applications should be flexible, and maintenance of software. In this context the concept and extension to incorporate new numerical techniques of ‘software framework’ is central. straightforward. At the same time the software should One characteristic feature of a software framework execute extremely efficiently on various high-performance is that it should support variability, to allow for construction computing platforms. Accuracy and robustness are other of a variety of specific programs. The aspects that can

Copyright © 2009 Inderscience Enterprises Ltd. 222 H.P. Langtangen and M. Thuné be varied within the framework are known as its ‘variation Multi-language programming is an old idea that has attained points’. The contribution by Haveraaen and Friis is an renewed interest recently as a consequence of component argument for ‘coordinate-free numerics’ as an elegant way based software design, where different components can to achieve the variability required in a software framework be developed in different languages. For example, it is quite for numerical solution of partial differential equations. common to develop low-level numerical components Software for Finite Element-based numerical solution in Fortran or C while components for higher-level of partial differential equations can be divided into a coordination are implemented in some language more suited general-purpose library part and a problem-specific part. to that purpose. In order for these different components The paper by Alnaes et al. presents a unified framework to to interact smoothly there is need for some kind of handle the interface and communication between the two automatic support. The paper by Peterson presents one such parts. Such interfaces, if adopted as a standard, may ease the automatisation effort, for connecting Python and Fortran integration of different types of Finite Element software. components. Due to the importance of software in CSE, training Automatisation is not least useful for those parts of of future CSE specialists should include experience software development that are highly non-trivial to carry out with realistic software engineering issues. At TU München, by hand. Parallelisation is an example. Pflaum and Rahimi the developers of a CSE education has taken this into describes how to use C++ template techniques to automatise account by designing a project course where students that task in a tricky case: staggered grid-based computations develop software for scientific computing. The paper by for numerical solution of partial differential equations. Bader et al. gives a ‘practice and experience’ presentation of The final contribution of this special issue closes the this initiative. loop by connecting the theme of automatisation to the topic The theme of efficient implementation is addressed in of software frameworks discussed in the first two papers the next three papers. A current trend is to enhance the of the issue. In the design of software frameworks, there performance of numerical software by carrying out all or is a conflict between efficient execution on one hand parts of the computations on Graphics Processor Units and flexibility for the user on the other. For efficient (GPUs). How to utilise GPUs in a programmer-friendly way execution, it is preferable that all decisions about specific and thereby increase the computational efficiency is the choices at variation points are made no later than at focus of the contribution by Gödekke et al. compile-time, thus allowing for the compiler to make Recent advances in processor architectures, based on the efficient optimisations. On the other hand, the user will have introduction of multiple cores, present both possibilities and more flexibility if the decisions can be delayed until challenges for developers of CSE software. In their paper, run-time. In frameworks based on statically compiled Wallin et al. give an overview of the issues involved. languages this represents a challenging conflict. Quintino One key to high performance in numerical comptuations and DeConinck describe a way to overcome the conflict in a is to represent data in a way that can make efficient use of C++-based framework, by using template-based techniques the computer memory hierarchy and parallel memory units. and run-time compilation to delay decisions until run-time, In software for numerical solution of partial differential while still producing highly efficient executable code. equations, the key data structure is the computational The three themes covered by the special issue are mesh. Logg’s paper is about a general-purpose C++ mesh strongly interrelated. The main challenge for developers of class with a storage scheme that allows for both convenient CSE software is to construct accurate and robust software representation of a variety of mesh types and efficient that simultaneously meets the two conflicting goals of high computations with the mesh data. human efficiency at application development-time and high The final three papers of this special issue address performance at run-time. We hope that the readers of this the theme of automatisation. One aspect of this is to special issue will get a good overview of issues involved in provide automatic support for multi-language programming. this exciting area of research.