logiciels
Lors de mon activité de recherche, j’ai développé ou participé au développement de nombreux codes de calcul. Tous ces codes on été écrit en Fortran. Je n’ai jamais compris pourquoi ce langage est si dénigré, alors qu’il est très efficace pour le calcul scientifique.
Voici donc en aparté quelques réflexions sur le langage Fortran et son utilisation dans le calcul scientifique.
Premier langage de programmation de haut niveau créé dans les années 50 par John Backus pour IBM (C en 1972).
Première version 1957, 1965 Fortran IV (première version publique non machine dépendante), 66, 77 ….
Puis 90, 95, 2003, 2008, 2023, …202Y.
FORTRAN : ‘’the IBM mathematical FORmula TRANslating system’’ est un langage dédié au traitement numérique des EDPs.
• Fortran est rétro-compatible et normalisé: tous les grands codes de calculs et librairies développés précédemment sont utilisables et utilisés. La stabilité est garantie par la norme Iso.
• Fortran est (très) rapide: Plus rapide que quasiment tous les autres langages dans le domaine du calcul scientifique. Plus rapide que le C++ de 20 à 30%, plus rapide que python d’un facteur > 100, …..
• Fortran est le langage des calculateur HPC: le langage Fortran a été conçu dès le départ pour des applications de calcul intensif en sciences et ingénierie avec des compilateurs optimisés. L’interface de passage de messages (MPI) est la passerelle vers le calcul haute performance et Fortran la gère très bien.
• Fortran est un langage sécurisant et relativement facile à apprendre et utiliser: le vocabulaire est restreint et depuis le Fortran 90, le passage du langage mathématique au code est plus intuitif.
Bref, Fortran n’est pas dépassé — il est spécialisé. Pour un code de calcul en mécanique numérique, il offre des performances proches du maximum théorique du matériel, une sémantique claire et vérifiable, un parallélisme natif, et une compatibilité ascendante garantie par une norme ISO vieille de 60 ans. Le dénigrement vient souvent de développeurs qui n’en ont jamais eu besoin — pas de ceux qui calculent vraiment.
Voici une liste non exhaustive, par ordre chronologique décroissant, des codes de calcul que j’ai développé ou auxquels j’ai participé.
Code CERF: 2021 …
Ce code (en Fortran 90) est une plateforme de développement par volumes finis. Il est issu de la volonté d’une collaboration avec l’INRAE d’Aix-en-Provence où nous cherchions à développer des modèles simplifiés d’érosion en hydrodynamique fluviale (CERF : Computation, ERosion and Flow). Malheureusement, la thèse en cours sur ce sujet n’a pu aboutir. Les développements ont donc pris du retard …. Je ne désespère pas d’y intégrer prochainement ces modèles d’érosion ainsi que le mailleur de RIVAGE. Mais il est surtout issu de ma volonté de prendre enfin le temps de publier en tant que logiciel libre une partie de mes travaux et de les documenter à des fins pédagogique dans mes enseignements en école d’ingénieur. Réécrit à partir de BBAMR, nettoyé et documenté, il est donc maintenant laissé en accès sous la licence CeCILL-B soumise au droit français et respectant les principes de diffusion des logiciels libres.
Une page WEB de téléchargement et de documentation est dédiée à CERF.
Code RIVAGE: 2018 …
Ce code (en Fortran 90) est une plateforme de développement utilisant la méthode des éléments finis discontinus en 2D ou 3D. En effet, la méthode des volumes finis ne permettant pas de monter spatialement en ordre et les schémas DDFV ne nous ayant pas convaincu, nous nous sommes tournés vers les éléments finis discontinus, d’autant qu’ils sont plus adaptés pour les problèmes paraboliques non-linéaires. RIVAGE a été développé dans le cadre des thèses de Jean-Baptiste Clément et Camille Poussel. Jean-Baptiste et Camille y ont développé des méthodes de Galerkin discontinues pour les équations de Saint-Venant et d’écoulement en milieux poreux non saturés. Un outil de maillage adaptatif BB-AMR a été développé par une approche Quadtree ou Octree avec des éléments linéiques, triangulaires, quadrangulaires, tétraédriques ou héxaédriques. Le mailleur est régi par des listes chaînées indexées par un code Morton de l’entité concernée. Couplé à des résolutions temporelles adaptatives explicites ou implicites d’ordres élevés, RIVAGE permet de mettre en oeuvre des technique de hp-adaptation. Par ailleurs RIVAGE est capable de gérer un couplage fort entre les écoulements de Saint-Venant et les écoulements en milieux poreux non saturés.
Code BBAMR: 2014 - 2018
Ce code (en Fortran 90) est une plateforme de développement utilisant la méthode des éléments finis discontinus en 2D ou 3D. Ce code reprend les fonctionnalités du code EOLENS et supporte certains développements du laboratoire Imath sur les systèmes d’équations hyperboliques.
- Volume fini parallèle non structuré
- Euler monophasique ou biphasique isotherme ou gaz raide
- Mailleur 3D BB-AMR
- Interaction Fluide-Structure par pénalisation (Thèse de Thomas ALTAZIN)
Code CM2: Code Multi-physique Multi-échelle. 2012-2015
Après la thèse de Damien LACHOUETTE où nous avions abordé la simulation d’écoulement visqueux avec érosion sur grille décalées, nous cherchions à améliorer cette approche par l’adjonction d’un solveur à maillage dynamique. L’approche volumes finis adéquate était donc l’approche DDFV (Discrete Duality Finite Volume). Ce code (en Fortran 90) fut donc développé dans le cadre de la thèse de Jalal LAKHLILI avec Cédric Galusinski. Nous avons donc conjointement développé des éléments DDVF 2D/3D, avec maillage adaptatif par quadtree/octree, méthode Level-Set, érosion et écoulement de type Navier-Stokes.
EOLENS 2006-2018
EOLENS est un code qui a été initialement développé pour la société Principia, avec Philippe Helluy. EOLENS a été un support de développement pour les thèses de Alioune Nar SAMBE et Kévin PONS.
- Volume fini parallèle non structuré
- Euler monophasique ou biphasique isotherme ou non
- Navier-Stokes
- Turbulence k-epsilon
- Shallow water, SGN
- BB-AMR
- Pas de temps local / Local time stepping
SIC: Système Interactif de Conception 1992-2006.
SIC était une plate-forme de développement par éléments finis développé par plusieurs laboratoires de mécanique et industriels en Fortran 77. Très en avance pour l’époque, SIC disposait d’un langage interprété, de parallélisme par sous-structuration et de très nombreuses lois de comportement et fonctionnalités en mécanique du solide. J’ai participé activement à son développement car c’était vraiment une formidable plate-forme de développement ouverte et fonctionnelle. J’ai développé de nombreux modules pour ce code, notamment:
- Thermique non-stationnaire non linéaire
- Thermochimie
- Outils de couplage
- Navier-Stokes (avec Philippe Helluy)
- Transport par méthode SUPG (avec Philippe Helluy)
- Navier Stokes compressible par méthode de décomposition (avec Philippe Helluy)
- Navier-Stokes incompressible en formulation rotationnel (avec Philippe Helluy)
- Ondes 2D par décomposition phase Amplitude (pas concluant !)(avec Philippe Helluy)
- Introduction des volumes finis et application aux écoulements shallow water (ça marche mais abandonné)
- Fonctions puits racinaires dans les écoulements en milieux poreux. (collaboration avec Rosanne Chabot du Cemagref)
- Optimisation topologique approche matériau fictif
- Raffinement automatique de maillage élément finis 2D
- Schéma de type volumes finis pour les milieux diphasiques
- Adaptation de maillage volumes finis par quadtree
MEFPOL 1988-1992
Dans le cadre de ma thèse sous la direction d’Olivier Débordes j’ai été amené à développer un code de calcul par éléments finis pour simuler le couplage thermochimique et thermomécanique lors de la polymérisation de structures composites. Ces développements ont été effectués à partir du code MEF (Mécanique des Éléments Finis) développé de Gilbert Touzot et Gourri Dhatt. Le code MEFPOL a été utilisé pour la simulation de la polymérisation de pièces composites dans le cadre d’une collaboration avec l’entreprise AEROSPATIALE.
