Saxe-Coburg Publications Logo
Saxe-Coburg Publications
Computational Technology Publications
TRENDS IN ENGINEERING COMPUTATIONAL TECHNOLOGY
Edited by: M. Papadrakakis and B.H.V. Topping
Chapter 2

Object-Oriented Finite Elements: From Smalltalk to Java

D. Eyheramendy1 and F. Oudin-Dardun2
1Ecole Centrale de Marseille - LMA, CNRS UPR7051, Marseille, France
2Institut Camille Jordan / CDCSP / ISTIL, CNRS UMR5208, Université de Lyon, Université Lyon 1, Villeurbanne, France

Keywords: object-oriented programming, multiphysics, finite elements, nonlinear mechanics, parallel programming.

Since the middle of the 1980s, the object-oriented programming has been gaining more and more attention in the computational mechanics community. Although the most popular language used today is C++, several languages have been used since the beginning of the object-oriented era. From an industrial point of view, this choice remains crucial and beyond the technical problems, it may have tremendous economic consequences. The choice of the programming language may have a dramatic impact on the software architecture and cannot be considered as a simple technical choice. The new problems that are to be solved in modern computational mechanics involve more and more complex phenomena at different space and time scales. This implies in general the growth of the size of the numerical problems to be solved in this context. The use of parallel processing strategies that are to be implemented on heterogeneous computer systems may be an answer to solve this kind of problem. Despite the developments of both programming languages and associated programming methodologies and tools, and high level commercial computational tools (ABAQUS, Nastran, COMSOL,...), the development of a new computational model in mechanics may still be tremendous. Roughly speaking, commercial tools generally do not offer enough flexibility to introduce new complex problems. Moreover, they are strongly system dependent (computer system, operating system,...). We advocate that a global philosophy involving a single programming paradigm in a complete environment capable of managing hardware (memory, network, GUI,...) is needed to handle this global complexity. In this paper, we address the problem of the development of computational tools from a global point of view. A first problem in modern computational mechanics deals with complexity of the problem to be solved: physical problem, mathematical algorithms,... A second one is the complexity of the computer system on which the code is implemented, including the networking aspects. The latter is essential for the development of large scale simulation tools. Environments such as Java or C# (i.e. .NET) bring a global answer to this multiple complexity. The object-oriented programming has shown in the past its capability to deal with complexity. However, additional features are needed to achieve reliability and generality in the developments, e.g. to ensure portability on complex systems in the context of parallel programming. The global approach proposed here offers both a high level object-oriented programming language and high level libraries. Programming using a single concept and language, i.e. without the requirement of external libraries or tools, somehow simplifies the developments of finite element codes. The homogeneity of codes guarantees a faster extension and easier portability typical in the case of distributed computing. At last, the Internet may become in the near future an important feature for the deployment of computational tools. The technologies presented in this chapter offer a natural potential for the portability of computational tools.

Return to the contents page
Return to the book description