Archives of Computational Methods in Engineering

, Volume 17, Issue 3, pp 253–297 | Cite as

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

  • Pooyan DadvandEmail author
  • Riccardo Rossi
  • Eugenio Oñate
Original Paper


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.


Finite Element Code Nodal Data Binary Tree Search Variable List Lexical Analyzer 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
  2. 2.
    Papadrakakis M, Oñate E, Schrefler B (eds) (2007) Updated Lagrangian formulation of a quasi-incompressible fluid element, Ibiza, Spain, Proceedings. CIMNE, Barcelona Google Scholar
  3. 3.
    ABAQUS Inc. ABAQUS Scripting Reference Manual Google Scholar
  4. 4.
    ABAQUS Inc. ABAQUS Scripting User’s Manual Google Scholar
  5. 5.
    Aho AV, Sethi R, Ullman JD (1986) Compilers principles, techniques and tools. Addison-Wesley, Reading Google Scholar
  6. 6.
    Aho AV, Ullman JD (1978) Principles of compiler design. Addison-Wesley, Reading zbMATHGoogle Scholar
  7. 7.
    Aho AV, Ullman JD, Hopcroft JE (1983) Data structures and algorithms. Addison-Wesley, Reading zbMATHGoogle Scholar
  8. 8.
    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 Google Scholar
  9. 9.
    Appel AW, Ginsburg M (1999) Modern compiler implementation in C. Cambridge University Press, Cambridge Google Scholar
  10. 10.
    Archer GC (1996) Object-oriented finite element analysis. PhD thesis, University of California at Berkeley Google Scholar
  11. 11.
    Archer GC, Fenves G, Thewalt C (1999) A new object-oriented finite element analysis program architecture. Comput Struct 70(1):63–75 zbMATHCrossRefGoogle Scholar
  12. 12.
    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 Google Scholar
  13. 13.
    Bangerth W, Hartmann R, Kanschat G. deal.II Differential equations analysis library, Technical reference.
  14. 14.
    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 Google Scholar
  15. 15.
    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 Google Scholar
  16. 16.
    Bathe K-J (1996) Finite element procedures. Prentice-Hall, New York Google Scholar
  17. 17.
    Cardona A, Klapka I, Geradin M (1994) Design of a new finite element programming environment. Eng Comput 11(4):365–381 zbMATHCrossRefGoogle Scholar
  18. 18.
    Codina R (2001) Pressure stability in fractional step finite element methods for incompressible flows. J Comput Phys 170:112140 CrossRefMathSciNetGoogle Scholar
  19. 19.
    Codina R (2002) Stabilized finite element approximation of transient incompressible flows using orthogonal subscales. Comput Methods Appl Mech Eng 191(39):4295–4321 zbMATHCrossRefMathSciNetGoogle Scholar
  20. 20.
    Dadvand P, Lopez R, Oñate E (2006) Artificial neural networks for the solution of inverse problems. In: ERCOFTAC Google Scholar
  21. 21.
    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 Google Scholar
  22. 22.
    Donéa J, Huerta A (2003) Finite element methods for flow problems. Wiley, New York CrossRefGoogle Scholar
  23. 23.
    Dubois-Pélerin Y, Pegon P (1997) Improving modularity in object-oriented finite element programming. Commun Numer Methods Eng 13:193–198 zbMATHCrossRefGoogle Scholar
  24. 24.
    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 CrossRefGoogle Scholar
  25. 25.
    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 CrossRefGoogle Scholar
  26. 26.
    Edelson DR (1992) Smart pointers: They’re smart, but they’re not pointers. Technical report, Santa Cruz, CA, USA Google Scholar
  27. 27.
    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 CrossRefGoogle Scholar
  28. 28.
    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) CrossRefGoogle Scholar
  29. 29.
    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) zbMATHCrossRefGoogle Scholar
  30. 30.
    Felippa CA, Geers TL (1988) Partitioned analysis of coupled mechanical systems. Eng Comput 5:123–133 CrossRefGoogle Scholar
  31. 31.
    Felippa CA, Park KC, Farhat C (2001) Partitioned analysis of coupled mechanical systems. Comput Methods Appl Mech Eng 190:3247–3270 zbMATHCrossRefGoogle Scholar
  32. 32.
    Filho JRA, Devloo PRB (1991) Object oriented programming in scientific computations: the beginning of a new era. Eng Comput 8(1):81–87 CrossRefGoogle Scholar
  33. 33.
    Forde BWR, Foschi RO, Stiemer SF (1990) Object-oriented finite element analysis. Comput Struct 34(3):355–374 zbMATHCrossRefGoogle Scholar
  34. 34.
    Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley, Reading Google Scholar
  35. 35.
    Gonnet GH, Baeza-Yates R (1991) Handbook of algorithms and data structures: in Pascal and C, 2nd edn. Addison-Wesley, Reading Google Scholar
  36. 36.
    Haykin S (1994) Neural networks: A comprehensive fundation. Prentice Hall, New York Google Scholar
  37. 37.
    Idelshon SR, Oñate E (2006) To mesh or not to mesh. That is the question. Comput Methods Appl Mech Eng 195:4681–4696 CrossRefGoogle Scholar
  38. 38.
    Idelsohn SR, Oñate E, Calvo N, Pin FD (2003) The meshless finite element method. Int J Numer Methods Eng 58:893–912 zbMATHCrossRefGoogle Scholar
  39. 39.
    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 zbMATHCrossRefGoogle Scholar
  40. 40.
    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 zbMATHCrossRefGoogle Scholar
  41. 41.
    Kirsch A (1996) An introduction to the mathematical theory of inverse problems. Springer, Berlin zbMATHGoogle Scholar
  42. 42.
    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 zbMATHGoogle Scholar
  43. 43.
    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 Google Scholar
  44. 44.
    Knuth DE (1998) The art of computer programming: sorting and searching, vol 3, 2nd edn. Addison-Wesley, Reading Google Scholar
  45. 45.
    Laboratory for Computational Physics and Fluid Dynamics (LCP&FD). FEFLO project Google Scholar
  46. 46.
    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 CrossRefGoogle Scholar
  47. 47.
    Lindemann J, Dahlblom O, Sandberg G (2006) Using Corba middleware in finite element software. Future Gener Comput Syst 22(1–2):158–193 Google Scholar
  48. 48.
    Logg A (2007) Automating the finite element method. Arch Comput Methods Eng 14(2):93–138 zbMATHCrossRefMathSciNetGoogle Scholar
  49. 49.
    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 CrossRefGoogle Scholar
  50. 50.
    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 zbMATHCrossRefGoogle Scholar
  51. 51.
    López R. Flood: an open source neural networks C++ library. CIMNE Google Scholar
  52. 52.
    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 zbMATHCrossRefGoogle Scholar
  53. 53.
    Mackie RI (1992) Object oriented programming of the finite element method. Int J Numer Methods Eng 35(2):425–436 zbMATHCrossRefGoogle Scholar
  54. 54.
    Mackie RI (1997) Using objects to handle complexity in finite element software. Eng Comput 13(2):99–111 CrossRefGoogle Scholar
  55. 55.
    Maplesoft. Maple’s documentation Google Scholar
  56. 56.
    MathWorks. Matlab’s documentation Google Scholar
  57. 57.
    Menetrey P, Zimmermann T (1993) Object-oriented non-linear finite element analysis: application to j2 plasticity. Comput Struct 49(5):767–773 zbMATHCrossRefGoogle Scholar
  58. 58.
    Miller G (1991) An object-oriented approach to structural analysis and design. Comput Struct 40(1):75–82 zbMATHCrossRefGoogle Scholar
  59. 59.
    Miller G (1994) Coordinate-free isoparametric elements. Comput Struct 49(6):1027–1035 CrossRefGoogle Scholar
  60. 60.
    Miller GR, Banerjee S, Sribalaskandarajah K (1995) A framework for interactive computational analysis in geomechanics. Comput Geotech 17(1):17–37 CrossRefGoogle Scholar
  61. 61.
    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 zbMATHGoogle Scholar
  62. 62.
    Mount D, Arya S (1997) Ann: A library for approximate nearest neighbor searching.
  63. 63.
    Oñate E (2004) Possibilities of finite calculus in computational mechanics. Int J Numer Methods Eng 60(1):255–281 zbMATHCrossRefGoogle Scholar
  64. 64.
    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 CrossRefGoogle Scholar
  65. 65.
    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 zbMATHCrossRefGoogle Scholar
  66. 66.
    Open Engineering. OOFELIE Google Scholar
  67. 67.
    Patzák B. OOFEM documentation. Czech Technical University, Faculty of Civil Engineering, Department of Structural Mechanics Google Scholar
  68. 68.
    Patzák B, Bittnar Z (1999) Object oriented finite element modeling. Acta Polytech 39(2):99–113 Google Scholar
  69. 69.
    Pidaparti RMV, Hudli AV (1993) Dynamic analysis of structures using object-oriented techniques. Comput Struct 49(1):149–156 CrossRefGoogle Scholar
  70. 70.
    Press WH, Vetterling WT, Teukolsky SA, Flannery BP (2002) Numerical recipes in C++: the art of scientific computing. Cambridge University Press, Cambridge Google Scholar
  71. 71.
    Raphael B, Krishnamoorthy CS (1993) Automating finite element development using object oriented techniques. Eng Comput 10(3):267–278 CrossRefGoogle Scholar
  72. 72.
    Ribó R, Pasenau M, Escolano E, Ronda JSP. GiD user manual. CIMNE, Barcelona Google Scholar
  73. 73.
    Ribó R, Pasenau M, Escolano E, Ronda JSP, González LF. GiD reference manual. CIMNE, Barcelona Google Scholar
  74. 74.
    Rossi R (2005) Light weight structures: structural analysis and coupling issues. PhD thesis, University of Bologna Google Scholar
  75. 75.
    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 Google Scholar
  76. 76.
    Rossi R, Oñate E (2010) Validation of a fsi simulation procedure—bridge aerodynamics modelproblem. Eng Comput (to appear) Google Scholar
  77. 77.
    Rossi R, Oñate E (2010) Analysis of some partitioned algorithms for fluid-structure interaction. Eng Comput 27:20–56. doi: 10.1108/02644401011008513 CrossRefGoogle Scholar
  78. 78.
    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 CrossRefGoogle Scholar
  79. 79.
    Rossi R, Vitaliani R (2004) Numerical coupled analysis of flexible structures subjected to the fluid action. In: 5th PhD symposium in civil engineering, Delft Google Scholar
  80. 80.
    Saad Y (2003) Iterative methods for sparse linear systems. Society for Industrial and Applied Mathematics, Philadelphia zbMATHGoogle Scholar
  81. 81.
    Šíma J, Orponen P (2003) General-purpose computation with neural networks: A survey of complexity theoretic results. Neural Comput 15(12):2727–2778 zbMATHCrossRefGoogle Scholar
  82. 82.
    Touzani R. OFELI documentation Google Scholar
  83. 83.
    Touzani R (2002) An object oriented finite element toolkit. In: Proceedings of the fifth world congress on computational mechanics (WCCM V) Google Scholar
  84. 84.
    Veldhuizen TL (1995) Expression templates. C++ Rep 7(5):26–31 Google Scholar
  85. 85.
    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 Google Scholar
  86. 86.
    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 Google Scholar
  87. 87.
    Vinoski S (1997) CORBA: integrating diverse applications within distributed heterogeneous environments. IEEE Commun Mag, 14(2) Google Scholar
  88. 88.
    Wolfram Research. Mathematica’s documentation Google Scholar
  89. 89.
    Zienkiewicz OC, Taylor RL, Zhu JZ (2007) Finite element method: its basis and fundamentals. Butterworth-Heinemann, Stoneham Google Scholar
  90. 90.
    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 CrossRefGoogle Scholar
  91. 91.
    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) zbMATHCrossRefGoogle Scholar

Copyright information

© CIMNE, Barcelona, Spain 2010

Authors and Affiliations

  • Pooyan Dadvand
    • 1
    Email author
  • Riccardo Rossi
    • 1
  • Eugenio Oñate
    • 1
  1. 1.International Center for Numerical Methods in Engineering (CIMNE)Technical University of CataloniaBarcelonaSpain

Personalised recommendations