OFF, Open source Finite volumes Fluid dynamics code
OFF is a CFD code designed to be accurate, efficient and modular for solving, numerically, the Navier-Stokes equations of fluid dynamics by means of Finite Volume technique. It is written in standard (compliant) Fortran 2003 by means of OOP paradigm. OFF can be executed on parallel CPU-based architecture (shared memory multi-cores workstation, distributed memory cluster and hybrid distributed memory cluster based on shared memory nodes).
Please kindly cite OFF in your publications if it helps your research:
@article{zaghi-2014,
author = {S. Zaghi},
title = {{OFF, Open source Finite volume Fluid dynamics code: A free, high-order solver based on parallel, modular, object-oriented Fortran API}},
journal = {Computer Physics Communications },
volume = {},
number = {0},
pages = { - },
year = {2014},
issn = {0010-4655},
doi = {http://dx.doi.org/10.1016/j.cpc.2014.04.005},
url = {http://www.sciencedirect.com/science/article/pii/S0010465514001283},
}
- Stefano Zaghi [email protected]
OFF can be obtained only from github repository. You can use Download ZIP
button provided from github or you can locally clone the github repository:
git clone https://github.com/szaghi/OFF
Two branches are generally present: master
branch that holds the stable version and testing
one for developing purposes. In general, the git tags
are used for referencing versions updates.
OFF is an open source project, it is distributed under the GPL v3. Anyone is interest to use, to develop or to contribute to OFF is welcome. Take a look at the contributing guidelines for starting to contribute to the project.
- Clean and lightweight programming style:
- explicit declaration imposed (pervasive
implicit none
usage); - Fortran free form syntax;
- clear and comprehensive comments;
- explicit declaration imposed (pervasive
- easy to maintain and to extend:
- extensive use of OOP paradigm;
- high quality API documentation:
- doxygen-based high quality html pages;
- simple development environment:
- easy source files maintenance by means of Git, one of the best distributed versioning system;
- collaborative framework by means of GitHub repository.
- Finite Volume, Godunov-like scheme based on Euler conservation Laws written in fully conservative formulation:
- the extension to viscous Navier-Stokes equations is under developing;
- Underling Riemann Problem solver for convective fluxes:
- Approximate Riemann solver based on (local) Lax-Friedrichs (known also as Rusanov) algorithm;
- Approximate Riemann solver based on Primitive Variables Linearization algorithm;
- Approximate Riemann solver based on Two Rarefactions algorithm;
- Approximate Riemann solver based on Two Shocks algorithm;
- Approximate Riemann solver based on Adaptive (non iterative) PVL-TR-TS algorithm;
- Approximate Riemann solver based on Adaptive (non iterative) LF-TR algorithm;
- Approximate Riemann solver based on HLLC algorithm;
- Approximate Riemann solver based on Roe linearization.
- Exact Riemann solver based on iterative solution of u-function;
- Multi-Species fluids models:
- Partial Densities species conservation (Standard Thermodynamic Model);
- New multi-dimensional conservation models of Favini, B. et al (under developing);
- Multi-Phases fluids models:
- Fully-coupled Lagrangian particles transport model (under developing);
- Space numerical integration models:
- 1-st order piece-wise constant reconstruction;
- 2-nd order TVD linear-wise reconstruction;
- 3-rd,5-th,7-th orders WENO non-linear reconstruction;
- Time approximation models:
- 1-st order forward Euler integration;
- 2-nd,3-rd,4-th orders Strong-Stability-Preserving explicit Runge-Kutta integration;
- Local pseudo-time convergence acceleration for steady simulations;
- Multi-grid time convergence acceleration:
- Multi-grid model has been already developed, but it is affected by some not still recognized bugs. Testing and bugs fixing are in progress.
- Underling numerical grid models:
- 3D, general curvilinear, body-fitted, structured multi-blocks mesh;
- Adaptive Mesh Refinement, AMR model (under developing);
- Blocks overlapping, overset (Chimera) model (to be developed in future);
- Computational parallelism ability:
- Domain decomposition by means of Message Passing Interface (MPI) paradigm providing the ability to use distributed-memory cluster facilities;
- Fine, local parallelism by means of OpenMP paradigm providing the ability to use shared-memory cluster facilities;
- Fine, local parallelism by means of GPU programming (e.g. CUDA framework) providing the ability to use GPUs cluster facilities (to be developed in future).
Detailed documentation can be found on the GitHub pages of the project.