OpenFoam et FreeCAD, le calcul fluide sans « trop de » prise de tête.

OpenFoam est un logiciel CFD (Computation Fluid Dynamic = Logiciel de calcul de fluides) opensource et gratuit permettant de réaliser, en fonction du matériel informatique disponible, des calculs d’écoulement fluide plus ou moins justes et précis mais qui nous donneront une idée de ce qui peut se passer dans le monde gazeux invisible et chaotique qui entoure nos chers aéronefs et autres objets plus ou mins fuselés.

J’ai voulu partager dans cet article ma façon « légère » de mettre en œuvre ce type de calcul car, basiquement, OpenFoam n’est pas « User friendly » et dégoute rapidement le néophyte.

En effet, OpenFoam s’utilise « en Console » avec une suite d’actions à mener comme la conversion du 3D dans un autre format pour le rendre compatible avec le mailleur, lui aussi piloté purement avec du code.
Il y a la préparation du job avec toutes ses déclarations, comme les conditions limites, le type de calcul, les propriétés physiques, la gestion du solveur (les pas de temps, etc…). Autant de choses qui ne tolèrent aucune étourderie ou faute de frappe.

C’est là que FreeCAD intervient, ou plutôt un atelier de FreeCAD dédié au calcul fluide, que l’on doit à quelques talentueux passionnés.
Remercions les au passage.

Ce présent article s’appuie sur FreeCAD 0.18 installé sur Windows 7.
Vous trouverez, je pense, suffisamment d’infos sur le net pour les installations sur Win10, OSX et Linux.

Enfin, le modèle montré dans cet exemple devrait logiquement être traité en 2D et pas en 3D. J’ai toutefois souhaité montrer un modèle 3D sur une géométrie simple car les problèmes « volumiques » constituent le cas d’étude le plus fréquent.

Notez bien !

Oui, notez bien que la réalisation d’un calcul, informatique ou non, dit « prédictif » ou bien encore « de dimensionnement » implique deux choses essentielles:

La première est que ce n’est qu’un outil et qu’il n’a pas la connaissance du sujet ni les connaissances techniques. Le domaine de la physique étudié doit être au minimum compris dans ses grandes lignes afin d’avoir un regard critique et éclairé sur le résultat produit. Sans aller jusqu’à dire qu’il faut un master en mécanique des fluides pour s’en sortir, il est tout de même nécessaire de se cultiver un minimum sur le sujet.

La deuxième est que, même si l’on y met toutes les connaissances du monde et tous les ingrédients les plus subtils, le calcul, même si il prend un temps infini à donner un résultat, ne sera qu’une approximation de la réalité. Il y aura nécessairement un écart entre le résultat produit et la réalité. Il est donc primordial de comparer les résultats de calcul avec des essais physiques pour constater la « justesse » de la démarche.

Puisque nous ne pourrons pas facilement confirmer par des essais physiques ce que nous trouverons au calcul, il est alors de bon ton de considérer cette boule de cristal informatique comme un outil qualitatif donnant une tendance de l’écoulement possible. Nous pourrons alors au moins comparer des modèles successifs et juger d’éventuels améliorations à défaut d’avoir la valeur absolue d’un véritables Cx à 0.01 près.

L’atelier CfdOf de FreeCAD

Vous l’aurez compris dans le titre, FreeCad s’inscrit dans la suite des opérations à réaliser. Ici, il n’intervient pas pour la modélisation 3D de l’objet à étudier bien que cela soit possible.
Non, nous n’allons pas modéliser sur FreeCAD mais juste importer un modèle 3D Step et nous précipiter dans l’atelier CfdOf (pour Computation Fluid Dynamic OpenFoam) qui présente l’énorme avantage de mettre en avant une interface graphique qui nous évitera de nous perdre dans les lignes de code du solveur OpenFoam.

C’est très bien mais avant toutes choses il convient de faire quelques démarches…

Installation de CfdOf

