Abstract
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.
Similar content being viewed by others
References
Boost serialization library. http://www.boost.org/libs/serialization/doc/index.html
Papadrakakis M, Oñate E, Schrefler B (eds) (2007) Updated Lagrangian formulation of a quasi-incompressible fluid element, Ibiza, Spain, Proceedings. CIMNE, Barcelona
ABAQUS Inc. ABAQUS Scripting Reference Manual
ABAQUS Inc. ABAQUS Scripting User’s Manual
Aho AV, Sethi R, Ullman JD (1986) Compilers principles, techniques and tools. Addison-Wesley, Reading
Aho AV, Ullman JD (1978) Principles of compiler design. Addison-Wesley, Reading
Aho AV, Ullman JD, Hopcroft JE (1983) Data structures and algorithms. Addison-Wesley, Reading
Anderson E, Bai Z, Bischof C, Blackford S, Demmel J, Dongarra J, Croz JD, Greenbaum A, Hammarling S, McKenney A, Sorensen D (1995) LAPACK users’ guide, 2nd edn. Society for Industrial and Applied Mathematics, Philadelphia
Appel AW, Ginsburg M (1999) Modern compiler implementation in C. Cambridge University Press, Cambridge
Archer GC (1996) Object-oriented finite element analysis. PhD thesis, University of California at Berkeley
Archer GC, Fenves G, Thewalt C (1999) A new object-oriented finite element analysis program architecture. Comput Struct 70(1):63–75
Bangerth W (2000) Using modern features of C++ for adaptive finite element methods: Dimension-independent programming in deal.II. In: Deville M, Owens R (eds) Proceedings of the 16th IMACS World congress 2000, Lausanne, Switzerland, Document Sessions/118-1
Bangerth W, Hartmann R, Kanschat G. deal.II Differential equations analysis library, Technical reference. http://www.dealii.org
Bangerth W, Hartmann R, Kanschat G (2006) deal.II—a general purpose object oriented finite element library. Technical Report ISC-06-02-MATH, Institute for Scientific Computation, Texas A&M University
Bangerth W, Kanschat G (1999) Concepts for object-oriented finite element software—the deal.II library. Preprint 99-43 (SFB 359), IWR Heidelberg, Oct. 1999
Bathe K-J (1996) Finite element procedures. Prentice-Hall, New York
Cardona A, Klapka I, Geradin M (1994) Design of a new finite element programming environment. Eng Comput 11(4):365–381
Codina R (2001) Pressure stability in fractional step finite element methods for incompressible flows. J Comput Phys 170:112140
Codina R (2002) Stabilized finite element approximation of transient incompressible flows using orthogonal subscales. Comput Methods Appl Mech Eng 191(39):4295–4321
Dadvand P, Lopez R, Oñate E (2006) Artificial neural networks for the solution of inverse problems. In: ERCOFTAC
Dadvand P, Mora J, González C, Arraez A, Ubach P, Oñate E (2002) Kratos: An object-oriented environment for development of multi-physics analysis software. In: Proceedings of the WCCM V fifth world congress on computational mechanics, July 2002
Donéa J, Huerta A (2003) Finite element methods for flow problems. Wiley, New York
Dubois-Pélerin Y, Pegon P (1997) Improving modularity in object-oriented finite element programming. Commun Numer Methods Eng 13:193–198
Dubois-Pèlerin Y, Zimmermann T (1993) Object-oriented finite element programming: Iii. an efficient implementation in C++. Comput Methods Appl Mech Eng 108(1–2):165–183
Dubois-Pèlerin Y, Zimmermann T, Bomme P (1992) Object-oriented finite element in programming: Ii. a prototype program in smalltalk. Comput Methods Appl Mech Eng 98(3):361–397
Edelson DR (1992) Smart pointers: They’re smart, but they’re not pointers. Technical report, Santa Cruz, CA, USA
Eyheramendy D, Zimmermann T (1996) Object-oriented finite element programming: an interactive environment for symbolic derivations, application to an initial boundary value problem. Adv Eng Softw 27(1–2):3–10
Eyheramendy D, Zimmermann T (1996) Object-oriented finite elements ii. a symbolic environment for automatic programming. Comput Methods Appl Mech Eng 132(3):277–304(28)
Eyheramendy D, Zimmermann T (1998) Object-oriented finite elements iii. theory and application of automatic programming. Comput Methods Appl Mech Eng 154(1):41–68(28)
Felippa CA, Geers TL (1988) Partitioned analysis of coupled mechanical systems. Eng Comput 5:123–133
Felippa CA, Park KC, Farhat C (2001) Partitioned analysis of coupled mechanical systems. Comput Methods Appl Mech Eng 190:3247–3270
Filho JRA, Devloo PRB (1991) Object oriented programming in scientific computations: the beginning of a new era. Eng Comput 8(1):81–87
Forde BWR, Foschi RO, Stiemer SF (1990) Object-oriented finite element analysis. Comput Struct 34(3):355–374
Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley, Reading
Gonnet GH, Baeza-Yates R (1991) Handbook of algorithms and data structures: in Pascal and C, 2nd edn. Addison-Wesley, Reading
Haykin S (1994) Neural networks: A comprehensive fundation. Prentice Hall, New York
Idelshon SR, Oñate E (2006) To mesh or not to mesh. That is the question. Comput Methods Appl Mech Eng 195:4681–4696
Idelsohn SR, Oñate E, Calvo N, Pin FD (2003) The meshless finite element method. Int J Numer Methods Eng 58:893–912
Idelsohn SR, Oñate E, Pin FD (2004) The particle finite element method: a powerful tool to solve incompressible flows with free-surfaces and breaking waves. Int J Numer Methods Eng 61:964–989
Idelsohn SR, Pin FD, Rossi R, Oñate E (2009) Fluid-structure interaction problems with strong added-mass effect. Int J Numer Methods Eng 80:1261–1294. doi:10.1002/nme.2659
Kirsch A (1996) An introduction to the mathematical theory of inverse problems. Springer, Berlin
Klapka I, Cardona A, Geradin M (1998) An object oriented implementation of the finite element method for coupled problems. Rev Eur Elements Finis 7(5):469–504
Klapka I, Cardona A, Geradin M (2000) Interpreter oofelie for pdes. In: European congress on computational methods in applied sciences and engineering (ECCOMAS 2000), Barcelona
Knuth DE (1998) The art of computer programming: sorting and searching, vol 3, 2nd edn. Addison-Wesley, Reading
Laboratory for Computational Physics and Fluid Dynamics (LCP&FD). FEFLO project
Larese A, Rossi R, Oñate E, Idelsohn SR (2008) Validation of the particle finite element method (pfem) for simulation of free surface flows. Eng Comput 25:385–425
Lindemann J, Dahlblom O, Sandberg G (2006) Using Corba middleware in finite element software. Future Gener Comput Syst 22(1–2):158–193
Logg A (2007) Automating the finite element method. Arch Comput Methods Eng 14(2):93–138
Lu J, White D, Chen W-F (1993) Applying object-oriented design to finite element programming. In: SAC ’93: proceedings of the 1993 ACM/SIGAPP symposium on applied computing. ACM, New York, pp 424–429
Lu J, White DW, Chen W-F, Dunsmore HE (1995) A matrix class library in C++ for structural engineering computing. Comput Struct 55(1):95–111
López R. Flood: an open source neural networks C++ library. CIMNE
López R, Balsa-Canto E, Oñate E (2008) Neural networks for variational problems in engineering. Int J Numer Methods Eng 75(11):1341–1360
Mackie RI (1992) Object oriented programming of the finite element method. Int J Numer Methods Eng 35(2):425–436
Mackie RI (1997) Using objects to handle complexity in finite element software. Eng Comput 13(2):99–111
Maplesoft. Maple’s documentation
MathWorks. Matlab’s documentation
Menetrey P, Zimmermann T (1993) Object-oriented non-linear finite element analysis: application to j2 plasticity. Comput Struct 49(5):767–773
Miller G (1991) An object-oriented approach to structural analysis and design. Comput Struct 40(1):75–82
Miller G (1994) Coordinate-free isoparametric elements. Comput Struct 49(6):1027–1035
Miller GR, Banerjee S, Sribalaskandarajah K (1995) A framework for interactive computational analysis in geomechanics. Comput Geotech 17(1):17–37
Mora J, OtÃn R, Dadvand P, Escolano E, Pasenau MA, Oñate E (2006) Open tools for electromagnetic simulation programs. COMPEL 25(3):551–564
Mount D, Arya S (1997) Ann: A library for approximate nearest neighbor searching. citeseer.ist.psu.edu/mount97ann.html
Oñate E (2004) Possibilities of finite calculus in computational mechanics. Int J Numer Methods Eng 60(1):255–281
Oñate E, Idelsohn S, Celigueta M, Rossi R (2008) Advances in the particle finite element method for the analysis of fluid-multibody interaction and bed erosion in free surface flows. Comput Methods Appl Mech Eng 197:1777–1800
Oñate E, Idelsohn S, Pin FD, Aubry R (2004) The particle finite element method. An overview. Int J Comput Methods 1(2):267–307
Open Engineering. OOFELIE
Patzák B. OOFEM documentation. Czech Technical University, Faculty of Civil Engineering, Department of Structural Mechanics
Patzák B, Bittnar Z (1999) Object oriented finite element modeling. Acta Polytech 39(2):99–113
Pidaparti RMV, Hudli AV (1993) Dynamic analysis of structures using object-oriented techniques. Comput Struct 49(1):149–156
Press WH, Vetterling WT, Teukolsky SA, Flannery BP (2002) Numerical recipes in C++: the art of scientific computing. Cambridge University Press, Cambridge
Raphael B, Krishnamoorthy CS (1993) Automating finite element development using object oriented techniques. Eng Comput 10(3):267–278
Ribó R, Pasenau M, Escolano E, Ronda JSP. GiD user manual. CIMNE, Barcelona
Ribó R, Pasenau M, Escolano E, Ronda JSP, González LF. GiD reference manual. CIMNE, Barcelona
Rossi R (2005) Light weight structures: structural analysis and coupling issues. PhD thesis, University of Bologna
Rossi R, Idelsohn SR, Oñate E (2006) On the possibilities and validation of the particle finite element method (pfem) for complex engineering fluid flow problems. In: Proceedings of ECCOMAS CFD 2006, Egmond aan Zee, The Netherlands
Rossi R, Oñate E (2010) Validation of a fsi simulation procedure—bridge aerodynamics modelproblem. Eng Comput (to appear)
Rossi R, Oñate E (2010) Analysis of some partitioned algorithms for fluid-structure interaction. Eng Comput 27:20–56. doi:10.1108/02644401011008513
Rossi R, Ryzhakov P, Oñate E (2009) A monolithic fe formulation for the analysis of membranes in fluids. Int J Space Struct 24(4):205–210
Rossi R, Vitaliani R (2004) Numerical coupled analysis of flexible structures subjected to the fluid action. In: 5th PhD symposium in civil engineering, Delft
Saad Y (2003) Iterative methods for sparse linear systems. Society for Industrial and Applied Mathematics, Philadelphia
Å Ãma J, Orponen P (2003) General-purpose computation with neural networks: A survey of complexity theoretic results. Neural Comput 15(12):2727–2778
Touzani R. OFELI documentation
Touzani R (2002) An object oriented finite element toolkit. In: Proceedings of the fifth world congress on computational mechanics (WCCM V)
Veldhuizen TL (1995) Expression templates. C++ Rep 7(5):26–31
Veldhuizen TL (1998) Arrays in blitz++. In: Proceedings of the 2nd international scientific computing in object-oriented parallel environments (ISCOPE’98). Lecture notes in computer science. Springer, Berlin
Veldhuizen TL, Jernigan ME (1997) Will C++ be faster than Fortran? In: Proceedings of the 1st international scientific computing in object-oriented parallel environments (ISCOPE’97). Springer, Berlin, Heidelberg, New York, Tokyo
Vinoski S (1997) CORBA: integrating diverse applications within distributed heterogeneous environments. IEEE Commun Mag, 14(2)
Wolfram Research. Mathematica’s documentation
Zienkiewicz OC, Taylor RL, Zhu JZ (2007) Finite element method: its basis and fundamentals. Butterworth-Heinemann, Stoneham
Zimmermann T, Dubois-Pèlerin Y, Bomme P (1992) Object-oriented finite element programming: I: Governing principles. Comput Methods Appl Mech Eng 98(2):291–303
Zimmermann T, Eyheramendy D (1996) Object-oriented finite elements i. principles of symbolic derivations and automatic programming. Comput Methods Appl Mech Eng 132(3):259–276 (18)
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Dadvand, P., Rossi, R. & Oñate, E. An Object-oriented Environment for Developing Finite Element Codes for Multi-disciplinary Applications. Arch Computat Methods Eng 17, 253–297 (2010). https://doi.org/10.1007/s11831-010-9045-2
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11831-010-9045-2