Réalisé via code_saturne v9.1.0 - le code CFD open-source d'EDF
En bref
Le quartier de Niigata (Japon), avec sa tour de 60 m, est le support du cas E d'un benchmark de l'AIJ (Architectural Institute of Japan), publié par Tominaga et al. (2008). Les essais en soufflerie associés fournissent une base de validation exigeante pour la CFD de vent urbain, en particulier pour l’évaluation du confort piéton.
Dans cette étude, deux solveurs open-source sont comparés sur le même cas : code_saturne v9.1 et OpenFOAM v2512. Les deux calculs utilisent le même maillage, la même direction de vent, le même profil d’entrée de couche limite atmosphérique et le même modèle de turbulence k-ω SST en modélisation URANS.
Les principaux enseignements sont les suivants :
- Les deux codes donnent des performances globales très proches. Sur l’ensemble des sondes, le coefficient de corrélation vaut 0.783 pour code_saturne et 0.774 pour OpenFOAM. Les RMSE sont également très proches : 0.196 pour code_saturne et 0.204 pour OpenFOAM.
- En zone exposée, l’accord avec la soufflerie est satisfaisant. Les deux codes reproduisent correctement les accélérations autour des bâtiments.
- Dans les zones de sillage, derrière les bâtiments, les vitesses sont sous-estimées par les deux codes. Cette sous-estimation apparaît avec les deux solveurs, à maillage et modèle de turbulence identiques. Elle doit donc être interprétée avant tout comme une limite de la modélisation RANS k-ω SST sur ce type d’écoulement séparé, plutôt que comme un défaut propre à code_saturne ou à OpenFOAM.
- Le calcul instationnaire est le choix numérique le plus robuste pour ce cas. Les signaux de vitesse dans le sillage montrent une dynamique périodique cohérente avec un écoulement détaché derrière une géométrie à arêtes vives. L’URANS permet d’obtenir des moyennes temporelles exploitables, même s’il ne corrige pas la sous-estimation observée dans le sillage.
- code_saturne se comporte comme une alternative crédible à OpenFOAM pour ce type d’étude. Sur ce benchmark de référence, les deux solveurs conduisent à des conclusions d’ingénierie cohérentes : zones d’accélération et zones protégées très similaires, et mêmes limites dans le sillage.
Pourquoi ce cas ?
Entre les bâtiments, le vent peut accélérer au point de rendre une place ou un trottoir inconfortable, voire dangereux. Anticiper ce risque dès la conception est aujourd'hui un usage courant de la CFD, qui prédit l'accélération du vent au niveau du sol en tout point d'un quartier. Reste à s'assurer que cette prédiction est fiable, et c'est précisément ce qu'un cas validé en soufflerie comme ce benchmark permet de vérifier.
Le cas étudié est le cas E du benchmark AIJ dédié au vent urbain à hauteur de piéton : un quartier réel, reproduit en soufflerie à l’échelle 1:250, dont la tour principale culmine à 60 m. Les données de référence proviennent de Tominaga et al. (2008).
Ce benchmark présente trois intérêts.
D’abord, il s’appuie sur des données expérimentales de référence : géométrie, profil de couche limite atmosphérique, positions de mesure et rapports de vitesse à hauteur de piéton. Les simulations se comparent ainsi directement à une base expérimentale indépendante.
Ensuite, il représente une géométrie urbaine réaliste, où l’écoulement présente à la fois des accélérations locales et des sillages instationnaires, contrairement à un cas académique simple.
Enfin, il offre un cadre contrôlé pour comparer deux implémentations CFD open-source. L’enjeu n’est pas de désigner un meilleur solveur, mais de vérifier si, à protocole identique, les deux codes conduisent aux mêmes conclusions physiques et aux mêmes décisions d’ingénierie.
Configuration du cas

Géométrie et échelle. La géométrie est traitée entièrement à l'échelle maquette 1:250. La tour principale mesure m à cette échelle (60 m en grandeur réelle). Le fichier CAO BD_caseE.stl provient du jeu de données du benchmark et est fourni directement à l'échelle maquette.
Domaine de calcul. Les dimensions du domaine suivent les bonnes pratiques COST 732 et AIJ pour la CFD en environnement urbain : environ en amont, latéralement et au-dessus de la zone bâtie, et en aval, avec m la hauteur de la tour. À l'échelle maquette, cela donne m, m et m, soit une hauteur d'environ .
Similitude de Reynolds. Le nombre de Reynolds basé sur la hauteur de la tour est de l’ordre de , avec (air) et .
Profil d'entrée (couche limite atmosphérique). Le profil de vitesse d'entrée mesuré en soufflerie est imposé directement via une routine utilisateur dans code_saturne et via fixedProfile pour OpenFOAM (voir figure ci-dessous). Les profils de turbulence ( et ) sont imposés de la même façon, tabulés à partir des mesures.