Installation de l’atelier ne pose pas de problème mais ce n’est qu’une boite vide sans la mécanique d’openFoam qu’il faut installer séparément.
CfdOf est un atelier qui n’est pas natif sur FreeCAD. Il faut donc l’installer en allant le chercher dans « Outil/Addon Manager » sélectionner « CfdOf » puis « Install/update » en bas .
Dans cette même liste, choisissez également l’installation de « Plot »

Installation de l’atelier CfdOF

Relancez FreeCAD pour prendre en compte ces modifications. Dans la liste des ateliers de FreeCAD vous avez maintenant en plus « CfdOf » et « Plot ».

Laissons de coté FreeCad et lançons l’installation d’Openfoam. Nous allons y revenir juste après.

Installation d’OpenFoam

C’est une installation complète d’openfoam sur le PC qui n’a rien à voir avec FreeCAD.

Openfoam est une sorte de grosse librairie se mariant assez bien avec Linux mais, à la base, incompréhensible pour windows. Pour le faire fonctionner tel quel sur cet OS, il faudrait être très calé en informatique, créer des passerelles, le compiler, etc…

Fort heureusement, un projet Open source s’est créé autour de cette problématique afin de donner accès à OpenFoam à tous ceux qui sont sur Windows (pas de chance pour eux : c’est ce que disent les Linuxiens)
Il s’agit de BlueCFD.

Première option, vous pouvez alors télécharger le dernier Setup et procéder à l’installation (~1Go) puis plus tard déclarer dans FreeCAD le répertoire d’installation d’openfoam .
http://bluecfd.github.io/Core/Downloads/

Pour ceux qui sont, comme moi, encore sous Windows 7, vous pouvez conserver le répertoire d’installation par défaut de BlueCFD (« C:\Program Files\blueCFD-Core-2017\OpenFOAM-5.x »). Par contre sous Windows 10, changez de répertoire pour l’installation (en dehors de « C:\Program Files ») car, plus tard à travers FreeCAD, l’installation de CfMesh et HiSa n’aboutiront pas.

L’installation est assez longue, soyez patient…

Déclarations dans les paramètres de CfdOf

Une fois OpenFoam installé nous allons retourner dans FreeCAD pour déclarer le répertoire d’installation d’OpenFoam (C’est la première option)
Allons dans Édition/Préférence puis dans CFD (ce sont les préférences d’OpenCFD, l’addon installé plus tôt)

Paramètres de l’atelier CfdOF

Ici en haut, nous devons désigner le répertoire d’installation d’openfoam (le même que celui indiqué à l’installation de BlueCFD).
Ce sera un répertoire dans « Program Files » pour Win 7 et un dans C:\ pour Win 10.

L’autre solution c’est de demander à CfdOF d’intaller BlueCFD lui-même.
En cliquant sur « Install BlueCFD Core » il y aura téléchargment puis installation et vous pourrez choisir le répertoire d’installation de BlueCFD.

Dans tous les cas, BlueCFD doit être installé et le répertoire d’installation déclaré dans CfdOf.

Cliquez ensuite sur « Run Dependency Checker » pour que FreeCAD vérifie que tout est bien connecté entre FreeCAD et OpenFoam. Ca peut être long.

En principe le résultat est positif et l’on peut passer à la suite.

« Default output directory »: Vous pouvez choisir un lieu quelconque. C’est à cet endroit qu’OpenFoam va déposer l’ensemble des fichiers nécessaires au maillage et au calcul. En fait il va créer sous ce répertoire d’autres répertoires, nous verrons ça plus loin.

Installation des deux mailleurs externes

Les trois autres champs sont vides et il suffit, de haut en bas de provoquer les installations en cliquant sur les boutons « Install CfMesh » et enfin « Install HiSa ».
Ces deux dernières sont particulièrement longues. Pas d’inquiètude, c’est normal.
Si vous avez bien suivi les consignes pour Win 7 ou Win 10, il ne devrait pas y avoir d’erreur et ces trois logiciels viendront parfaire l’installation d’openfoam dans CfdOf.

Tout est enfin prêt pour se lancer dans le calcul fluide.
C’est parti…

Exemple de mise en donnée

