On peut expliquer la portance avec un diagramme et une équation. Ça colle rarement. Voir la traînée se détacher de l’arrière d’une aile en faisant varier l’angle d’attaque colle tout de suite. C’est cette distance qui fait exister le Kutta.
C’est une petite soufflerie 2D écrite en Go, rendue avec Ebitengine, fonctionnant comme une seule application de bureau.
L’idée n’a jamais dépassé le premier brouillon : faire s’écouler de l’air autour d’un profil et rendre l’écoulement visible. Change l’angle d’attaque et le champ réagit. Il alterne entre vitesse, vorticité et un champ de type pression. Il dessine sa propre forme. Il découpe une aile en deux éléments, aile et flap, anime le flap, et voit la traînée devenir instable lorsque la géométrie ou l’angle dépassent le seuil.
C’est un jouet, et je le dis comme un compliment. Assez petit pour taquiner, assez sérieux pour enseigner quelque chose.
Il vient avec la génération de profils NACA à 4 et 5 chiffres : vous tapez 2412, 0012 ou 23012 et vous obtenez la forme sans rien charger du disque. Il y a aussi un profil d’aérofoil neko. Il vole comme une brique. C’est là toute la magie.
Qualitatif, non CFD validé
C’est la partie que je tiens à dire haut et fort : le Kutta n’est pas un outil CFD validé.
Il tourne sur des unités de réseau (lattice), pas physiques. Il obtient la forme de l’écoulement (stagnation au nez, sillage, succion au-dessus, séparation lorsque l’angle monte) et il introduit volontairement des chiffres erronés. Utilisez-le pour l’intuition, pour l’enseignement, pour la curiosité d’aéromodélisme, pour une démo jolie sur le projecteur. N’utilisez pas pour dimensionner une aile réelle.
Cette ligne est tracée de façon délibérée. Je fais plus confiance à un outil honnête sur ce qu’il est qu’à celui qui prétend être plus.
Comment ça fonctionne
Le solveur est une méthode Lattice-Boltzmann 2D, D2Q9 avec collision BGK. Un écoulement libre entre par la gauche ; le corps est une paroi sans glissement faite avec un bounce-back à mi-chemin ; les forces proviennent de l’intégrale de la pression sur les faces du corps. Ainsi il obtient la traînée de forme et la portance, mais pas tout. Le frottement de surface est ignoré, donc la traînée est faible. Limitation connue, pas un bug caché.
Le code se divise en quelques paquets sans lourdeur de rendu, qui testent sans écran : lbm est le solveur, foil génère les formes NACA, scene et sceneio gardent les scènes modifiables, viz réalise les cartes de couleur et les particules de fumée. En parallèle se trouve l’application : la boucle d’Ebitengine, l’éditeur, les entrées et les menus. Il existe aussi un outil de snapshot qui rend les champs directement en PNG, ce qui est ma façon de vérifier la physique sans ouvrir de fenêtre.
L’éditeur
Kutta dispose d’un éditeur de formes simple. Il dessine une forme fermée, déplace des sommets, tire une poignée Bézier pour courber un arête. Il coupe et reconnecte les formes, ce qui permet de diviser un aérofoil en deux : une aile et un flap, chacun conservant le profil réel.
Ensuite, il y a le mode d’animation : on parcourt une ligne du temps, on dépose des keyframes, on anime la pose de chaque partie pendant que l’écoulement continue de rouler en dessous. Les scènes se sauvegardent sous forme de .afoil, un format textuel court en s-expressions. J’aime les formats que l’on ouvre, lit, diff et commit sans outil spécial.
Pourquoi Go
Go n’est pas le langage que les gens choisissent quand ils veulent un jouet visuel, et une bonne partie de la raison pour laquelle je m’y tiens pour ça est justement celle-ci. Avec Kutta, il m’offre une construction rapide, une compilation croisée sans prise de tête, un code lisible et une vitesse suffisante pour une simulation qualitative en temps réel. Ebitengine gère la fenêtre et la boucle. Ce qui sort est une application de bureau classique : on télécharge un exécutable et on lance.
Il y a une seconde raison, plus discrète. Un projet open source qui produit une image, un son ou une animation est bien plus facile à partager qu’une bibliothèque qui n’a de sens qu’après avoir lu l’API. Cela ne rend pas le projet visuel meilleur. Ça le rend lisible pour celui qui a trois secondes et une molette de souris. Kutta est une idée qui a l’apparence d’une bibliothèque vêtue de quelque chose qu’on peut regarder.
Exécution
Des binaires précompilés et un cask Homebrew se trouvent dans le dépôt. Du code source, comme d’habitude :
go run .
Sous Linux, l’Ebitengine nécessite les paquets de développement Cgo/OpenGL/Audio habituels ; macOS et Windows n’ont besoin de rien de plus.
Kutta est MIT: github.com/crgimenes/kutta. Si un outil visuel petit en Go est votre rayon, un astérisque me dira quel expérience mérite d’être alimentée.




