Computational Technology Publications
TRENDS IN ENGINEERING COMPUTATIONAL TECHNOLOGY
Edited by: M. Papadrakakis and B.H.V. Topping
Finite Element Software Design for Today's Computers
Civil Engineering, School of Engineering, Physics and Mathematics, University of Dundee, United Kingdom
Keywords: distributed computing, finite element analysis, object-oriented, parallel processing, component oriented.
Over the last fifty years computers have changed beyond measure. In recent years changes have taken place which have important consequences for software design. These are the increasing importance of distributed computing, and the prevalence of multi-core computers. It is now the case that practically every new desktop and notebook computer has a dual core processor, and quad core computers are available at a modest price. The internet and local networks are of ever increasing importance, with even home computers being networked together. In the past advantages could be taken of developments in hardware almost automatically by the very fact that the processors were faster and more memory was available, though of course software developments were made as well. With these recent developments changes in software design are essential in order to take full advantage of the new capabilities. Parallel computing used to be a somewhat specialised area, but with multi-core computers being commonplace this is no longer the case.
This paper will focus on software design issues relevant to this new environment, demonstrating how object and component oriented methods can be used to develop flexible software in the following areas:
Component oriented design is used to decouple the solver system from the finite element system. This means that development of either system can be carried out independently, and one can be changed without requiring changes in the other.
The methods can be applied to domain decomposition solution methods and in a parallel manner. This enables advantage to be taken of multi-core processors and distributed systems. The component oriented design ensures that the logic of the system is blind to whether the solution is being carried out on the local computer, or using a remote server.
The techniques are further applied to conjugate gradient solvers. A particular advantage here is that component oriented design enables pre-conditioners to be written in a "plug and play" manner. This means that design of pre-conditioners can be carried out independently from the rest of the solver framework. The advantages are particularly well demonstrated when considering the Schur complement approach.
Finally, a high-level view of a complete system is given, showing how the various aspects fit together. It is believed that there are many advantages to be gained by using component oriented methods in designing scientific software for today's computing environment.