An Object-oriented Environment for Developing Finite Element Codes for Multi-disciplinary Applications

The objective of this work is to describe the design and implementation of a framework for building multi-disciplinary finite element programs. The main goals are generality, reusability, extendibility, good performance and memory efficiency. Another objective is preparing the code structure for team development to ensure the easy collaboration of experts in different fields in the development of multi-disciplinary applications.Kratos, the framework described in this work, contains several tools for the easy implementation of finite element applications and also provides a common platform for the natural interaction of different applications. To achieve this, an innovative variable base interface is designed and implemented. This interface is used at different levels of abstraction and showed to be very clear and extendible. A very efficient and flexible data structure and an extensible IO are created to overcome difficulties in dealing with multi-disciplinary problems. Several other concepts in existing works are also collected and adapted to coupled problems. The use of an interpreter, of different data layouts and variable number of dofs per node are examples of such approach.In order to minimize the possible conflicts arising in the development, a kernel and application approach is used. The code is structured in layers to reflect the working space of developers with different fields of expertise. Details are given on the approach chosen to increase performance and efficiency. Examples of application of Kratos to different multidisciplinary problems are presented in order to demonstrate the applicability and efficiency of the new object oriented environment.

[1]  Göran Sandberg,et al.  Using CORBA middleware in finite element software , 2006, Future Gener. Comput. Syst..

[2]  R. Codina Pressure Stability in Fractional Step Finite Element Methods for Incompressible Flows , 2001 .

[3]  Alberto Cardona,et al.  Design of a new finite element programming environment , 1994 .

[4]  E. Oñate,et al.  Neural networks for variational problems in engineering , 2008 .

[5]  Robert Ian Mackie Object oriented programming of the finite element method , 1992 .

[6]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[7]  A. Huerta,et al.  Finite Element Methods for Flow Problems , 2003 .

[8]  Todd L. Veldhuizen,et al.  Will C++ Be Faster than Fortran? , 1997, ISCOPE.

[9]  William H. Press,et al.  Numerical recipes in C. The art of scientific computing , 1987 .

[10]  Steve Vinoski,et al.  CORBA: integrating diverse applications within distributed heterogeneous environments , 1997, IEEE Commun. Mag..

[11]  A. Kirsch An Introduction to the Mathematical Theory of Inverse Problems , 1996, Applied Mathematical Sciences.

[12]  Ph. Menétrey,et al.  Object-oriented non-linear finite element analysis: Application to J2 plasticity , 1993 .

[13]  Andrew W. Appel,et al.  Modern Compiler Implementation in ML , 1997 .

[14]  R.M.V. Pidaparti,et al.  Dynamic analysis of structures using object-oriented techniques , 1993 .

[15]  Eugenio Oñate,et al.  Open tools for electromagnetic simulation programs , 2006 .

[16]  Ed Anderson,et al.  LAPACK Users' Guide , 1995 .

[17]  Pekka Orponen,et al.  General-Purpose Computation with Neural Networks: A Survey of Complexity Theoretic Results , 2003, Neural Computation.

[18]  Pierre Pegon,et al.  Improving modularity in object-oriented finite element programming , 1997 .

[19]  I. Klapka,et al.  INTERPRETER OOFELIE FOR PDES , 2000 .

[20]  Thomas Zimmermann,et al.  Object-oriented finite element in programming: II: A prototype program in Smalltalk , 1992 .

[21]  Gregory R. Miller,et al.  An object-oriented approach to structural analysis and design , 1991 .

[22]  Charbel Farhat,et al.  Partitioned analysis of coupled mechanical systems , 2001 .

[23]  G. H. Gonnet,et al.  Handbook of algorithms and data structures: in Pascal and C (2nd ed.) , 1991 .

[24]  R. I. Mackie Using objects to handle complexity in finite element software , 2005, Engineering with Computers.

[25]  Donald E. Knuth,et al.  The art of computer programming, volume 3: (2nd ed.) sorting and searching , 1998 .

[26]  Todd L. Veldhuizen,et al.  Expression templates , 1996 .

[27]  Dominique Eyheramendy,et al.  Object-oriented finite element programming: an interactive environment for symbolic derivations, application to an initial boundary value problem , 1996 .

[28]  Eugenio Oñate,et al.  Possibilities of finite calculus in computational mechanics , 2004 .

[29]  O. C. Zienkiewicz,et al.  The Finite Element Method: Its Basis and Fundamentals , 2005 .

[30]  Simon Haykin,et al.  Neural Networks: A Comprehensive Foundation , 1998 .

[31]  T. Zimmermann,et al.  Object-oriented finite elements I. Principles of symbolic derivations and automatic programming , 1996 .

