Gerris résout les équations de Navier-Stokes en 2 ou 3 dimensions. Il permet donc de modéliser les fluides industriels (aérodynamique, écoulements internes, etc.) ou encore la formation et l'évolution des gouttes, grâce à la prise en compte des interfaces diphasiques et de la tension superficielle. C'est d'ailleurs en référence à ce genre d'application et à l'insecte du même nom que le logiciel a été baptisé.
Gerris dispose aussi de variantes dédiées aux écoulements géophysiques:
Les écoulements #1 à #3 ont été étudiés avec le solveur d'équations de Saint-Venant (i.e.shallow-water) inclus dans Gerris, le cas #4 nécessite de s'intéresser aux équations primitives et l'application #5 repose sur les équations spectrales de génération/propagation/dissipation de la houle (ou de la mer du vent): Gerris utilise pour cela les termes-source de WaveWatch III[8].
Notons enfin que le solveur (non-hydrostatique) de Navier-Stokes a aussi été utilisé dans l'océan pour étudier:
Gerris utilise une discrétisation en volumes finis.
Type de grille
En distinguant les grilles structurées (Cartésiennes ou curvilignes) et les grilles non structurées (maillages triangulaires, tétraèdriques, etc.), on met en évidence l'originalité la plus forte de Gerris, à savoir que ce modèle ne se range dans aucune de ces deux catégories: en fait Gerris réalise un compromis entre les deux techniques grâce à l'utilisation d'une structure de donnée en arbre [12] pour représenter les champs, et ce de façon dynamique: la grille peut s'adapter au cours de la simulation en fonction de critères choisis par l'utilisateur (exemple: raffinement dynamique de la grille au voisinage de gradients locaux).
Fermeture turbulente
Gerris est pour l'instant un code DNS, l'amplitude des Reynolds accessibles à l'utilisateur dépend donc directement de la capacité de calcul dont il dispose (même si le maillage auto-adaptatif permet de focaliser la charge de calcul sur les structures cohérentes); d'après la FAQ de Gerris[13] l'implantation de modèles de turbulence concernera plutôt la famille LES que les approches RANS.
Langage de programmation, bibliothèques utilisées, outils fournis
Gerris est écrit en C avec les libraires Glib (orientation objet, compilation modulaire, etc.) et GTS[14]. Cette dernière sert aux calculs géométriques (triangulation des surfaces solides, intersection avec les cellules de calcul). D'autre part Gerris supporte nativement la parallélisation MPI.
Gerris n'a pas besoin de mailleur puisque le raffinement local (et même dynamique) de la grille est pris en charge par le solveur lui-même. Les surfaces solides peuvent quant à elles être spécifiées par:
leur description mathématique dans le fichier de paramètres ;
des fichiers de surface triangulée au format GTS ; la distribution de Gerris comporte notamment un outil permettant de traduire en GTS les surfaces triangulées au format STL (exporté par de nombreux logiciels de DAO 3D) ;
une base de données bathymétrique/topographique au format KDT (des outils sont fournis pour générér une telle base de données en partant de simples listings ASCII).
Les résultats peuvent être sortis de nombreuses façons ; citons:
Les sorties graphiques au format PPM : les images peuvent ensuite être converties en (presque) n'importe quel format grâce à ImageMagick et les animations au format MPEG grâce à FFmpeg (entre autres).
Les fichiers de simulation (.gfs), qui sont en fait des fichiers de paramètres concaténés avec les champs issus de la simulation ; ces fichiers peuvent ensuite être ré-utilisés comme fichiers de paramètres (avec conditions initiales, donc), ou alors confiés à Gfsview.
Gfsview, logiciel de visualisation distribué avec Gerris, capable de tirer parti de la structure en arbre de la grille de Gerris (une structure de donnée que n'exploitent pas efficacement les logiciels de visualisation généralistes [15]).
Licence
Les logiciels de mécanique des fluides numérique (Computational Fluid Dynamics ou CFD pour les anglophones), comme les autres logiciels, peuvent être développés dans différents contextes:
Commercial;
Universitaire;
Open Source.
Pour une discussion (orientée) de ces différents modes de développement dans le contexte des logiciels de CFD, voir notamment le billet de Zaleski [16].
Il est à signaler que Gerris a adopté le mode Open Source dès le début du projet [17],[18].
Poursuite du développement
À la suite d'une refonte de l'organisation logicielle, Gerris est devenu Basilisk, qui permet de développer son propre solveur (pas forcément en mécanique des fluides) en utilisant différentes structures de données (dont bien sûr les quadtree/octree) et des opérateurs optimisés d'itération, de dérivation, etc.
Les solveurs sont écrits en C, plus précisément le C Basilisk. Cependant de nombreux solveurs sont disponibles « clé en main », notamment Navier-Stokes et Saint-Venant.
D'autres logiciels de calcul en mécanique des fluides sont disponibles sous licence libre. En voici quelques-uns (si le développement n'a pas été initié sous licence libre, la date de passage en Open Source est mentionnée entre parenthèses):
↑(en) R. Msadek, « Hydrodynamic tidal model of Cook Strait », Technical report, National Institute of Water and Atmospheric research,
↑(en) S. Popinet, « Adaptive modelling of long-distance wave propagation and fine-scale flooding during the Tohoku tsunami », Natural Hazards and Earth System Sciences, vol. 12, , p. 1213-1227
↑(en) S. Popinet, « Quadtree-adaptive tsunami modelling », Ocean Dynamics, vol. 61, , p. 1261-1285
↑(en) A. Hyunuk et Y. Soonyoung, « Well-balanced shallow water flow simulation on quadtree cut cell grids », Advances in Water Resources, vol. 39, , p. 60-70
↑(en) S. Popinet et G. Rickard, « A tree-based solver for adaptive ocean modelling », Ocean Modelling, vol. 16, , p. 224-249
↑(en) C.-C. Tsai, T.-H. Hou et S. Popinet, « Wind wave prediction of tropical cyclones by a quadtree-adaptive model », Coastal Engineering, vol. 77, , p. 108-119
↑(en) S. Popinet, R.M. Gorman, G.J. Rickard et H.L. Tolman, « A quadtree-adaptive spectral wave model », Ocean Modelling, vol. 34, , p. 36-49
↑(en) J. O'Callaghan, G. Rickard, S. Popinet et C. Stevens, « Response of buoyant plumes to transient discharges investigated using an adaptive solver », Journal of Geophysical Research, vol. 115, , p. C11025
↑(en) G. Rickard, J. O'Callaghan et S. Popinet, « Numerical simulations of internal solitary waves interacting with uniform slopes using an adaptive model », Ocean Modelling, vol. 30, , p. 16-28
↑(en) Y. Tao, S. Rosswog et M. Brüggen, « A simulation modeling approach to hydrothermal plumes and its comparison to analytical models », Ocean Modelling, vol. 61, , p. 68-80
↑(en) S. Popinet, « Gerris: a tree-based adaptive solver for the incompressible Euler equations in complex geometries », Journal of Computational Physics, vol. 190, , p. 572-600
↑(en) S. Popinet, « Free Computationel Fluid Dynamics », Cluster World, vol. 2, , p. 2-8