Tout d’abord, il nous faut un modèle solide (une STEP ira très bien) représentant le volume fluide qui va être calculé.
C’est donc bien l’air qui est maillé et dans ce volume d’air, il y a une cavité de la forme de l’objet qui sera contourné par ce fluide.
Pour obtenir ce type de 3D, c’est assez simple puisqu’il suffit de faire une opération booléenne entre un grand volume d’air et l’objet contourné (une soustraction : Volume englobant d’air – Objet). C’est ce que l’on appelle un modèle fluide externe (l’objet est entouré de fluide). A contrario, un écoulement dans un tube avec des vannes serait de un modèle fluide interne (l’objet solide entoure le fluide).

J’ai préféré réaliser ce modèle avec un autre logiciel que FreeCAD. Rien ne vous empêche de produire votre volume fluide avec ce modeleur.

Import du modèle

Fichier/importer et l’on va chercher le modèle STEP du volume d’air à mailler.
Je ne parlerai pas des règles donnant les dimensions relatives du volume par rapport à l’objet étudié.

Modèle du domaine fluide solide et atelier CfdOF

L’objet est importé. Vous noterez l’atelier actif et la palette d’outils dont certains sont encore grisés.

Création du cas de calcul

La première chose à faire est de créer un cas de calcul à l’aide du premier bouton. Les boutons sont dans un ordre logique et chronologique pour la réalisation du job de calcul.

Création du cas d’analyse CFD

On a maintenant dans l’arbre un cas d’analyse avec les différentes parties à renseigner.
Cela se fait à l’aide des autres boutons de la palette. Certains se sont activés.

Le type de calcul (Physics model)

C’est le deuxième bouton (marqué 2 dans la capture).
Ici on définit le type d’algorithme utilisé. Pour ce type d’analyse, nous prendront un modèle non transitoire, monophasique, incompressible, visqueux, turbulent.

Type d’analyse CFD

Le fluide

Le bouton marqué 3 dans la capture. C’est le matériau considéré. Il y a juste à sélectionner « Air » dans une liste déroulante dans laquelle on trouve les principaux fluides.

Choix du matériau fluide

Le maillage

Ce bouton est grisé (bouton 4 dans la capture).
Pour l’activer, il faut que l’objet à mailler soit sélectionné.
On sélectionne le solide dans l’arbre pour le prendre dans sa globalité sinon on n’attrape que quelques faces.
On lance l’outil de maillage.
Pour ce modèle, voici mes réglages. A titre d’info, la corde du profil d’aile est ici de 1 mètre et l’épaisseur du pavé fluide 0.5 m.

Spécifications globales du maillage

J’utilise SnappyHexMesh en 3D avec des éléments d’une taille maximale de 100mm (j’en aurai quelque uns dans l’épaisseur). Le mailleur ne fonctionne que si il peut placer un premier nœud dans la matière. Je lui indique -100 mm en X ce qui correspond à un point en avant du bord d’attaque dans le fluide.
On peut lancer un premier maillage qui est assez rapide.

le maillage global

C’est pas trop mal mais il nous faut affiner énormément au niveau de la portion d’aile.
On clique sur Clear puis fermer.
On a alors dans l’arbre notre spécification de maillage. Sélectionnons-la puis cliquons sur le bouton marqué 5 dans la capture. Il n’est actif que si le maillage est sélectionné dans l’arbre.
Il s’agit maintenant d’ajouter des spécifications locales pour le maillage.

Voici une nouvelle fois mes réglages.
Nous auront ici une progression de taille de maille de 1 pour 5.
Il faut désigner les surfaces qui doivent recevoir les mailles fines.
On les attrapes en sélectionnant d’abord l’objet 3D (menu déroulant ici « Goe535 lisse ») puis en cliquant en bas sur le bouton « Select from list ». Il faut ensuite chercher les bonnes faces qui se mettent en surbrillance lorsqu’elles sont pointées dans la liste.

Spécification de maillage local

On a alors une branche sous le maillage dans l’arbre.

Stockage des paramètres de spécification de maillage local

Retournons dans son parent, le maillage à proprement parler.
Double clic sur Part_Feature_Mesh. Nous pouvons relancer le mailleur.
Cela prend un peu plus de temps.

