A tensorial approach to computational continuum mechanics using object-oriented techniques

In this article the principles of the field operation and manipulation (FOAM) C++ class library for continuum mechanics are outlined. Our intention is to make it as easy as possible to develop reliable and efficient computational continuum-mechanics codes: this is achieved by making the top-level syntax of the code as close as possible to conventional mathematical notation for tensors and partial differential equations. Object-orientation techniques enable the creation of data types that closely mimic those of continuum mechanics, and the operator overloading possible in C++ allows normal mathematical symbols to be used for the basic operations. As an example, the implementation of various types of turbulence modeling in a FOAM computational-fluid-dynamics code is discussed, and calculations performed on a standard test case, that of flow around a square prism, are presented. To demonstrate the flexibility of the FOAM library, codes for solving structures and magnetohydrodynamics are also presented with a...

[1]  M. O. Deville,et al.  Fortran 90: an entry to object-oriented programming for the solution of partial differential equations , 1997, TOMS.

[2]  C. Fletcher Computational techniques for fluid dynamics , 1992 .

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

[4]  Bjarne Stroustrup Why C++ is not just an object-oriented programming language , 1995, OOPSLA '95.

[5]  B. Launder,et al.  Ground effects on pressure fluctuations in the atmospheric boundary layer , 1978, Journal of Fluid Mechanics.

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

[7]  A. Gosman,et al.  A comparative study of subgrid scale models in homogeneous isotropic turbulence , 1997 .

[8]  A. Gosman,et al.  Solution of the implicitly discretised reacting flow equations by operator-splitting , 1986 .

[9]  J. Smagorinsky,et al.  GENERAL CIRCULATION EXPERIMENTS WITH THE PRIMITIVE EQUATIONS , 1963 .

[10]  Henk A. van der Vorst,et al.  Bi-CGSTAB: A Fast and Smoothly Converging Variant of Bi-CG for the Solution of Nonsymmetric Linear Systems , 1992, SIAM J. Sci. Comput..

[11]  B. Launder,et al.  Progress in the development of a Reynolds-stress turbulence closure , 1975, Journal of Fluid Mechanics.

[12]  Joel H. Ferziger,et al.  Computational methods for fluid dynamics , 1996 .

[13]  Lars Schiøtt Sørensen,et al.  An introduction to Computational Fluid Dynamics: The Finite Volume Method , 1999 .

[14]  S. Muzaferija,et al.  Finite volume method for stress analysis in complex domains , 1994 .

[15]  B. Launder,et al.  The numerical computation of turbulent flows , 1990 .

[16]  Manuel V. Heitor,et al.  Measurements of turbulent and periodic flows around a square cross-section cylinder , 1988 .

[17]  T. A. Zang,et al.  Toward the large-eddy simulation of compressible turbulent flows , 1990, Journal of Fluid Mechanics.

[18]  I. Demirdzic,et al.  Numerical method for coupled fluid flow, heat transfer and stress analysis using unstructured moving meshes with cells of arbitrary topology , 1995 .

[19]  A. D. Gosman,et al.  The computation of compressible and incompressible recirculating flows by a non-iterative implicit scheme , 1986 .

[20]  A. Yoshizawa Statistical theory for compressible turbulent shear flows, with the application to subgrid modeling , 1986 .

[21]  S. Orszag,et al.  Development of turbulence models for shear flows by a double expansion technique , 1992 .

[22]  Ren-Chuen Chen,et al.  Object-oriented programming of adaptive finite element and finite volume methods , 1996 .

[23]  V. C. Patel,et al.  Turbulence models for near-wall and low Reynolds number flows - A review , 1985 .

[24]  U. Schumann Subgrid Scale Model for Finite Difference Simulations of Turbulent Flows in Plane Channels and Annuli , 1975 .

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

[26]  Bjarne Stroustrup,et al.  C++ : programovací jazyk : The C++ programming language (Orig.) , 1997 .

[27]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

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

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