Skip to main content

Research Repository

Advanced Search

Object Oriented Design of Parallel and Sequential Finite Element Codes

Lazarov, B.; Augarde, C.E.


B. Lazarov


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 [3]. 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 de nes 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 de ned 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 di erent 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 clari es the communication patterns and makes data decomposition and load balancing easier. This signi cantly improves scalability of the code.


Lazarov, B., & Augarde, C. (2005). Object Oriented Design of Parallel and Sequential Finite Element Codes.

Conference Name 13th ACME Conference
Conference Location Sheffield, UK
Publication Date 2005-04