Voici le nouveau maillage après avoir attendu 680 secondes et cliqué sur « Load surface mesh ».
Je n’ai pas besoin de domaine dans le sillage de l’aile. Ceci ne m’intéresse pas d’un point de vue Post-traitement.

Maillage localement affiné

Les conditions limites

Très important, il faut indiquer au soft de calcul la nature des parois. Sont-elles parfaitement glissantes ou rugueuses, s’agit-il d’entrées ou de sorties, etc…

Cela se fait avec le boutons marqué 6 dans la capture d’écran.
On retrouve le même genre de boite de dialogue que pour les spécifications locales de maillage. On doit donc d’abord choisir le type de condition limite puis choisir une(des) géométrie(s) sur le modèle 3D (des surfaces) puis valider (bouton « Done »). Il est préférable de cacher le maillage pour attraper facilement les surfaces (rappelez-vous dans FreeCAD, on sélectionne l’objet maillage puis on appuie sur la barre espace).

Astuce:
Si le modèle est riche de surfaces, vous pouvez présélectionner celles-ci avant de lancer la fonction conditions limites. Elles seront alors directement renseignées dans la liste.

Exemple avec la condition limite Inlet

Sur ce modèle, j’ai créé les conditions limites suivantes:

  • Inlet avec la face avant du bloc en entrant 2,7.10e+4 mm/s (27m/s = 100 km/h) dans le sens X
  • Outlet pour la face arrière du bloc avec 0 Pa
  • Slip inviscid pour les 4 faces latérales du bloc (tangentiels à l’écoulement)
  • Slip inviscid pour les surfaces du modèle (la surface représentant l’extrados et l’intrados et un tout petit bord de fuite plat.)

« Slip inviscid », même si il ne génère pas d’effort tangentiel dû au frottement, n’en est pas moins un mur. Ce n’est donc pas un écoulement infini et pour ne pas avoir trop d’influence sur le modèle, il est bon de les éloigner le plus possible de l’objet étudié.

Dans l’arbre, on peut renommer la dernière condition limite « Aile ». Cela peut être utile si l’on veut récupérer les efforts et/ou coefficients aérodynamiques sur cette partie. Dans le Job, CfdOF écrira des groupes pour chacune de ces conditions limites en utilisant les noms qui leurs sont attribués dans l’arbre.

Création d’un groupe de « Wall » pour éventuellement demander des sorties au solveur spécifique à cet objet.

Gestion temps et du pas de temps

Ici, nous allons indiquer au solveur avec quelle précision nous souhaitons regarder le phénomène.
En sélectionnant dans l’arbre le solveur, on peut modifier quelques paramètres importants.
Il est d’abord intéressant de donner un nom à votre Calcul.
Par défaut il se nommera « case ». Il serait mieux que je le nomme « ProfilGOE535 ».

CfdOF réglage du pas de temps du solveur OpenFoam


Il y a d’abord le temps total de simulation. Pour notre exemple, 300 secondes. c’est largement suffisant pour que l’écoulement soit bien stabilisé dans tout le domaine (environs 8 m de long) compte tenu de la vitesse d’entrée (100 km/h).
Ensuite le pas de temps est fixé à 0.01 s cela veut dire que le solveur va recalculer toute la matrice pour chaque centième de seconde écoulé, il y aura donc 30000 pas.

Ces considérations sont pour les humains. En fait, ce qui compte pour le calcul, ce sont les itérations. C’est réellement ça que le solveur triture et ce n’est pas forcément représentatif des secondes de nos horloges.
Ici, je demande 500 itérations, pas une de plus. L’écriture d’intervalle transitoire est de 0.01 (il se passe donc beaucoup de choses entre deux itérations) et je demande une écriture toutes les 10 itérations donc 50 sorties.
Pour un calcul dit stabilisé, seul le dernier état est intéressant. mais je le laisse à 10 écritures pour avoir plusieurs sorties en cas de plantage.

Double cliquons maintenant dans l’arbre sur cet élément.
Nous allons maintenant demander à CfdOF de créer tous les fichiers texte qui seront lus par le solveur et que nous aurions eu tant de mal à écrire manuellement.
Il suffit de cliquer sur « Write ». Vous pouvez jeter une coup d’œil sur ce superbe travail d’écriture en cliquant ensuite sur « Edit ». Windows ouvrira alors le répertoire désigné dans les préférences.

