freeCappuccino - An Open Source Software Library for Computational Continuum Mechanics
The paper describes development of an open-source library (www.github.com/nikola-m/freeCappuccino) for computational fluid dynamics and in general computational continuum mechanics. The code is based on finite volume method on arbitrary unstructured polyhedral meshes. The interfaces to highly abstract data types such as arbitrary order tensor fields on discretized finite volume domains, and scalar and vector sparse linear systems resulting from finite volume discretization of partial differential equations are provided. Explicit manipulation of tensor fields through high level, highly abstract programming syntax is explained. Also, implicit operation over tensor fields pertinent to discretization of partial differential operators is provided and explained. The library is developed in modern version of Fortran. Code parallelization is achieved through domain decomposition and implemented using MPI and OpenMP. While avoiding the usual class syntax of object-oriented programming, the code has essentially object oriented design. Comparison is made with the well-known OpenFOAM library. The purpose of the ongoing development is providing researchers with a tool for easy transfer of mathematical operations of their physical models into functional and efficient simulation software based on finite volume method. The guiding principle of development is exchange of ideas and reproducibility in computational science in general.
KeywordsEngineering software Computational fluid dynamics Finite volume method Parallel computing High-performance computing
Support of the Ministry of Education, Science and Technological Development of republic of Serbia, trough project TR-33036 is greatly acknowledged.
- 4.Jasak, H., Jemcov, A., Tuković, Ž.: OpenFOAM: a C++ library for complex physics simulations. In: International Workshop on Coupled Methods in Numerical Dynamics IUC, Dubrovnik, Croatia, 19th–21th September 2007Google Scholar
- 8.Bartlett, R.E.: A simple convention for the specification of linear algebra function prototypes in C++. ACM Trans. Math. Softw. 1–6 (2015). https://trilinos.org/docs/dev/packages/thyra/doc/html/LinearAlgebraFunctionConvention.pdf
- 11.Library of Iterative Solvers for linear systems (LIS). http://www.ssisc.org/lisl