Direction du vent. La direction simulée est le secteur W (vent d'Ouest). Dans le repère utilisé ici, le flux entre par la face xMin et sort par xMax : l’écoulement progresse donc dans la direction +x.

Sondes. Quatre-vingts positions de mesure sont distribuées autour de la tour et des immeubles, voir l'image ci-dessous, afin de mesurer le rapport de vitesse à hauteur de piéton, défini par (à 2 m réels), soit m à l'échelle maquette.
| Paramètre | Valeur |
|---|---|
| Échelle maquette | 1:250 |
| Hauteur tour principale (maquette) | m (60 m réels) |
| Viscosité cinématique | |
| Reynolds | |
| à m | |
| Loi puissance (approx., près du sol) | |
| piéton (maquette) | m (2 m réels) |
| Direction de vent | secteur W (flux ) |
| Sondes | 80 positions |
| Source données expérimentales | AIJ UWE Benchmark Dataset – Case E (Niigata) |
Deux codes, un protocole commun
L'objectif est de placer les deux codes sur un pied d'égalité : même géométrie, même maillage, même physique, et pour chacun les réglages numériques que ses bonnes pratiques recommandent. La comparaison doit permettre d'isoler l'effet du solveur de celui de la modélisation.
Maillage partagé. Un unique maillage est généré grâce à snappyHexMesh, avec une cible de ~1.37 M de cellules. Ce maillage est au format polyMesh, directement exploitable par OpenFOAM, puis converti sans modification au format .med pour code_saturne via le package python meshlane. Les deux codes tournent ainsi sur la même grille. Le raffinement près du sol est isotrope et suffisamment fin pour résoudre l'écoulement à hauteur de piéton. Aucune couche prismatique n'est ajoutée aux parois des bâtiments : on s'appuie sur des lois de paroi, ce qui simplifie la génération de maillage.
La convergence en maillage a été vérifiée côté code_saturne : un raffinement supplémentaire du maillage n'améliore pas significativement les prédictions des vitesses aux 80 sondes. La prédiction de cette grandeur est donc considérée comme indépendante du maillage sur la grille retenue (~1.37 M de cellules).
Physique commune. Les deux calculs utilisent le modèle de turbulence k-ω SST et le traitement de paroi all-y+ (loi de Spalding). Ce traitement est adapté à la plage de y+ obtenue sur un maillage sans couche prismatique, où la première cellule peut tomber dans la zone tampon ou la région logarithmique selon la zone de la paroi.
URANS des deux côtés. Les écoulements de sillage, derrière les bâtiments, sont physiquement instationnaires. Le RANS stationnaire ne converge pas de manière propre sur ce type de géométrie urbaine à arêtes vives : les résidus oscillent et les sondes de sillage présentent une périodicité marquée, constat commun aux deux codes. L'URANS, qui laisse évoluer les modes instationnaires cohérents et en construit une moyenne temporelle, est l'approche adaptée. code_saturne tourne avec un couplage SIMPLEC transitoire, OpenFOAM avec pimpleFoam. Les métriques de comparaison sont calculées sur des moyennes temporelles convergées.
| code_saturne v9.1 | OpenFOAM v2512 | |
|---|---|---|
| Maillage | ~1.37 M cellules (.med, meshlane) | ~1.37 M cellules (polyMesh) |
| Turbulence | k-ω SST | k-ω SST |
| Traitement de paroi | loi de Spalding all-y+ | nutUSpaldingWallFunction |
| Proche paroi | raffinement isotrope, sans couche prismatique | raffinement isotrope, sans couche prismatique |
| Résolution transitoire (URANS) | couplage SIMPLEC | couplage PIMPLE (pimpleFoam) |
| CL entrée | profil mesuré tabulé (routine utilisateur) | profil mesuré tabulé (fixedProfile) |
Confrontation à la soufflerie
Les deux codes sont comparés à la soufflerie sur le rapport de vitesse à hauteur de piéton, sur les 80 sondes du benchmark, voir figure ci-dessous. Les calculs étant instationnaires (URANS), ce rapport est évalué à partir de la vitesse moyennée dans le temps sur la solution convergée, et comparé au rapport de vitesse mesuré en soufflerie.

L'accord est satisfaisant dans les zones exposées et les couloirs d'accélération, là où l'écoulement reste attaché et bien guidé par les façades : c'est le régime où la modélisation RANS est classiquement la plus fiable. Les points les plus sous-estimés, de façon comparable par les deux codes, correspondent aux zones de sillage, derrière les bâtiments, marquées par des décollements et des recirculations. Cette sous-estimation partagée renvoie à une limite commune de la modélisation de la turbulence, développée plus loin.
Quantitativement, l'écart à la soufflerie se résume par quatre indicateurs, calculés sur les 80 sondes :
- la corrélation R (coefficient de Pearson) mesure si la simulation reproduit bien les variations du rapport de vitesse d'une sonde à l'autre. Elle vaut 1 pour un accord parfait des tendances, 0 en l'absence de corrélation.
- le RMSE (erreur quadratique moyenne) donne l'écart typique entre vitesse simulée et mesurée, exprimé dans l'unité du rapport de vitesse.
- le biais est l'erreur moyenne signée. Un biais négatif signale une sous-estimation systématique des vitesses.
- le hit-rate est la proportion de sondes dont l'écart à la soufflerie reste sous ±25 %, un seuil de tolérance courant dans les recommandations AIJ.
Métriques globales (80 sondes)
| R | RMSE | biais | hit ±25 % | |
|---|---|---|---|---|
| code_saturne v9.1 | 0.783 | 0.196 | -0.049 | 32 % |
| OpenFOAM v2512 | 0.774 | 0.204 | -0.052 | 36 % |
Les quatre indicateurs sont très proches entre les deux codes. Les écarts entre code_saturne et OpenFOAM sont faibles devant l'erreur que chacun commet vis-à-vis de la soufflerie, et ne permettent pas de désigner un solveur plus performant. Le nuage de points le confirme : les deux jeux se mêlent autour de la diagonale, qui correspond à un accord parfait entre CFD et soufflerie. Les points situés sous la diagonale traduisent une vitesse calculée inférieure à la vitesse mesurée, c'est-à-dire une sous-estimation. Les deux codes s'écartent ensemble sous la diagonale dans le sillage, où les vitesses sont systématiquement sous-estimées.

Champs locaux : des solutions très proches
Au-delà des métriques ponctuelles aux sondes, la comparaison des champs de vitesse à hauteur de piéton sur l'ensemble du domaine confirme le bon accord entre les deux codes.

Les deux codes identifient globalement les mêmes zones de confort et d'inconfort piéton : les couloirs entre la tour et les immeubles adjacents présentent des accélérations comparables, et les sillages derrière les bâtiments sont délimités de façon très similaire. Les zones à rapport de vitesse élevé et les zones protégées se correspondent largement entre les deux simulations.
Cet accord de champ va au-delà de la simple correspondance des métriques aux 80 sondes. Il indique que les deux solveurs, partant du même maillage et de la même physique, produisent des champs de vitesse très proches : ce que l'on observe n'est pas une coïncidence statistique sur un sous-ensemble de points, mais une réponse RANS cohérente entre deux implémentations indépendantes.
En pratique, pour un bureau d'études travaillant sur le confort piéton, les deux codes conduisent aux mêmes décisions d'ingénierie. Les zones à traiter, à protéger ou à surveiller ressortent identiques quelle que soit l'implémentation retenue, si bien que le choix du solveur n'infléchit pas, à ce niveau, les recommandations d'aménagement.
La limite : le modèle, pas le code
La sous-estimation des vitesses dans les zones de sillage est la limite principale de cette étude. Elle est partagée par les deux codes, ce qui éclaire son origine.
Deux implémentations indépendantes, sur le même maillage et avec la même modélisation, sous-estiment la vitesse dans les zones de sillage dans des proportions très semblables. C'est la modélisation elle-même qui est en cause : ici, le modèle k-ω SST en régime RANS, avec sa viscosité turbulente isotrope et son hypothèse de Boussinesq. Dans le sillage d'un bâtiment à arêtes vives, où le décollement est imposé par les arêtes, l'hypothèse d'isotropie de la turbulence est particulièrement mal adaptée : les tensions de Reynolds normales jouent un rôle important dans le mélange, et leur représentation par une viscosité scalaire entraîne une sous-diffusion turbulente dans le sillage, donc une sous-estimation de la vitesse de recouvrement.
L'URANS ne lève pas cette limite. Il résout l'instationnarité à grande échelle du sillage (le lâcher tourbillonnaire), mais la turbulence reste entièrement modélisée par la même fermeture k-ω SST, avec la même viscosité turbulente isotrope.
Améliorer la prédiction dans le sillage suppose de relâcher l'hypothèse d'isotropie mise en cause plus haut. Deux voies sont possibles. La première reste dans le cadre RANS, mais avec une fermeture qui transporte les tensions de Reynolds (modèle RSM) au lieu de les réduire à une viscosité scalaire. La seconde résout explicitement les grandes structures turbulentes du sillage plutôt que de toutes les modéliser : simulation aux grandes échelles (LES) ou approche hybride RANS-LES (DDES, Delayed Detached Eddy Simulation). Ces approches améliorent souvent l'accord avec la soufflerie dans le sillage, au prix d'un coût de calcul nettement plus élevé pour celles qui résolvent les grandes échelles. Elles deviennent pertinentes lorsque le sillage est la zone d'intérêt principale, par exemple si un espace public ou une entrée de bâtiment se situe directement sous le vent d'un bâtiment.
Pour la grande majorité des études de confort piéton à l'échelle d'un quartier, le RANS/URANS k-ω SST reste une approche adaptée. Et pour l'application, c'est plutôt rassurant : l'écart résiduel se situe dans les zones de sillage à faible vitesse, les moins critiques pour le piéton, tandis que les zones à vitesse élevée qui déterminent l'inconfort et le risque sont, elles, bien capturées par les deux codes. Le coût de calcul reste maîtrisé et les recommandations d'aménagement issues des deux solveurs sont cohérentes.
Pour conclure
Sur le benchmark de référence AIJ Case E (Niigata), un cas de vent urbain réaliste validé en soufflerie, code_saturne v9.1 fait jeu égal avec OpenFOAM v2512.
Les deux codes se rejoignent sur plusieurs plans. Les métriques globales sont très proches (R = 0.783 et 0.774, RMSE = 0.196 et 0.204). En zone exposée, les deux codes reproduisent correctement les mesures de soufflerie. Dans le sillage, la sous-estimation est partagée et d'amplitude comparable. Les champs locaux de vitesse à hauteur de piéton sont très proches, et les recommandations d'aménagement qui en découlent convergent.
Sur le plan méthodologique, deux points méritent d'être retenus pour la pratique.
Le premier concerne le choix de l'URANS. Le sillage d'un bâti à arêtes vives étant intrinsèquement instationnaire, le RANS stationnaire ne converge pas proprement. L'URANS est alors l'approche adaptée, pour sa robustesse et sa convergence propre, indépendamment de la précision du modèle de turbulence.
Le second concerne la limite dans le sillage. La sous-estimation des vitesses derrière les bâtiments tient au modèle de turbulence k-ω SST, et non aux solveurs : elle est partagée par les deux codes. Lorsque le sillage est la zone d'intérêt principale d'une étude (espace public, entrée de bâtiment ou cheminement piéton situé sous le vent d'un bâtiment), la voie d'amélioration passe par une modélisation qui relâche l'hypothèse d'isotropie de la turbulence : fermeture aux tensions de Reynolds (RSM) en RANS, ou méthodes résolvant les grandes échelles (LES, DDES), au prix d'un coût de calcul plus élevé.
Pour une équipe qui travaille sur le confort piéton et cherche un solveur open-source validé sur des benchmarks de référence, code_saturne est une alternative crédible à OpenFOAM. Les deux codes, correctement paramétrés sur le même protocole, produisent des solutions physiques très proches. Le choix entre eux peut alors reposer sur d'autres critères : intégration dans la chaîne numérique existante, support institutionnel, compatibilité avec d'autres physiques couplées, ou simplement familiarité de l'équipe avec l'un ou l'autre environnement.

Références
- Tominaga, Y., Mochida, A., Yoshie, R., Kataoka, H., Nozu, T., Yoshikawa, M., Shirasawa, T. (2008). AIJ guidelines for practical applications of CFD to pedestrian wind environment around buildings. Journal of Wind Engineering and Industrial Aerodynamics, 96(10-11), 1749-1761. DOI : 10.1016/j.jweia.2008.02.058.
- Tominaga, Y., Kikumoto, H., Okaze, T. AIJ UWE Benchmark Dataset, Case E (Niigata) : essais en soufflerie d'un quartier urbain réel de Niigata. Zenodo, licence CC-BY 4.0. DOI : 10.5281/zenodo.15429017.
- Architectural Institute of Japan. Guidebook for CFD Predictions of Urban Wind Environment. aij.or.jp.
- Franke, J., Hellsten, A., Schlünzen, H., Carissimo, B. (2007). Best Practice Guideline for the CFD Simulation of Flows in the Urban Environment, COST Action 732. Synthèse : International Journal of Environment and Pollution 44(1-4), 419-427, DOI : 10.1504/IJEP.2011.038443.