[32]  Thomas Zimmermann,et al.  Object-oriented finite element programming: I: Governing principles , 1992 .

[33]  Daniel R. Edelson Smart Pointers: They're Smart, But They're Not Pointers , 1992, C++ Conference.

[34]  A. Huerta,et al.  Finite Element Methods for Flow Problems , 2003 .

[35]  Donald W. White,et al.  A matrix class library in C++ for structural engineering computing , 1995 .

[36]  T. Zimmermann,et al.  Object-oriented finite elements II. A symbolic environment for automatic programming , 1996 .

[37]  C. S. Krishnamoorthy,et al.  AUTOMATING FINITE ELEMENT DEVELOPMENT USING OBJECT ORIENTED TECHNIQUES , 1993 .

[38]  R. Codina Stabilized finite element approximation of transient incompressible flows using orthogonal subscales , 2002 .

[39]  ZimmermannThomas,et al.  Object-oriented finite element programming: I , 1992 .

[40]  Donald E. Knuth,et al.  The Art of Computer Programming: Volume 3: Sorting and Searching , 1998 .

[41]  T. Zimmermann,et al.  Object-oriented finite elements III. Theory and application of automatic programming , 1998 .

[42]  Eugenio Oñate,et al.  To mesh or not to mesh. That is the question , 2006 .

[43]  W. Bangerth,et al.  deal.II—A general-purpose object-oriented finite element library , 2007, TOMS.

[44]  Alfred V. Aho,et al.  Data Structures and Algorithms , 1983 .

[45]  Jun Lu,et al.  Applying object-oriented design to finite element programming , 1993, SAC '93.

[46]  Graham C. Archer,et al.  Object-Oriented Finite Element Analysis , 1996 .

[47]  E. Oñate,et al.  The particle finite element method. An overview , 2004 .

[48]  A. Logg Automating the Finite Element Method , 2007, 1112.0433.

[49]  K. Bathe Finite Element Procedures , 1995 .

[50]  Eugenio Oñate,et al.  A Monolithic FE Formulation for the Analysis of Membranes in Fluids , 2009 .

[51]  Carlos A. Felippa,et al.  Partitioned analysis for coupled mechanical systems , 1988 .

[52]  Philippe Remy Bernard Devloo,et al.  OBJECT ORIENTED PROGRAMMING IN SCIENTIFIC COMPUTATIONS: THE BEGINNING OF A NEW ERA , 1991 .

[53]  S. Banerjee,et al.  A FRAMEWORK FOR INTERACTIVE COMPUTATIONAL ANALYSIS IN GEOMECHANICS , 1995 .

[54]  Alberto Cardona,et al.  An Object-Oriented Implementation of the Finite Element Method for Coupled problems , 1998 .

[55]  Eugenio Oñate,et al.  Fluid–structure interaction problems with strong added‐mass effect , 2009 .

[56]  Y. Dubois-Pelerin Object-oriented finite elements , 1992 .

[57]  Graham C. Archer,et al.  A new object-oriented finite element analysis program architecture , 1999 .

[58]  Alfred V. Aho,et al.  Principles of Compiler Design , 1977 .

[59]  Ricardo O. Foschi,et al.  Object-oriented finite element analysis , 1990 .

[60]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[61]  Wilfried B. Krätzig,et al.  Object-Oriented Finite Element Modeling , 1993 .

[62]  Eugenio Oñate,et al.  Analysis of some partitioned algorithms for fluid‐structure interaction , 2010 .

[63]  Eugenio Oñate,et al.  The particle finite element method: a powerful tool to solve incompressible flows with free‐surfaces and breaking waves , 2004 .

[64]  Eugenio Oñate,et al.  The meshless finite element method , 2003 .

[65]  Yousef Saad,et al.  Iterative methods for sparse linear systems , 2003 .

[66]  Antonia Larese,et al.  Validation of the particle finite element method (PFEM) for simulation of free surface flows , 2008 .

[67]  Thomas Zimmermann,et al.  Object-oriented finite element programming: III. An efficient implementation in C++ , 1993 .

[68]  Eugenio Oñate,et al.  Advances in the particle finite element method for the analysis of fluid-multibody interaction and bed erosion in free surface flows , 2008 .

[69]  Todd L. Veldhuizen,et al.  Arrays in Blitz++ , 1998, ISCOPE.

[70]  H. Dietz,et al.  To mesh or not to mesh , 2009, The Australian & New Zealand journal of obstetrics & gynaecology.

[71]  Gregory R. Miller Coordinate-free isoparametric elements , 1993 .