Skip to main content
Log in

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

  • Original Paper
  • Published:
Archives of Computational Methods in Engineering Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. Boost serialization library. http://www.boost.org/libs/serialization/doc/index.html

  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. ABAQUS Inc. ABAQUS Scripting Reference Manual

  4. ABAQUS Inc. ABAQUS Scripting User’s Manual

  5. Aho AV, Sethi R, Ullman JD (1986) Compilers principles, techniques and tools. Addison-Wesley, Reading

    Google Scholar 

  6. Aho AV, Ullman JD (1978) Principles of compiler design. Addison-Wesley, Reading

    MATH  Google Scholar 

  7. Aho AV, Ullman JD, Hopcroft JE (1983) Data structures and algorithms. Addison-Wesley, Reading

    MATH  Google Scholar 

  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. Appel AW, Ginsburg M (1999) Modern compiler implementation in C. Cambridge University Press, Cambridge

    Google Scholar 

  10. Archer GC (1996) Object-oriented finite element analysis. PhD thesis, University of California at Berkeley

  11. Archer GC, Fenves G, Thewalt C (1999) A new object-oriented finite element analysis program architecture. Comput Struct 70(1):63–75

    Article  MATH  Google Scholar 

  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

  13. Bangerth W, Hartmann R, Kanschat G. deal.II Differential equations analysis library, Technical reference. http://www.dealii.org

  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

  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

  16. Bathe K-J (1996) Finite element procedures. Prentice-Hall, New York

    Google Scholar 

  17. Cardona A, Klapka I, Geradin M (1994) Design of a new finite element programming environment. Eng Comput 11(4):365–381

    Article  MATH  Google Scholar 

  18. Codina R (2001) Pressure stability in fractional step finite element methods for incompressible flows. J Comput Phys 170:112140

    Article  MathSciNet  Google Scholar 

  19. Codina R (2002) Stabilized finite element approximation of transient incompressible flows using orthogonal subscales. Comput Methods Appl Mech Eng 191(39):4295–4321

    Article  MATH  MathSciNet  Google Scholar 

  20. Dadvand P, Lopez R, Oñate E (2006) Artificial neural networks for the solution of inverse problems. In: ERCOFTAC

  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

  22. Donéa J, Huerta A (2003) Finite element methods for flow problems. Wiley, New York

    Book  Google Scholar 

  23. Dubois-Pélerin Y, Pegon P (1997) Improving modularity in object-oriented finite element programming. Commun Numer Methods Eng 13:193–198

    Article  MATH  Google Scholar 

  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

    Article  Google Scholar 

  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

    Article  Google Scholar 

  26. Edelson DR (1992) Smart pointers: They’re smart, but they’re not pointers. Technical report, Santa Cruz, CA, USA

  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

    Article  Google Scholar 

  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)

    Article  Google Scholar 

  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)

    Article  MATH  Google Scholar 

  30. Felippa CA, Geers TL (1988) Partitioned analysis of coupled mechanical systems. Eng Comput 5:123–133

    Article  Google Scholar 

  31. Felippa CA, Park KC, Farhat C (2001) Partitioned analysis of coupled mechanical systems. Comput Methods Appl Mech Eng 190:3247–3270

    Article  MATH  Google Scholar 

  32. Filho JRA, Devloo PRB (1991) Object oriented programming in scientific computations: the beginning of a new era. Eng Comput 8(1):81–87

    Article  Google Scholar 

  33. Forde BWR, Foschi RO, Stiemer SF (1990) Object-oriented finite element analysis. Comput Struct 34(3):355–374

    Article  MATH  Google Scholar 

  34. Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley, Reading

    Google Scholar 

  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. Haykin S (1994) Neural networks: A comprehensive fundation. Prentice Hall, New York

    Google Scholar 

  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

    Article  Google Scholar 

  38. Idelsohn SR, Oñate E, Calvo N, Pin FD (2003) The meshless finite element method. Int J Numer Methods Eng 58:893–912

    Article  MATH  Google Scholar 

  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

    Article  MATH  Google Scholar 

  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

    Article  MATH  Google Scholar 

  41. Kirsch A (1996) An introduction to the mathematical theory of inverse problems. Springer, Berlin

    MATH  Google Scholar 

  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

    MATH  Google Scholar 

  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

  44. Knuth DE (1998) The art of computer programming: sorting and searching, vol 3, 2nd edn. Addison-Wesley, Reading

    Google Scholar 

  45. Laboratory for Computational Physics and Fluid Dynamics (LCP&FD). FEFLO project

  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

    Article  Google Scholar 

  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. Logg A (2007) Automating the finite element method. Arch Comput Methods Eng 14(2):93–138

    Article  MATH  MathSciNet  Google Scholar 

  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

    Chapter  Google Scholar 

  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

    Article  MATH  Google Scholar 

  51. López R. Flood: an open source neural networks C++ library. CIMNE

  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

    Article  MATH  Google Scholar 

  53. Mackie RI (1992) Object oriented programming of the finite element method. Int J Numer Methods Eng 35(2):425–436

    Article  MATH  Google Scholar 

  54. Mackie RI (1997) Using objects to handle complexity in finite element software. Eng Comput 13(2):99–111

    Article  Google Scholar 

  55. Maplesoft. Maple’s documentation

  56. MathWorks. Matlab’s documentation

  57. Menetrey P, Zimmermann T (1993) Object-oriented non-linear finite element analysis: application to j2 plasticity. Comput Struct 49(5):767–773

    Article  MATH  Google Scholar 

  58. Miller G (1991) An object-oriented approach to structural analysis and design. Comput Struct 40(1):75–82

    Article  MATH  Google Scholar 

  59. Miller G (1994) Coordinate-free isoparametric elements. Comput Struct 49(6):1027–1035

    Article  Google Scholar 

  60. Miller GR, Banerjee S, Sribalaskandarajah K (1995) A framework for interactive computational analysis in geomechanics. Comput Geotech 17(1):17–37

    Article  Google Scholar 

  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

    MATH  Google Scholar 

  62. Mount D, Arya S (1997) Ann: A library for approximate nearest neighbor searching. citeseer.ist.psu.edu/mount97ann.html

  63. Oñate E (2004) Possibilities of finite calculus in computational mechanics. Int J Numer Methods Eng 60(1):255–281

    Article  MATH  Google Scholar 

  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

    Article  Google Scholar 

  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

    Article  MATH  Google Scholar 

  66. Open Engineering. OOFELIE

  67. Patzák B. OOFEM documentation. Czech Technical University, Faculty of Civil Engineering, Department of Structural Mechanics

  68. Patzák B, Bittnar Z (1999) Object oriented finite element modeling. Acta Polytech 39(2):99–113

    Google Scholar 

  69. Pidaparti RMV, Hudli AV (1993) Dynamic analysis of structures using object-oriented techniques. Comput Struct 49(1):149–156

    Article  Google Scholar 

  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. Raphael B, Krishnamoorthy CS (1993) Automating finite element development using object oriented techniques. Eng Comput 10(3):267–278

    Article  Google Scholar 

  72. Ribó R, Pasenau M, Escolano E, Ronda JSP. GiD user manual. CIMNE, Barcelona

  73. Ribó R, Pasenau M, Escolano E, Ronda JSP, González LF. GiD reference manual. CIMNE, Barcelona

  74. Rossi R (2005) Light weight structures: structural analysis and coupling issues. PhD thesis, University of Bologna

  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

  76. Rossi R, Oñate E (2010) Validation of a fsi simulation procedure—bridge aerodynamics modelproblem. Eng Comput (to appear)

  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

    Article  Google Scholar 

  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

    Article  Google Scholar 

  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

  80. Saad Y (2003) Iterative methods for sparse linear systems. Society for Industrial and Applied Mathematics, Philadelphia

    MATH  Google Scholar 

  81. Šíma J, Orponen P (2003) General-purpose computation with neural networks: A survey of complexity theoretic results. Neural Comput 15(12):2727–2778

    Article  MATH  Google Scholar 

  82. Touzani R. OFELI documentation

  83. Touzani R (2002) An object oriented finite element toolkit. In: Proceedings of the fifth world congress on computational mechanics (WCCM V)

  84. Veldhuizen TL (1995) Expression templates. C++ Rep 7(5):26–31

    Google Scholar 

  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. 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. Vinoski S (1997) CORBA: integrating diverse applications within distributed heterogeneous environments. IEEE Commun Mag, 14(2)

  88. Wolfram Research. Mathematica’s documentation

  89. Zienkiewicz OC, Taylor RL, Zhu JZ (2007) Finite element method: its basis and fundamentals. Butterworth-Heinemann, Stoneham

    Google Scholar 

  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

    Article  Google Scholar 

  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)

    Article  MATH  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Pooyan Dadvand.

Rights and permissions

Reprints 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

Download citation

  • Received:

  • Accepted:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11831-010-9045-2

Keywords

Navigation