Computational & Technology Resources
an online resource for computational,
engineering & technology publications
Civil-Comp Proceedings
ISSN 1759-3433
CCP: 91
PROCEEDINGS OF THE TWELFTH INTERNATIONAL CONFERENCE ON CIVIL, STRUCTURAL AND ENVIRONMENTAL ENGINEERING COMPUTING
Edited by: B.H.V. Topping, L.F. Costa Neves and R.C. Barros
Paper 272

Designing Inherently Parallel Software for Finite Element Analysis

R.I. Mackie

Civil Engineering, School of Engineering, Physics and Mathematics, University of Dundee, United Kingdom

Full Bibliographic Reference for this paper
R.I. Mackie, "Designing Inherently Parallel Software for Finite Element Analysis", in B.H.V. Topping, L.F. Costa Neves, R.C. Barros, (Editors), "Proceedings of the Twelfth International Conference on Civil, Structural and Environmental Engineering Computing", Civil-Comp Press, Stirlingshire, UK, Paper 272, 2009. doi:10.4203/ccp.91.272
Keywords: distributed computing, finite element analysis, object-oriented, parallel processing, component oriented.

Summary
Until recently the majority of desktop computers and laptops contained a single processor. However, it is now the case that almost all computers have dual or quad core processors. This means that all computers are effectively small parallel processors. This has major consequences in terms of software design. In the days of single processors existing software would automatically benefit from the seemingly continual increases in execution speed. This is not the case with multi-core computers. Software has to be specifically designed to exploit the multi-core capabilities of a machine. As well as having multi-core processors, the world of computing is increasingly distributed. All this adds an extra level of complexity to software development, and this complexity can be a barrier to progress. Therefore it is desirable to develop methodologies and frameworks that make it relatively easy to build software that maximises the use of today's computer architecture.

Mathematically, domain decomposition methods present the most suitable means of achieving parallelism as they break the work up into large segments, much of which can be carried out in parallel. From a software engineering perspective, component and object oriented methods are used. Key objects for mathematical, structural and finite element models have a ForEach method. This will carry out operations in parallel for each sub-domain, sub-structure or sub-mesh. The result is that all the parallelism is contained within the ForEach methods, so the programmer can focus on the mathematical aspects of an algorithm without having to be concerned with parallel matters. This is of particular advantage in non-linear algorithms. Parallelism is achieved either by using multi-cores and/or using distributed computers.

The methods were tested on linear equation solvers, linear and non-linear finite element problems. In the latter two cases, mesh generation, equation formulation, node optimisation, and equation solution were all carried out asynchronously. Tests were carried out on various problem sizes, and machine architectures. For quad core computers the speed-ups of up to three were achieved for equation solution, and a factor of around two for the finite element problems.

Using component oriented design methods it is possible to isolate the parallel aspects of a code, and enable further code to be developed that automatically takes account of these parallel features without it increasing the complexity of the code. For instance, in the elasto-plastic example described above programming of the non-linear solution needed to focus purely on the non-linear aspects, not the parallel features.

purchase the full-text of this paper (price £20)

go to the previous paper
go to the next paper
return to the table of contents
return to the book description
purchase this book (price £140 +P&P)