OpenFOAM : quelle distribution et par qui ?

Les multiples versions de l’environnement OpenFOAM® peuvent mener à une certaine confusion de l’utilisateur lorsque ce dernier souhaite se lancer dans l’aventure. C’est pourquoi Pablo Higuera, le créateur de la superbe bibliothèque olaFOAM a pris son courage à deux mains et a décidé d’éclaircir quelques faits. Avec son accord, nous vous proposons une retranscription partieller et évolutive de son article dont vous trouverez la version originale sur son site. Cet article peut être vu comme un fork : une version parallèle ayant son évolution propre mais basée sur une version de départ commune.

Focus sur les développements principaux

Avant toute chose, il ne faut pas oublier qu’il existe de nombreux forks d’OpenFOAM® créés par des utilisateurs qui ont des besoins spécifiques. Voir par exemple OpenQBMM pour la modélisation des sprays dispersés, Drone CFD pour la simulation de drones ou le très utilisé fireFOAM pour la modélisation des incendies, etc. Ces forks dédiés ne sont pas l’objet de cet article car ils sont eux-même basées sur une branche de développement de référence. C’est pourquoi nous allons nous intéresser aux trois branches principales de développement du solveur de base. Il s’agit des versions les plus utilisées dont l’évolution génère le plus de confusion et de questions de la part des utilisateurs.

Qu’est-ce que OpenFOAM® ?

La première question majeure à se poser est « Qu’est-ce que OpenFOAM® ? ». La réponse pourrait être simple, mais elle mène à beaucoup d’implications complexes. OpenFOAM® est un code open-source de mécanique des fluides numérique (ou CFD) multi-physique qui est en cours de développement, ou plutôt en évolution permanente. Il dérive d’un code originel créé à « Imperial College London » appelé FOAM, et qui a beaucoup évolué depuis ses premiers jours. Comme il s’agit d’un code source ouvert, tout le monde a la possibilité de créer un fork pour initier son propre projet, et c’est pourquoi l’environnement autour de OpenFOAM® peut apparaitre très chaotique (ou très évolutif, c’est une question de point de vue).
Jusqu’en 2016 à peu près, la plupart des utilisateurs étaient conscients de l’existence deux projets principaux qui avaient l’initiative: OpenFOAM® (Il n’y a pas de nom associé et du coup plusieurs circulent : Fondation ? Originel ? Officiel ? Vous verrez aussi le terme “Vanilla” que les anglo-saxons utilisent pour « classique », choisissons OpenFOAM® Fondation  ) et FOAM-Extend. Ensuite, OpenFOAM+ est entré en jeu.

Un peu d’histoire

L’histoire des différents projet peut se résumer comme suit :

OpenFOAM®

Cette distribution est la plus connue et la plus utilisée. Une partie de l’équipe qui a développé FOAM à Imperial College, a décidé de créer “The OpenFOAM Foundation” pour continuer à développer le code, à corriger les bugs, à offrir des cours et des conseils spécialisés. Depuis, ils ont publié une nouvelle version environ tous les 6 mois. A l’heure de l’écriture de ces mots, la version 4.1 est la plus récente.
Des critiques ont été émises sur la façon dont les décisions sont prises en interne. Par exemple, des modifications importantes dans la structure du code sont introduites dans chaque version, ce qui rend difficile un développement individuel qui reste compatible. En outre, la politique d’acceptation des contributions est très stricte, ce qui réduit la volonté de la communauté de rendre ses développements accessibles au public et de tenter de les inclure dans la distribution.

FOAM-Extend

C’est la branche axée sur la communauté d’utilisateur de OpenFOAM®. Il y a eu un effort communautaire très important pour soutenir la version OpenFOAM® 1.6 « Fondation »  en créant la version OpenFOAM 1.6-Ext qui contenait de nombreux développements ( encore souvent utilisés aujourd’hui). Les problèmes ont débuté avec la OpenFOAM « Fondation » suivante (1.7), qui avait de tels changements de structure et de codage que cela rendait inutilisables la plupart des développements antérieurs de la communauté (en particulier dans le domaine des turbomachines). En conséquence, plutôt que de tout reprendre à zéro, il  a été décidé de créer une équipe développement autonome de la fondation: FOAM-Extend.
Le projet Extend offre à présent une nouvelle version chaque année qui concide avec le, workshop annuel OpenFOAM®. Il possède également une branche de développement dans laquelle les bogues sont corrigés en permanence. En ce qui concerne la comparaison avec OpenFOAM® « fondation», FOAM-Extend n’offre pas quelques-unes des avancées les plus récentes, mais propose des fonctionnalités plutôt uniques comme les IBM (immersed boundary methods) ou un solveur monophasique pour les écoulements à surface libre. De plus, la politique d’acceptation des contributions est complètement ouverte, ce qui en fait un bon environnement pour l’innovation.

OpenFOAM®+

C’est l’un des derniers projets, qui est apparu au début de l’année 2016. OpenFOAM®+ est développé par OpenCFD Ltd qui est une filiale de ESI group  qui a racheté la marque OpenFOAM® il y a quelques années. Cela a nécessité un peu de temps pour qu’ils développent un modèle commercial, mais ils proposent à leur client le développement de modules personnalisés. Les clients peuvent ensuite choisir de les rendre public après un certain temps, et c’est la valeur ajoutée de cette distribution.
Ce projet utilise la version OpenFOAM® « Fondation » comme base de code commune. Comme ils ont un calendrier de publication similaire, la dernière version de OpenFOAM®+ n’inclut pas toutes les dernières fonctionnalités et corrections de bugs, mais seulement celles qui étaient disponibles quelques mois auparavant. L’une des raisons pour lesquelles les utilisateurs étaient si confus au début du projet + était que OpenFOAM® fondation 3.0 et OpenFOAM®+ 3.0 ont commencé à coexister, et il était très difficile de trouver une différence entre eux. Les dernières versions, ajoutent plus de fonctionnalités et modifie le schéma de numérotation sur OpenFOAM® 1606+ (AnneeMois +), ce qui facilite la distinction même si nous ignorons le caractère +.