Publication details for Dr Charles AugardeLazarov, B. & Augarde, C.E. (2005). Object Oriented Design of Parallel and Sequential Finite Element Codes. 13th ACME Conference, Sheffield, UK.
- Publication type: Edited works: conference proceedings
Author(s) from Durham
The Finite Element (FE) Method is a widely accepted general purpose numerical modelling
tool. Typical FE programs consist of several hundred thousand lines of procedural code and
many complex data structures. Alternative approaches, based on object oriented programming
(OOP) concepts, are becoming popular as evidenced by the exhaustive bibliography of the
use of OOP techniques in FEM . OOP is based on the idea of \objects" that encapsulate
both the data and the operations on the data. The implementation details are hidden and
every object denes itself clear interfaces for communication. This makes code very simple to
maintain and modify, and hence attractive for use on research FE codes.
In this paper we describe aspects of the design and implementation of an OOP based FE
code primarily for use in large geomechanics simulations. The code allows various types of FE
analysis, in both sequential and parallel computing environments, as well as the modelling of
multi-eld physical phenomena. A novel feature of this work is that, instead of using direct
generalisation of the data structures used in a procedural code (i.e. representing a domain as
an object and performing the calculations on the domain) each of the nite elements in this
code is dened as a separate object. In addition, material constitutive behaviour and geometric
primitives are also represented as objects. This gives great
exibility for adding new elements,
materials or modelling new physical phenomena. Combination of dierent element types, for
instance mixing structural (i.e. bending) elements with continuum elements, is also made
simpler. Since the mathematical operations performed by an element are very similar to the
operations performed by constraints or external loads, no distinction is made between them.
Extending this idea further, every operation on elements, for example removing or adding
elements to the model, is also represented as an element object.
The performance of a sequential FE code depends on the performance of the individual processor,
the latency for access to data in the local memory and its bandwidth. In a parallel
implementation performance additionally depends on the message activity, the load balancing
and the bandwidth of message passing interface between the separate processes. The modular
structure in the object oriented (OO) code claries the communication patterns and makes
data decomposition and load balancing easier. This signicantly improves scalability of the