# Gerris (logiciel)

Gerris est un logiciel libre de mécanique des fluides numérique.

## Champ d'application

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:
* marée océanique
* tsunamis$^,$
* écoulements fluviaux
* tourbillons océaniques
* état de mer (vagues)$^,$
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.
Notons enfin que le solveur (non-hydrostatique) de Navier-Stokes a aussi été utilisé dans l'océan pour étudier:
* les panaches fluviaux
* les ondes internes
* la convection hydrothermale
Par contre Gerris ne permet pas de modéliser les fluides compressibles (écoulements supersoniques).

## Schéma numérique

La résolution numérique des équations aux dérivées partielles peut se faire suivant différentes méthodes:
* différences finies
* volumes finis
* éléments finis
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 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 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. 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).

## 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. Il est à signaler que Gerris a adopté le mode Open Source dès le début du projet$^,$.

## 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.