Lancement

Simplement avec le bouton « Run ».
Si vous voyez des écritures en noir venir successivement dans la boite de dialogue et dans la fenêtre « Vue rapport » alors cela semble bien parti. Si vous avez des infos en rouge ou un « compute failed » alors il faudra faire quelques lourdes recherches pour trouver le problème.

Après quelques pas de temps calculés, vous verrez apparaitre des courbes montrant la convergence du calcul sur des critères comme la pression ou la turbulence. En abscisse vous avez les 500 itérations (qui représentent les 300 secondes).
Ces courbes doivent descendre et atteindre une asymptote la plus basse possible. Tout dépendra de la qualité du maillage et des conditions imposées dans votre calcul. C’est ce que l’on appelle la convergence.
L’image ci-dessous montre que le calcul se passe plutôt bien.
Nous avons un résiduel assez faible (<10e-04) à la fin du calcul.
Il aura fallu environs une demie heure (1718 s) pour arriver au bout.

Astuce:
Pour aller plus vite, passez « Parallel » à True et « Parallel core » au maxi de votre processeur (8 pour moi). Le calcul se fait alors deux fois plus vite (en 833 secondes).

Post Traitement (Paraview)

Une fois terminé vous avez dans la fenêtre de status une info du style « Terminé avec succès ».
Vous pouvez alors directement lancer Paraview à l’aide du bouton portant le même nom.

Il serait trop long ici de faire un tuto sur Paraview.
Je ne suis d’ailleurs pas très à l’aise pour en expliquer les finesses.
Vous trouverez nombre de sources sur le net.

Pour les premiers pas, si rien n’est affiché, il suffit de faire une petite rotation dans l’espace 3D pour voir apparaitre un premier résultat rendu dans la fenêtre 3D et de cliquer sur le premier bouton « Toggle color legend visibility » pour voir apparaitre l’échelle de valeurs en bas à droite.

En haut vous avez de quoi vous déplacer dans les itérations. Oui, ici, c’est la toute première itération qui est chargée, il faut donc aller chercher la dernière (l’état stabilisé) avec le bouton « |> » ou bien donner le numéro de la dernière itération (500).

Pour un calcul transitoire, tous les états seraient intéressants et l’on aurait plaisir à voir l’animation de ces états successifs.

Choisissez le champ de valeur à visualiser (ici c’est la vitesse « U »). La pression serait « p », la turbulence « k ». Ensuite filtrez sur cette valeur selon la direction (X, Y, Z ou Magnitude).

De façon optionnelle, vous pouvez jouer sur l’aspect graphique de ce post-traitement (celui sélectionné) en allant dans les propriétés. Il faut appuyer sur « Apply » pour que les modifications soient rendues à l’écran.

Vous pouvez ajouter des Post-traitements intéressants pour mettre en évidence des phénomènes. Il y a de quoi couper le maillage, produire des surfaces « iso valeur » selon des niveaux imposée, faire des tracés de particules (fumée). Vous pouvez bien sûr les combiner puisque ce sont des calques superposés pour lesquels on peut faire varier l’opacité.

Attention au fait de bien choisir la même grandeur affichées que le champ de valeur choisi précédemment. Par exemple, les Valeur de U en haut (les couleurs seront relatives à U) et les surfaces iso valeur sur U aussi (et pas sur p, ce qui serait difficile à comprendre).

On peut aussi convertir les 500 itérations en temps « réel » (300 secondes) c’est le bouton entouré en bleu. il y aura alors 300 au lieu de 500 dans la barre des « Frames ». Mais encore une fois, ici ce n’est pas utile.

Voilà un long article d’initiation à OpenFoam sur l’interface FreeCAD.
De quoi éviter la « prise de tête » pour le calcul fluide.
J’espère que cela vous aura plu.
Si c’est le cas, pensez à partager cet article sur les réseaux sociaux...

à Bientôt.

Pour marque-pages : Permaliens.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *