
La plupart des « tornades dans le navigateur » sont des animations scriptées ou des effets de particules. Celle-ci résout vraiment la physique à chaque image. Voici les trois traits qui le prouvent.
Advection semi-lagrangienne RK2 → champ de divergence → projection de pression Jacobi rouge-noir × 14 itérations → soustraction du gradient → fermeture sous-maille de Smagorinsky-Lilly. Tout en compute shaders TSL/WGSL.
|V|max, ΔPmin, |ω|max sont des réductions parallèles exécutées sur le champ 3D — pas des nombres saisis dans l'UI. Modifier un slider modifie immédiatement ces mesures, parce qu'elles sont vraiment calculées.
Plans de coupe XZ et XY. Isosurfaces multi-enveloppes de vorticité. Glyphes vectoriels. Streamlines animées en comète. Contours, LIC, volumétrique de ω. Sept champs physiques. Treize presets prêts à l'emploi.
On ne voit pas le vent. On voit l'eau qui condense parce que la pression a chuté.
17 captures du canvas WebGPU — sorties brutes du solveur, aucune retouche. Chaque image est un PNG produit par bun capture --recipe … depuis l'app live. Cliquez pour agrandir.

















©Phantom · @phantomblast666
Un simulateur de tornade interactif parallèle, développé par Phantom — connu sous PhantomBlast28 sur TikTok. Approche différente, esthétique différente : ça vaut le coup d'avoir les deux ouverts en même temps, et de comparer ce que deux développeurs indépendants font du même phénomène.
De la rotation à l'entonnoir nuageux visible — la cause-effet d'une tornade tient en quatre temps. Chaque preset de l'app correspond à une étape : chargez-le et le solveur recompose la scène devant vous.
Un anneau étroit de vent tangentiel — le mur de l'œil. À l'intérieur, l'œil est calme. À l'extérieur, ça décroît. Profil de Rankine combiné, exactement ce qu'on voit en radar Doppler sur les vraies tornades.
Au ras du sol, l'air est aspiré depuis toutes les directions à la fois. Comme il ne peut pas s'accumuler sur l'axe, il monte. Une tornade est essentiellement un aspirateur géant — convergence horizontale au sol, éjection verticale dans l'orage parent.
Pour qu'une parcelle d'air décrive un cercle, il faut que la pression chute au centre. À Vmax = 95 m/s, ΔP atteint −110 hPa — soit 10 % de moins que la pression atmosphérique normale, dans une colonne de 50 m de large. C'est ça qui aspire les toitures.
L'air qui monte se détend, donc refroidit. Sa vapeur d'eau condense plus bas qu'ailleurs. Cet entonnoir de gouttelettes est ce qu'on voit d'une tornade. Le vent et la rotation, eux, sont strictement invisibles — sauf à travers le nuage qu'ils provoquent.
La version longue, illustrée — 11 chapitres pour comprendre comment fonctionne une tornade en suivant les sorties réelles du simulateur. Chaque image est une vraie capture du canvas WebGPU — pas de schéma, pas d'illustration de manuel.
Une explication illustrée à partir des sorties en direct du simulateur. Chaque image ci-dessous est une vraie capture PNG du canvas WebGPU — pas de schéma, pas d'illustration de manuel. Ce que vous voyez, c'est ce que le solveur Navier–Stokes a réellement produit à partir des paramètres indiqués dans chaque légende.
Chaque illustration de cette doc a un préréglage correspondant dans l'application — utilisez le menu « 📷 Préréglage… » pour voir n'importe quelle figure en direct, navigable à la souris ou au doigt, avec les vrais paramètres derrière.
L'application démarre directement en vue scientifique, la plus utile pour comprendre la tornade. La vue présente un cube de simulation WebGPU : les coupes colorées, les lignes de courant et les isosurfaces sont toutes calculées à partir du champ de vent simulé.
|V|, V_θ, V_r, V_z, ΔP, |ω|, nuage, T') changent la grandeur affichée.XZ et XY, le contraste du champ, et les paramètres propres aux couches actives.Rmax, Vmax, le rapport de rotation S, l'afflux, la température, l'humidité, etc.Une tornade est une colonne d'air en rotation violente reliant un nuage d'orage en altitude au sol. Son trait caractéristique est la vorticité — une mesure de l'intensité du tourbillonnement local en chaque point. Si l'on trace les régions où la vorticité dépasse un certain seuil, on obtient ceci :
Le tube est étroit mais haut — typiquement 50 à 500 m de diamètre, sur plusieurs kilomètres de hauteur. À l'intérieur du tube, les vents peuvent dépasser 100 m/s (échelons EF4–EF5 sur l'échelle de Fujita améliorée).
Vu en coupe plutôt qu'en isosurface, le même tube ressemble à ça :
Si l'on coupe horizontalement la base du tube et que l'on colorie la vitesse tangentielle du vent (positive = sens trigonométrique vu d'en haut), l'empreinte d'un tourbillon saute aux yeux :
Le rayon de cet anneau est l'un des deux nombres qui définissent une tornade : R_max — la distance entre l'axe et le pic de vent. Le pic lui-même est V_max. Ces deux valeurs résument à elles seules la taille et la puissance du phénomène.
L'air ne tourne pas indéfiniment dans une boucle fermée — il doit venir de quelque part et aller quelque part. La vitesse radiale (composante du vent dirigée vers l'axe ou s'en éloignant) révèle l'afflux :
Cet afflux doit bien aller quelque part — et comme il ne peut s'accumuler sur l'axe, il monte. La tornade est essentiellement un gigantesque tube aspirant.
Convergence horizontale au sol, courant ascendant vertical jusque dans l'orage parent. Ce courant ascendant se voit directement sur la composante verticale du vent V_z :
Pourquoi l'air converge-t-il, au juste ? La deuxième loi de Newton : pour qu'une parcelle d'air décrive un cercle, il faut une force centripète dirigée vers l'axe. La nature la fournit via un gradient de pression — la pression doit être plus basse au centre qu'à l'extérieur, de sorte que l'air soit « pressé » vers l'intérieur.
C'est ce déficit qui détruit réellement les bâtiments : les vents violents tirent sur la structure pendant que la chute de pression tente d'arracher la toiture.
Le déficit de pression du chapitre précédent a une autre conséquence, et c'est elle qui rend la tornade visible : quand un gaz se détend, il se refroidit. C'est la loi de l'adiabatique sèche, qu'on apprend au lycée et qui décrit ce qui se passe à chaque instant dans l'atmosphère.
Mathématiquement, pour un gaz parfait subissant une transformation sans échange de chaleur :
T_local = T₀ · (p_local / p_référence)^(R/c_p)
avec R/c_p ≈ 0,286 pour l'air sec. Concrètement : si la pression chute de 10 % à température constante d'origine, la température chute d'environ 3 %. Au cœur d'une tornade EF4 où ΔP atteint −100 hPa (soit −10 % de la pression atmosphérique normale), cela donne ΔT ≈ −9 K.
On peut directement visualiser ce refroidissement dans le simulateur :
Comparez les deux presets dans l'app : « Déficit de pression » et « T' (refroidissement adiabatique) » montrent la même structure spatiale dans deux palettes différentes. C'est la cause (la chute de pression) et l'effet (la chute de température), strictement liés par l'équation ci-dessus.
Le déficit de pression a une conséquence visible : l'air qui spirale vers l'axe se détend en montant ; en se détendant, il refroidit ; et en refroidissant suffisamment, sa vapeur d'eau se condense. C'est ce qui rend la tornade visible — un nuage en forme d'entonnoir descend depuis la base du nuage convectif jusqu'au sol.
L'humidité ambiante détermine la hauteur du LCL — plus l'air est sec, plus le LCL est haut, plus le funnel reste « accroché » au nuage et ne touche pas le sol. Une tornade dans de l'air sec est donc en grande partie invisible : seul le nuage de poussière soulevé au sol trahit son existence.
Jusqu'ici, nous avons découpé le vent en V_θ, V_r, V_z — mais le flux réel est une spirale tourbillonnante combinant les trois. En traçant la norme du vent avec une convolution par intégrale linéaire (LIC) par-dessus, on capture tout en une seule image :
C'est exactement ce que donnerait une superposition radar Doppler réflectivité-et-vitesse d'une vraie tornade, à beaucoup plus fine résolution.
Détail subtil mais important : toutes les tornades ne se ressemblent pas à l'intérieur. Il existe un paramètre de contrôle, le rapport de swirl S — grossièrement, le rapport entre la rotation de l'air au bord du domaine et son afflux radial. Le franchissement d'un seuil critique (S ≈ 0,6, le seuil de Davies-Jones) fait basculer le tourbillon dans un régime différent.
Faible swirl (S = 0,4) — tourbillon unicellulaire :
Swirl plus élevé (S = 0,85) — colonne étroite et concentrée :
Si l'on pousse le rapport de swirl assez haut (S ≈ 1,2 ici), le courant descendant central du tourbillon bicellulaire devient instable. Le tube unique se fragmente en 2 à 6 sous-tourbillons qui orbitent autour de l'axe principal comme des engrenages d'un système planétaire.
Les vitesses de vent à l'intérieur des sous-tourbillons s'ajoutent à la rotation du tourbillon parent — produisant localement les vents les plus rapides jamais mesurés dans l'atmosphère (~140 m/s, ~500 km/h).
Les tornades d'El Reno (2013), de Hackleburg (2011) et de Greensburg (2007) ont toutes été observées en configuration multi-tourbillonnaire pendant leurs phases les plus violentes.
Pour fabriquer une vraie tornade, il faut quatre ingrédients réunis au même endroit, au même moment :
S'il manque un seul de ces ingrédients, on a de la pluie, on a un orage, on a un gustnado — mais pas de tornade. Avoir les quatre réunis au même endroit est météorologiquement rare, ce qui explique que les tornades soient relativement peu fréquentes.
Une fois la simulation lancée et le tourbillon formé, le HUD affiche uniquement des valeurs réellement mesurées dans la simulation — pas des objectifs théoriques ni des valeurs saisies dans les paramètres. Ces mesures viennent d'une réduction GPU du champ 3D :
|V|maxvitesse maximale réellement présente dans le domaine.Ventconversion de cette vitesse maximale en mph.ΔP minchute de pression minimale simulée, convertie en hPa.|ω|maxvorticité maximale réellement mesurée.Âge donnéestemps depuis la dernière lecture GPU réussie.IPSimages par seconde.Sur mobile, le HUD est volontairement compact : il affiche seulement l'intensité EF déduite du vent simulé, la vitesse maximale mesurée et les IPS. Le détail complet reste disponible sur ordinateur.
Toutes les figures ont été générées avec bun capture --recipe … (ou des paramètres personnalisés) directement depuis le canvas WebGPU de ce simulateur. Pour les regénérer, assurez-vous que bun dev tourne, puis lancez bun capture --all pour rafraîchir toutes les illustrations dans docs/illustrations/.
Construit pour le navigateur d'aujourd'hui — pas de fallback CPU, pas de WebGL. L'intégralité du solveur tourne en compute shaders sur le GPU via TSL.
Aucune installation. Aucune inscription. Si votre navigateur supporte WebGPU (Chrome / Edge ≥ 113, Safari macOS Tahoe / iOS 26+, Firefox ≥ 147), ça marche.