Innovation in Engineering Computational Technology
Chapter
3 D. Eyheramendy
ICJ/CDCSP, Claude Bernard University Lyon 1, Villeurbanne, France LaMCoS, INSA de Lyon, Villeurbanne, France Keywords: finite elements, object-oriented programming, Java, parallel computing, symbolic computing.
This paper aims to investigate the different tracks open to design future computational frameworks in mechanics and related disciplines. More and more computational mechanics applications consider strongly coupled multi-physics, multi-scale problems. At the same time, access to multi-processor architectures has been made easier thanks, firstly, to the decreasing price of hardware, and secondly to the development of networks which permit users to associate heterogeneous hardware systems. It is of high priority to design environments capable of handling this multiple complexity. Various high-level programming environments have been helpful in the management of code complexity. Among them, object-oriented programming (OOP) has been applied to the finite element method for more than fifteen years (for example see [1] and its references). In the beginning, the approach brought new code organization, mainly based on data encapsulation and the inheritance mechanism. From a practical point of view, several languages were used: C++, CTalk, Smalltalk, Ada, and, more recently, Java. OOP still remains an active and promising domain in the design of complex numerical codes [2]. Today, symbolic frameworks represent a very promising alternative for bringing modularity in the design of computational schemes. This kind of approach, little investigated until now, offers the main advantage of allowing the front-end user to adapt the computational tool to their own problem, which is a very important feature in relation to the increased variety and complexity of models developed today (e.g. see [3,4]). At last the integration of computational tools over networks, to access either shared computational hardware (distributed or/and parallel computing) or shared software resources, is possible (e.g. see [2,5]). OOP is presented as the key point for fulfilling the requirements to design modern tools and a brief analysis of OOP since its origin permits us to justify the points mentioned in this paper. The use of symbolic concepts in the design of finite element code is advocated to speed up developments and to bring generality to codes. Roughly speaking, it is better to introduce into a finite element code a new class of methods that just a formulation for a given problem. The crucial point of code structure is then discussed. An adequate choice of programming language, here Java rather than traditional C++, offers richer code structuring capabilities. An example of development for J2 plasticity illustrates this point. The use of existing classes in a Java framework is shown on different parallel computing applications. Programming using a single concept and language, i.e. without using external libraries, should simplify the development of finite element code. The cyber infrastructure is today an important feature. We have presented a natural means of integrating a Java finite code over the Internet. The different tracks presented and illustrated in this paper are, from our point of view, of great relevance. The choice of the Java language made here to illustrate advanced structuring of code remains, of course, controversial. However, it is quite certain that the next generation of programming tools will be based on similar concepts.
References
|