[{"data":1,"prerenderedAt":200},["ShallowReactive",2],{"$f2tp73qhw6o6kd":3},{"slug":4,"publishedAt":5,"category":6,"title":7,"summary":8,"image":9,"imageAlt":14,"readingMinutes":15,"serviceId":16,"keywords":17,"imageCaption":23,"sections":24,"sources":187},"ai-agents-for-cfd","2026-10-19","guides","Agents d’IA pour la CFD : le cas a tourné. La réponse est-elle juste ?","Les agents d’IA pour la CFD écrivent et lancent des cas OpenFOAM à partir d’une phrase. La plupart aboutissent, moins sont justes. Ce que mesurent les tests et comment relire un cas.",{"src":10,"thumbnail":11,"width":12,"height":13},"\u002Fassets\u002Fcfd-cases\u002Fexternal\u002Fimages\u002F08.webp","\u002Fbrand\u002Fstudies\u002Fexternal.svg",1448,1086,"Illustration DEEB-FLOW des contours de vitesse autour de tubes en écoulement transversal",13,"review",[18,19,20,21,22],"agents d’IA pour la CFD","LLM OpenFOAM","Foam-Agent","ChatCFD","automatisation CFD par IA","Illustration conceptuelle issue de la bibliothèque de cas DEEB-FLOW. Elle ne constitue pas un résultat de cet article.",[25,32,39,81,89,101,120,143,160,169,180],{"id":26,"title":27,"paragraphs":28},"the-log-says-done","Le journal dit que le calcul est terminé",[29,30,31],"Le journal se termine comme on aime qu’un journal se termine. Le solveur a atteint son temps final, les résidus ont chuté, et l’agent annonce que la simulation est achevée. Dans une étude de 2026 qui testait des agents de programmation sur OpenFOAM, les chercheurs ont regardé les maillages derrière ce genre de calcul. Dans deux des quatre cas d’écoulement autour d’un obstacle construits avec l’un des modèles, le maillage ne représentait pas l’obstacle.","On peut simuler l’écoulement autour d’un cylindre sans le cylindre. Cela converge à merveille.","Les agents d’IA pour la CFD savent désormais, à partir d’une phrase, écrire un cas OpenFOAM, le lancer, lire les erreurs et les corriger, et sur les jeux de tâches de référence la plupart de ces cas vont jusqu’au bout. Moins nombreux sont ceux qui sont justes. Cet article sépare les deux à l’aide des chiffres des chercheurs eux-mêmes, montre les défaillances qui passent toutes les vérifications du journal, et propose une méthode de revue pour tout cas qu’un agent vous remet. Je n’ai aucun agent à vendre et rien contre eux. J’aimerais qu’on les vérifie.",{"id":33,"title":34,"paragraphs":35},"what-agents-do","Que font réellement ces agents ?",[36,37,38],"L’idée est la même dans tous les systèmes apparus ces deux dernières années. Un grand modèle de langage reçoit votre demande. Il retrouve des cas de tutoriel et de la documentation similaires, écrit les fichiers du cas, lance le mailleur et le solveur, lit le journal et corrige les fichiers quand quelque chose échoue. Il recommence jusqu’à ce que le calcul aboutisse ou qu’il abandonne.","Les systèmes connus diffèrent par l’organisation de cette boucle. Foam-Agent répartit le travail entre plusieurs agents, avec une recherche documentaire en couches pour les différentes parties d’une simulation, une génération de fichiers qui garde les dictionnaires cohérents entre eux, et une boucle de correction censée résoudre les échecs sans intervention humaine. ChatCFD ajoute des bases de connaissances structurées, un localisateur d’erreurs et un composant qui rédige un résumé physique du résultat. Des chercheurs ont aussi testé des agents de programmation généralistes avec une simple consigne orientée OpenFOAM.","OpenFOAM est la cible naturelle. Un cas est un dossier de dictionnaires en texte brut, le solveur se lance en ligne de commande et le journal est du texte. Un modèle de langage peut lire et écrire chacune de ces parties, ce qu’on ne peut pas dire d’un solveur piloté par une interface graphique.",{"id":40,"title":41,"paragraphs":42},"success-rates","Que mesurent les taux de réussite ?",[43,44,75,76],"C’est le moment de ralentir.",{"table":45},{"head":46,"rows":51},[47,48,49,50],"Système","Jeu de tâches","Chiffre annoncé","Ce qui comptait comme réussite",[52,57,62,67,70],[53,54,55,56],"Foam-Agent (2025)","110 tâches, définies par les auteurs","83,6 % avec Claude 3.5 Sonnet","Un taux de réussite ; le résumé ne le définit pas",[58,59,60,61],"ChatCFD (2025, révisé en 2026)","315 cas, définis par les auteurs","82,1 % d’exécution réussie","Le calcul va à son terme",[63,64,65,66],"ChatCFD, même article","Les mêmes 315 cas","68,12 % de fidélité physique","La mesure des auteurs indiquant si le résultat a un sens scientifique",[68,64,69,61],"Foam-Agent, mesuré par les auteurs de ChatCFD","42,3 % d’exécution réussie",[71,72,73,74],"Un agent de programmation généraliste (Xiao et al., 2026)","9 tâches dérivées de tutoriels","9 sur 9 terminées avec une consigne adaptée, 4 sur 9 avec la consigne par défaut","Le calcul atteint le temps final ; 7 des 9 avaient une erreur quadratique moyenne normalisée inférieure à 0,1 par rapport à la référence","Trois points ressortent.",{"list":77},[78,79,80],"**Le même outil obtient des scores très différents selon le jeu de tâches.** Foam-Agent annonce 83,6 % sur les tâches de ses auteurs et obtient 42,3 % sur celles de ChatCFD. Aucun des deux chiffres n’est faux. Ils mesurent des tâches différentes, et un taux de réussite ne dit pas grand-chose tant qu’on ne connaît pas les tâches.","**Aller au bout et avoir raison sont deux scores distincts.** Selon ses propres chiffres, ChatCFD atteint 82,1 % de calculs menés à terme et 68,12 % de fidélité physique. Si chaque cas fidèle fait aussi partie de ceux qui ont abouti, ce qui semble probable, alors environ un calcul abouti sur six n’avait pas de sens physique selon la mesure des auteurs eux-mêmes. C’est mon calcul sur leurs chiffres, et c’est le chiffre le plus utile du tableau.","**Certaines mesures vérifient bien la réponse.** Les indicateurs que rapportent Xiao et ses collègues comprennent une erreur par rapport à des cas de référence, ce qui permet à la dernière ligne de dire à quel point 7 des 9 calculs se sont approchés de la référence, en plus de dire s’ils ont abouti. C’est le bon type de mesure. Il est plus difficile d’y obtenir un bon score, et c’est pourquoi il faut toujours demander de quel type relève un chiffre.",{"id":82,"title":83,"paragraphs":84},"quiet-errors","Pourquoi les erreurs difficiles sont-elles les plus silencieuses ?",[85,86,87,88],"L’évaluation de 2026 menée par Xiao et ses collègues de l’université de Pékin est l’article le plus franc de ce petit domaine, et elle mérite d’être lue pour ses échecs.","Sur des cas proches des tutoriels, un agent guidé par une consigne soignée a mené tous les calculs à terme et s’est approché de la référence dans la plupart des cas. Sur des écoulements plans autour d’obstacles, où le maillage devait être construit et non copié, les choses ont changé. Avec l’un des modèles, dans deux cas sur quatre, le maillage ne représentait pas l’obstacle. Dans un autre calcul, l’agent a réutilisé le maillage d’un tutoriel sans mettre à jour la géométrie. Un modèle plus puissant a produit de meilleurs maillages, et un type de maillage a tout de même demandé des indications humaines répétées. Lors d’essais préliminaires en combustion à grande vitesse, l’agent n’a pas réussi à obtenir une configuration stable en modifiant les fichiers d’après le journal.","Ce que l’agent faisait bien, c’était corriger les erreurs qui produisent des messages. Un réglage non pris en charge, une entrée manquante, un mot-clé mal orthographié : le journal nomme le problème et l’agent le répare. La conclusion des auteurs est nette. Ne pas représenter l’obstacle dans le maillage, ou d’autres problèmes de nature physique, est difficile à détecter pour les agents, et la supervision humaine reste indispensable.","Les agents sont donc les meilleurs sur les erreurs qui s’annoncent et les plus faibles sur celles qui se taisent. Pour un ingénieur, c’est exactement l’inverse de ce qu’il faudrait, car les erreurs qui s’annoncent n’ont jamais été les dangereuses. Un solveur qui plante vous a dit quelque chose. Un solveur qui converge sur la mauvaise géométrie ne vous a rien dit, de façon très convaincante.",{"id":90,"title":91,"paragraphs":92},"error-families","Les erreurs silencieuses, par famille",[93,94],"Voici les classes d’erreurs qui passent toutes les vérifications du journal. Aucune n’est propre à l’IA ; les humains les commettent toutes. La différence est qu’un agent qui copie des tutoriels les commet à grande vitesse, et qu’un agent qui ne lit que le journal n’a aucun moyen de les remarquer.",{"list":95},[96,97,98,99,100],"**Géométrie.** Un élément manquant ou mal placé, ou un maillage mis à l’échelle en millimètres alors que les sommets étaient écrits en mètres.","**Unités.** Les solveurs incompressibles d’OpenFOAM travaillent en pression cinématique, la pression divisée par la masse volumique, en m²\u002Fs². Les efforts demandent alors une masse volumique de référence que quelqu’un doit fournir.","**Réglages hérités.** La viscosité, les grandeurs turbulentes, les profils d’entrée et le temps final du tutoriel de départ, laissés en place parce que rien ne s’en est plaint.","**Des conditions aux limites plausibles mais fausses pour ce problème.** Une loi de paroi sur un maillage dont personne n’a vérifié le y+, ou une condition de gradient nul là où il fallait une valeur imposée.","**Un calcul trop court.** Un cas instationnaire arrêté avant que l’écoulement atteigne son régime périodique, puis moyenné.",{"id":102,"title":103,"paragraphs":104},"worked-example","Exemple chiffré : deux erreurs qui ont l’air parfaites",[105,106,109,110,113,114,115,118,119],"**Erreur 1 : le cylindre millimétrique.** Prenons un cas de référence classique : l’écoulement autour d’un cylindre de 0,1 m de diamètre dans un canal, avec une vitesse moyenne d’entrée de 1 m\u002Fs et une viscosité cinématique de 0,001 m²\u002Fs. Le nombre de Reynolds vaut 100, et l’écoulement lâche des tourbillons.",{"formula":107},[108],"Re = U D \u002F ν = 1 × 0.1 \u002F 0.001 = 100","Supposons maintenant que l’agent parte d’un tutoriel dont le dictionnaire blockMesh met tous les sommets à l’échelle 0,001, et qu’il écrive les nouveaux sommets en mètres. Le cylindre mesure désormais 0,1 mm de diamètre.",{"formula":111},[112],"Re = 1 × 0.0001 \u002F 0.001 = 0.1","C’est un écoulement rampant. Il n’y a pas de lâcher tourbillonnaire, le solveur converge vite et sans à-coups, et la courbe des résidus est la plus jolie de la semaine. L’utilitaire checkMesh affiche la boîte englobante du domaine, si bien qu’un coup d’œil à sa sortie suffit à le repérer. Un agent qui lit le journal ne regarde jamais là, puisque rien n’a mal tourné.","**Erreur 2 : des efforts 18 % trop faibles et des coefficients parfaitement justes.** Dans un cas OpenFOAM incompressible, l’objet fonction forces multiplie la pression cinématique par une masse volumique de référence, rhoInf, pour obtenir des pascals puis des newtons. Supposons que le fluide soit de l’air à 1,225 kg\u002Fm³ et que l’agent laisse rhoInf à 1, comme dans de nombreux tutoriels. Chaque effort est alors trop faible du même facteur.",{"formula":116},[117],"1 \u002F 1.225 = 0.816","L’objet fonction des coefficients d’effort divise par ½ ρ U² A avec le même rhoInf, la masse volumique se simplifie donc et le coefficient de traînée sort juste. La courbe du coefficient a l’air parfaite, et le rapport qui donne la traînée en newtons est faux. J’aime cet exemple parce qu’il résiste précisément à la vérification qu’une personne attentive ferait en premier, la comparaison de C_D avec une valeur publiée.","Les deux séries de chiffres sont illustratives. Les mécanismes sont réels.",{"id":121,"title":122,"paragraphs":123},"test-case","Un cas test aux réponses connues",[124,125,126,141,142],"Si votre équipe veut évaluer un agent, ou un nouvel ingénieur, donnez-lui un problème dont la référence est publiée. Le cas de référence DFG pour l’écoulement laminaire autour d’un cylindre, le cas 2D-2 de Schäfer et Turek (1996), est un bon choix : bidimensionnel, peu coûteux, instationnaire et documenté à plusieurs chiffres.","La configuration donnée sur la page de référence FeatFlow est un canal de 2,2 m de long et 0,41 m de haut, avec un cylindre de 0,05 m de rayon centré en (0,2 ; 0,2). L’entrée est parabolique, avec un maximum de 1,5 m\u002Fs et une moyenne de 1,0 m\u002Fs, la viscosité cinématique vaut 0,001 m²\u002Fs et la masse volumique 1, ce qui donne Re = 100 sur le diamètre. Les valeurs de référence sur le maillage le plus fin sont :",{"table":127},{"head":128,"rows":131},[129,130],"Grandeur","Valeur de référence",[132,135,138],[133,134],"Coefficient de traînée maximal","3.2200",[136,137],"Coefficient de portance maximal","0.9859",[139,140],"Nombre de Strouhal","0.30188","Demandez le cas à l’agent à partir d’une description en langage courant, sans nommer le cas de référence, puis comparez. Un nombre de Strouhal proche de 0,30 et un coefficient de traînée maximal proche de 3,2 sur un maillage raisonnable indiquent une mise en données saine. L’absence totale d’oscillation indique qu’il manque quelque chose : le cylindre, l’instationnarité, la résolution ou le temps final.","Remarquez que le cylindre est légèrement décalé par rapport à l’axe du canal, à 0,2 m dans un canal de 0,41 m de haut. Laissez-le là. Un agent qui « range » la géométrie en position symétrique a changé le cas de référence, et sa réponse ne se compare plus à la référence.",{"id":144,"title":145,"paragraphs":146},"review-routine","Comment je relirais un cas écrit par un agent",[147,148,159],"Dans cet ordre. La plupart des étapes prennent quelques minutes.",{"list":149,"ordered":158},[150,151,152,153,154,155,156,157],"**Notez ce que vous attendez avant d’ouvrir les résultats.** Les grandeurs qui vous intéressent et un ordre de grandeur pour chacune, tiré d’une estimation à la main, d’une corrélation ou d’une étude antérieure.","**Regardez le maillage avant l’écoulement.** Lancez checkMesh, lisez la boîte englobante et ouvrez la géométrie. Chaque élément est-il présent, à la bonne taille et au bon endroit ?","**Comparez le cas au tutoriel dont il provient.** L’agent vous dira ce qu’il a modifié. Les lignes dangereuses sont celles qu’il n’a pas touchées : viscosité, données de turbulence, temps final, intervalle d’écriture, réglages des objets fonction.","**Vérifiez les unités et les valeurs de référence.** Pression cinématique ou statique, rhoInf, viscosité dans le dictionnaire de transport, et nombre de Reynolds recalculé à la main à partir des fichiers du cas.","**Lisez chaque fichier de conditions aux limites,** champ par champ, en vous demandant s’il décrit le problème physique. Le journal ne peut pas répondre à cette question.","**Vérifiez la convergence et les bilans.** La masse entrante égale la masse sortante, et l’énergie aussi si elle est résolue. L’article de ce blog sur la convergence explique ce que « convergé » devrait vouloir dire.","**Comparez avec quelque chose d’indépendant.** Un cas de référence, une corrélation, une mesure ou un calcul antérieur vérifié. C’est la différence entre vérification et validation, expliquée dans un article dédié de ce blog.","**Si les chiffres doivent orienter une décision, testez le maillage.** Une étude d’indépendance au maillage s’applique au maillage d’un agent exactement comme au vôtre.",true,"Cela prend plus de temps que d’écrire la consigne. Beaucoup moins que d’écrire le cas.",{"id":161,"title":162,"paragraphs":163},"where-agents-help","Là où les agents d’IA pour la CFD aident déjà",[164,165,166,167,168],"Là où il existe déjà un cas vérifié et où l’agent en modifie les paramètres : un balayage de vitesses d’entrée, une série de variantes géométriques d’une conception validée, un lot de scripts de post-traitement. Les décisions dangereuses ont été prises une fois, par une personne, et l’agent répète les décisions sûres.","Là où le travail est répétitif : dictionnaires d’objets fonction, lignes d’échantillonnage, scripts qui transforment un dossier de résultats en tableau.","Là où l’erreur est bruyante : un cas qui ne démarre pas, un dictionnaire avec une erreur de syntaxe, une entrée de bibliothèque manquante. Ici, les agents publiés sont déjà bons et font gagner un temps réel.","Et dans l’enseignement, avec prudence. Un étudiant qui voit en une minute un cas complet qui tourne comprend plus vite la structure d’OpenFOAM. Il faut aussi apprendre à ce même étudiant à s’en méfier, et cette leçon vaut plus que le cas.","Là où je ne les utiliserais pas sans revue complète : physique nouvelle, géométrie industrielle tridimensionnelle, écoulements réactifs ou multiphasiques, et tout ce qui n’a pas de référence de comparaison. L’évaluation de 2026 range les cas 3D et industriellement pertinents dans les travaux futurs, et ses essais en combustion ne se sont pas stabilisés. Voilà où en est le domaine cette année.",{"id":170,"title":171,"paragraphs":172},"before-adopting","Ce que je demanderais avant d’en adopter un",[173,174],"Si quelqu’un propose un agent d’IA pour la mise en données CFD de votre équipe, posez quatre questions.",{"list":175},[176,177,178,179],"**Quel indicateur de réussite se cache derrière le chiffre ?** Un calcul qui a abouti et un résultat proche d’une référence sont deux chiffres différents, parfois très éloignés.","**Sur les cas de qui ?** Un jeu de variantes de tutoriels en dit peu sur votre géométrie.","**Que vérifie l’agent avant d’annoncer une réussite ?** Si la réponse est le journal, vous savez maintenant ce qu’il manque.","**Qui relit le cas, et par rapport à quoi ?** Si personne, l’agent produit une incertitude très rapide et très bien rangée.",{"id":181,"title":182,"paragraphs":183},"short-version","En bref",[184,185,186],"Les agents pour la CFD sont réels et progressent vite. Ils corrigent les erreurs qui affichent des messages et ratent celles qui se taisent. Traitez le cas d’un agent comme celui d’un nouveau collègue compétent lors de sa première semaine : reconnaissant pour le temps gagné, et en lisant chaque fichier avant que quoi que ce soit ne sorte de l’entreprise.","Si vous assistez ce mois-ci à une conférence où l’IA figure sur chaque diapositive, posez une question à l’orateur : parmi les cas qui ont abouti, combien étaient justes ?","Pour la question plus large de savoir si des modèles entraînés remplaceront la simulation, voyez l’article « L’IA va-t-elle remplacer la CFD ? » de ce blog. Si vous avez un modèle construit par un agent ou hérité et souhaitez le faire vérifier fichier par fichier, c’est précisément l’objet d’une revue de modèle.",[188,191,194,197],{"href":189,"label":190},"https:\u002F\u002Farxiv.org\u002Fhtml\u002F2602.11689v1","Xiao, Zhang, Xu, Mao, Li and Chen (2026), arXiv 2602.11689: a preliminary assessment of coding agents for CFD workflows",{"href":192,"label":193},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2505.04997v1","Yue, Somasekharan, Cao and Pan (2025), arXiv 2505.04997: Foam-Agent, towards automated intelligent CFD workflows",{"href":195,"label":196},"https:\u002F\u002Farxiv.org\u002Fabs\u002F2506.02019","Fan et al. (2025, revised 2026), arXiv 2506.02019: ChatCFD, an LLM-driven agent for end-to-end CFD automation",{"href":198,"label":199},"https:\u002F\u002Fwwwold.mathematik.tu-dortmund.de\u002F~featflow\u002Fen\u002Fbenchmarks\u002Fcfdbenchmarking\u002Fflow\u002Fdfg_benchmark2_re100.html","FeatFlow, TU Dortmund: DFG flow around cylinder benchmark 2D-2, time-periodic case (Re = 100)",1792438042518]