Software
During my research activity, I have developed or participated in the development of many calculation codes. All these codes were written in Fortran. I never understood why this language is so denigrated, while it is very efficient for scientific computing. Here is therefore in passing some reflections on the Fortran language and its use in scientific computing.
First high-level programming language created in the 1950s by John Backus for IBM (C in 1972). First version 1957, 1965 Fortran IV (first public version not machine dependent), 66, 77 …. Then 90, 95, 2003, 2008, 2023, …202Y. FORTRAN: “the IBM mathematical FORmula TRANslating system” is a language dedicated to the numerical processing of PDEs.
• Fortran is retro-compatible and standardized: all the major calculation codes and libraries developed previously are usable and used. Stability is guaranteed by the Iso standard.
• Fortran is (very) fast: Faster than almost all other languages in the field of scientific computing. Faster than C++ by 20 to 30%, faster than python by a factor > 100, ….. • Fortran is the language of HPC computers: the Fortran language was designed from the start for high-performance computing applications in science and engineering with optimized compilers. The message passing interface (MPI) is the gateway to high performance computing and Fortran handles it very well. • Fortran is a secure and relatively easy to learn and use language: the vocabulary is limited and since Fortran 90, the transition from mathematical language to code is more intuitive.
In short, Fortran is not outdated — it is specialized. For a numerical mechanics calculation code, it offers performance close to the theoretical maximum of the hardware, clear and verifiable semantics, native parallelism, and upward compatibility guaranteed by an ISO standard that is 60 years old. The denigration often comes from developers who have never needed it — not from those who really calculate.
Here is a non-exhaustive list, in reverse chronological order, of the calculation codes that I have developed or participated in.
Code CERF: 2021 …
This code (in Fortran 90) is a finite volume development platform. It is the result of a collaboration with INRAE in Aix-en-Provence where we sought to develop simplified erosion models in fluvial hydrodynamics (CERF: Computation, ERosion and Flow). Unfortunately, the ongoing thesis on this subject could not be completed. The developments have therefore been delayed …. I do not despair of integrating these erosion models as well as the RIVAGE mesher soon. But it is above all the result of my desire to finally take the time to publish as a free software a part of my work and to document them for educational purposes in my classes at the engineering school. Rewritten from BBAMR, cleaned and documented, it is now left accessible under the CeCILL-B license subject to French law and respecting the principles of free software distribution.
One WEB page for downloading and documentation is dedicated to CERF.
Code RIVAGE: 2018 …
This code (in Fortran 90) is a development platform using the discontinuous finite element method in 2D or 3D. Indeed, the finite volume method does not allow for spatial order and the DDFV schemes did not convince us, so we turned to discontinuous finite elements, especially since they are more suitable for nonlinear parabolic problems. RIVAGE was developed in the context of the theses of Jean-Baptiste Clément and Camille Poussel. Jean-Baptiste and Camille developed discontinuous Galerkin methods for the Saint-Venant equations and unsaturated porous media flow. A BB-AMR adaptive meshing tool was developed using a Quadtree or Octree approach with linear, triangular, quadrangular, tetrahedral or hexahedral elements. The mesher is governed by linked lists indexed by a Morton code of the concerned entity. Coupled with high-order explicit or implicit adaptive time resolutions, RIVAGE allows the implementation of hp-adaptation techniques. Furthermore, RIVAGE is capable of handling a strong coupling between Saint-Venant flows and unsaturated porous media flows.
Code BBAMR: 2014 - 2018
This code (in Fortran 90) is a development platform using the discontinuous finite element method in 2D or 3D. This code (in Fortran 90) takes up the functionalities of the EOLENS code and supports some developments of the Imath laboratory on hyperbolic equation systems.
- Parallel unstructured finite volume
- Monophasic or biphasic isothermal or stiff gas Euler
- BB-AMR 3D mesher
- Fluid-Structure Interaction by penalization (Thesis of Thomas ALTAZIN)
Code CM2: Multi-physics Multi-scale Code. 2012-2015
After the thesis of Damien LACHOUETTE where we addressed the simulation of viscous flow with erosion on staggered grids, we sought to improve this approach by adding a dynamic mesh solver. The appropriate finite volume approach was therefore the DDFV (Discrete Duality Finite Volume) approach. This code (in Fortran 90) was therefore developed in the context of the thesis of Jalal LAKHLILI with Cédric Galusinski. We have therefore jointly developed 2D/3D DDVF elements, with adaptive meshing by quadtree/octree, Level-Set method, erosion and Navier-Stokes type flow.
EOLENS 2006-2018
EOLENS is a code that was initially developed for the company Principia, with Philippe Helluy. EOLENS has been a development support for the theses of Alioune Nar SAMBE and Kévin PONS.
- Parallel unstructured finite volume
- Monophasic or biphasic isothermal or non-isothermal Euler
- Navier-Stokes
- k-epsilon turbulence
- Shallow water, SGN
- BB-AMR
- Local time stepping
SIC: Système Interactif de Conception 1992-2006.
SIC was a finite element development platform developed by several mechanics laboratories and industrialists in Fortran 77. Very advanced for its time, SIC had an interpreted language, sub-structuring parallelism and many behavior laws and functionalities in solid mechanics. I actively participated in its development because it was really a great open and functional development platform. I developed many modules for this code, including:
- Non-stationary nonlinear thermal
- Thermochemistry
- Coupling tools
- Navier-Stokes (with Philippe Helluy)
- Transport by SUPG method (with Philippe Helluy)
- Compressible Navier Stokes by decomposition method (with Philippe Helluy)
- Incompressible Navier-Stokes in rotational formulation (with Philippe Helluy)
- 2D waves by phase Amplitude decomposition (not conclusive!)(with Philippe Helluy)
- Introduction of finite volume schemes for diphasic media (it works but abandoned)
- Root well functions in porous media flows. (collaboration with Rosanne Chabot from Cemagref)
- Topological optimization fictitious material approach
- Automatic refinement of 2D finite element mesh
- DDFV type scheme for diphasic media
- Adaptive meshing by quadtree finite volumes
MEFPOL 1988-1992
In the context of my thesis under the direction of Olivier Débordes, I was led to develop a finite element calculation code to simulate the thermochemical and thermomechanical coupling during the polymerization of composite structures. These developments were carried out from the MEF (Mécanique des Éléments Finis) code developed by Gilbert Touzot and Gourri Dhatt. The MEFPOL code was used for the simulation of the polymerization of composite parts in the context of a collaboration with the company AEROSPATIALE.
