incompact3d.com fête son premier anniversaire

37
15
oct.
2016
Science

Pour célébrer le premier anniversaire du site incompact3d.com, faisons une brève plongée dans le code de calcul éponyme sous licence libre (GNU GPL) qui a plus de 15 ans ! Il permet de résoudre les équations de Navier‐Stokes incompressibles en 2D/3D et peut exploiter efficacement plus d’un million de cœurs.

Objectifs

Incompact3d est un outil pour l’étude de la turbulence dans les écoulements incompressibles. Il s’appuie sur des méthodes numériques d’ordre élevé sachant tirer profit de la puissance des supercalculateurs actuels. On l’utilise pour effectuer des simulations directes (DNS) ou des simulations des grandes échelles (LES).

Entièrement écrit en Fortran, le code utilise la bibliothèque 2DECOMP&FFT pour la gestion des accès disque et des transformées de Fourrier. Plusieurs dizaines de publications dans des journaux scientifiques à comité de lecture attestent de la qualité du code.

Chronologie

  • 1997 : les premières lignes de code sont écrites par Éric Lamballais ;
  • 2001 : avec la thèse de Sylvain Lardeau, les fondements du code sont posés : Simulation numérique directe du contrôle d’écoulements cisaillés libres par injection de fluide ;
  • 2005 : avec la thèse de Sylvain Laizet, le cœur du code est repensé, on utilise un solveur spectral direct pour la pression : Développement d’un code de calcul combinant des schémas de haute précision avec une méthode de frontière immergée pour la simulation des mouvements tourbillonnaires en aval d’un bord de fuite ;
  • 2009 et 2011 : adaptation du code aux environnements hautement parallèles (http://dx.doi.org/10.1016/j.jcp.2009.05.010 et http://dx.doi.org/10.1002/fld.2480) ;
  • 26 octobre 2015 : avec la fermeture annoncée de Google Code, un nouveau site devait voir le jour ; ce sera incompact3d.com !

Code modulaire

Le code a une structure relativement simple et modulaire. Les utilisateurs développent ainsi aisément des fonctionnalités nouvelles.

Par exemple, dans le cadre de la thèse de Rémi Gautier, un nouveau module de modélisation des obstacles s’appuyant sur la méthode des frontières immergées a été développé. Il permet de simuler simplement des écoulements turbulents dans des géométries complexes. Sa thèse est intitulée Calcul haute fidélité de la turbulence en géométrie complexe : application au contrôle fluidique d’un jet. À titre illustratif, voici l’écoulement derrière un cylindre :
Écoulement derrière un cylindre

Mon utilisation

Dans le cadre de ma thèse, j’ai développé un module pour le couplage thermique fluide‐solide, ainsi qu’un solveur dédié à la thermique solide. Les développements correspondants sont mis en ligne au fil de l’eau sur mon framagit.

À venir

Les prochains développements dans le code devraient amener la concurrence des communications globales et des opérations de calcul (MPI v3). Un autre objectif majeur pour la suite est l’utilisation efficace des coprocesseurs (Intel Xeon Phi).

Si vous êtes curieux, n’hésitez pas à tester le code, vous pouvez faire tourner la version 2D sur un ordinateur personnel sans problème.

Aller plus loin

  • # À propos de la version 2D

    Posté par  (site web personnel) . Évalué à 6.

    Bonjour,

    J'aime beaucoup ce genre de dépêche qui nous font sortir de notre zone de confort en nous faisant découvrir des choses qu'on ne serait pas forcément allé chercher. Mais un petit paragraphe pour expliquer à la plèbe le genre d'utilisations pratiques de ce genre de logiciel aurait été bien je pense (ex: conception de barrage ?).

    vous pouvez faire tourner la version 2D sur un ordinateur personnel sans problème

    Est-ce que la version 2D permettrait de faire ce genre de chose ?
    Il s'agit d'un jeu (Pixel Junk Shooter) dans lequel on est amené, dans un petit vaisseau, à creuser la roche, et manipuler des fluides pour avancer (par exemple en faisant tomber de l'eau sur du magma afin de le refroidir et pouvoir le creuser). Ça tourne sur PlayStation3, et dans une interview un développeur disait que si l'aspect graphique était simple, c'est parce que la simulation de fluide prenait la majorité de la puissance de calcul (ça doit tourner à au moins 30 images par seconde, et donc me semble être techniquement plutôt balèze).

    Désolé si je suis à côté de la plaque.

    • [^] # Re: À propos de la version 2D

      Posté par  (site web personnel) . Évalué à 10.

      Je doute que le logiciel soit d'une grande aide pour la conception de barrage. C'est un problème de charge statique et si on veut calculer l'écoulement qui sortirait par une conduite forcée, dans le cas de petite retenue, il y a des problèmes de surfaces libres fluides / air sur la surface libre du lac qui sont un merdier à gérer…

      C'est d'après ce que j'ai compris un code turbulent donc c'est plus adapté aux problèmes de calcul de turbine (encore faut-il gérer les maillages tournant) ou les écoulements turbulents dans des tunnels (simulation de l'écoulement dans les veines de soufflerie par exemple).

      A savoir qu'il y a en gros deux types d'écoulement : laminaire et turbulent. Tu as les deux types en ouvrant ton robinet de lavabo. Laminaire au début puis turbulent ensuite lorsque le débit augmente. Les écoulements turbulents sont chaotiques d'où quelques soucis pour les simuler ;-)

      • [^] # Re: À propos de la version 2D

        Posté par  (site web personnel, Mastodon) . Évalué à 3.

        Les écoulements turbulents sont chaotiques

        J'aurai envie de dire : "Les écoulements turbulents sont chaotiques, jusqu'à preuve du contraire…"
        Mais, c'est parce que j'ai tendance à penser la science et sa progression comme telles :)

      • [^] # Re: À propos de la version 2D

        Posté par  . Évalué à 4.

        Effectivement, le code n'est pas vraiment taillé pour ces écoulements diphasiques. C'est un code de haute précision qui permet de faire de la recherche. Il y a des codes de calcul plus flexibles (et moins précis) qui répondent très bien aux problématiques industrielles.

        D'ailleurs, dans ce domaine, il y a 2 acteurs libres : Code_Saturne et OpenFOAM. Mais l'immense majorité des études s'appuient sur des outils non-libres (Ansys CFX, Fluent, Star-CD), parfois en mode boite noire. Ces outils proprios sont bien implantés dans l'industrie, ils sont quasiment indéboulonnables en fait…

      • [^] # Re: À propos de la version 2D

        Posté par  . Évalué à 1.

        (simulation de l'écoulement dans les veines de soufflerie par exemple).

        À priori Incompact3d ne permet pas ça car dans une soufflerie on a un gaz compressible or Icompact3d est destiné à "l'étude des turbulences des écoulements incompressibles".

        Cette signature est publiée sous licence WTFPL

        • [^] # Re: À propos de la version 2D

          Posté par  . Évalué à 3.

          Ça dépend de ce que tu mets dans ta soufflerie. Toutes les voitures et tous les trains ne montent pas à plus de Mach 0.3 (≈ 350 km/h quand-même dans l’air au sol), alors la compressibilité du gaz ne pose pas de problème, pourtant des essais en soufflerie servent toujours.

          • [^] # Re: À propos de la version 2D

            Posté par  . Évalué à 1.

            Ça dépend de ce que tu mets dans ta soufflerie

            Tous les gaz sont compressible, il n'est pas nécessaires d'être à Mach quelque chose. Soit on modélise un écoulement avec des fluides incompressible (un liquide) ou compressible (un gaz), rien à voir avec les vitesses.

            • [^] # Re: À propos de la version 2D

              Posté par  . Évalué à 3.

              La notion de fluide est un modèle, tout comme celles de milieu continu et de d’incompressibilité. Le nombre de Mach est justement le critère qui permet de déterminer si les effets de compressibilité sont significatifs ou non dans un écoulement. Enfin bon, ton autre commentaire, sur les turbines (qui sont quand même un exemple type d’application où les phénomènes de turbulence sont complexes et susceptibles de nécessiter des approches fines DNS/LES) montre que tu n’y connais pas grand chose…

      • [^] # Re: À propos de la version 2D

        Posté par  . Évalué à 1.

        code turbulent donc c'est plus adapté aux problèmes de calcul de turbine

        Turbulent est plutôt lié à la capacité du code de pouvoir modéliser un écoulement de type turbulent, à l'opposé des écoulements laminaires ! Rien avoir avec le calcule de turbine !

    • [^] # Re: À propos de la version 2D

      Posté par  . Évalué à 7.

      Bonjour,

      Effectivement, j'ai esquivé les applications pratiques, mais c'est un code de calcul académique. Dans mon cas, il a été utilisé pour faire de la recherche fondamentale sur la turbulence et les transferts thermiques. On obtient des résultats très généraux qui n'auront aucune application pratique avant 10/20/30 ans, et qui orientent les travaux suivants…

      Le jeu est joli, mais je pense que la code ne peut pas faire ça directement : il est prévu pour ne traiter qu'un fluide. Donc pas possible de faire du suivi d'interface fluide/solide. En revanche, on peut faire des études sur la dilution. Au Brésil, il y a des utilisateurs universitaires du code qui bossent avec Petrobras là-dessus, voir cet article par exemple. De mémoire, l'image qui suit correspond à ces études sur la dilution:
      dilution

  • # OpenFOAM ?

    Posté par  . Évalué à 1.

    Merci pour cet article, il ce code semble assez intéressant, mais je me demandais ce qu'il apportait par rapport à quelque chose comme OpenFoam (=un autre code CFD libre) ?

    • [^] # Re: OpenFOAM ?

      Posté par  . Évalué à 1.

      Merci pour ce commentaire! Le gros écart entre Code_Saturne / OpenFoam et Incompact3d, c'est la fidélité de la discrétisation.

      Les codes de calcul en CFD résolvent une version discrétisée des équations de Navier-Stokes. Incompact3d s'appuie sur des méthodes numériques très précises (schémas d'ordre 6 donc erreur proportionnelle à dx6, avec dx la taille de la maille) alors que OpenFoam est bien moins précis (schémas d'ordre 2 donc erreur proportionnelle à dx2). On a donc un gain en précision énorme. Et surtout, on représente plus fidèlement les structures turbulents de petite taille, ce qui est primordial lorsque l'on étudie la turbulence.

      En revanche, avec un code comme Incompact3d, on a moins de flexibilité pour mailler le domaine, donc on ne pourra pas étudier efficacement certaines configurations, qui sont triviales pour OpenFoam… Ce sont des outils complémentaires.

      Au milieu des codes CFD sous licence libre, il y a NEK5000 qui vient de débouler chez GitHub, ils ont l'air d'avoir un gros potentiel, mais ça reste orienté recherche je pense.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.