Réalisé via code_saturne v9.1.0 - le code CFD open-source d'EDF
En bref
L’expérience de Zhang & Chen (2006) reproduit une pièce occupée et ventilée par le sol. De l’air frais y est introduit par deux bouches situées au niveau du plancher, puis extrait par une ouverture au plafond. Les charges thermiques internes sont constituées de quatre mannequins chauffants dissipant chacun W et de six luminaires de W. Les auteurs publient des profils verticaux de température et de vitesse en sept positions, ainsi que l'ensemble des conditions aux limites mesurées. Ce type d’écoulement de convection mixte, résultant de l’interaction entre la ventilation mécanique et les effets de flottabilité, présente une forte stratification thermique et constitue un cas de validation exigeant pour la CFD appliquée au bâtiment.
Ce cas est simulé avec code_saturne v9.1 (approximation de Boussinesq, k-ε, algorithme stationnaire), et comparé à un calcul OpenFOAM v2406 à mise en données identique. Les principaux enseignements :
- Sur un même maillage de 2,7 millions de celulles, code_saturne et OpenFOAM donnent des champs et des profils presque confondus.
- La structure de l'écoulement est correctement restituée : jets de soufflage s'étalant au sol, panaches au-dessus des mannequins, température croissant continûment du sol au plafond. Les vitesses sont reproduites sans biais systématique (écart moyen d'environ 0,02 m/s). La température de la zone d'occupation est en revanche sous-estimée d'environ 0,6 K par les deux codes.
- En imposant les puissances des charges thermiques comme flux à leurs surfaces, seule la convection est modélisée, alors qu'en pratique une partie de cette chaleur s'échange par rayonnement. Cette hypothèse, explication la plus vraisemblable du biais froid, sera examinée dans un article dédié.
Le cas de référence
L’expérience de Zhang et Chen reproduit une pièce occupée et ventilée par le sol, dans laquelle quatre mannequins chauffants et six luminaires constituent les charges thermiques internes. La cellule expérimentale mesure m et est équipée d’un système UFAD (underfloor air distribution). De l’air à est introduit par deux bouches carrées de m de côté, situées au niveau du plancher, puis extrait par une ouverture au plafond. Chaque bouche délivre un débit de m³/s, correspondant à une vitesse débitante moyenne d’environ m/s.
Les quatre mannequins, de dimensions m, dissipent chacun W. Les six luminaires, encastrés au plafond, dissipent chacun W, soit une charge thermique interne totale de W. Une température uniforme, issue des mesures expérimentales, est imposée à chacune des six parois. Les valeurs prescrites diffèrent d’une paroi à l’autre et sont comprises entre et .
La validation repose sur des profils verticaux de température et d’amplitude de vitesse mesurés sur sept mâts, notés V1 à V7, disposés dans le plan médian de la pièce. Chaque profil comporte sept points de mesure, répartis entre et m au-dessus du sol. La température est publiée sous la forme adimensionnelle :

Dans la présente modélisation, les puissances des mannequins et des luminaires sont converties en flux thermiques uniformes appliqués à leurs surfaces, plutôt que d’imposer les températures de surface mesurées. Ce choix correspond à une situation courante en phase de conception, où les puissances dissipées par les équipements sont connues avant leurs températures de fonctionnement.
Modélisation
Le cas est simulé avec deux codes CFD open-source. Le calcul de référence est réalisé avec code_saturne v9.1, tandis qu’un calcul indépendant avec OpenFOAM v2406 et le solveur buoyantBoussinesqSimpleFoam est utilisé pour une vérification croisée. Les deux simulations reposent sur le même maillage, les mêmes propriétés physiques, les mêmes conditions aux limites et les mêmes puissances thermiques. Les schémas de discrétisation et les paramètres de sous-relaxation sont choisis aussi proches que le permettent les formulations propres à chaque code.
Dans les deux modèles, les variations de masse volumique sont prises en compte à l’aide de l’approximation de Boussinesq. La masse volumique est supposée constante dans les équations de conservation, sauf dans le terme de flottabilité :
avec kg/m³, K⁻¹ et K. La turbulence est modélisée par le modèle – standard et le nombre de Prandtl turbulent est fixé à dans les deux codes. Les traitements de proche paroi sont adaptés aux formulations disponibles dans chacun d’eux.
| Paramètre | code_saturne v9.1 | OpenFOAM v2406 |
|---|---|---|
| Masse volumique | kg/m³ | kg/m³ |
| Viscosité dynamique | Pa·s | Pa·s |
| Flottabilité | Boussinesq, K⁻¹, K | mêmes paramètres |
| Turbulence | – standard | – standard |
| Traitement de paroi | loi de paroi à deux échelles | fonctions de paroi correspondantes, dont le modèle de Jayatilleke pour le transfert thermique |
| Prandtl turbulent | ||
| Couplage pression-vitesse | algorithme SIMPLEC stationnaire | algorithme SIMPLE stationnaire |
| Sources thermiques | flux uniformes de W/m² pour les luminaires et de W/m² pour les mannequins | mêmes flux surfaciques |
| Parois de la pièce | températures uniformes imposées, comprises entre et K | mêmes températures |
| Soufflage | température et débit imposés | mêmes conditions |
| Extraction | condition de sortie au plafond | condition équivalente |
Le maillage hexa-dominant est généré avec snappyHexMesh. Il est utilisé directement dans OpenFOAM, puis converti au format MED pour être importé dans code_saturne grâce à meshlane. La géométrie, la connectivité et le nombre de cellules sont ainsi conservés entre les deux calculs.
Dans code_saturne, l’approximation de Boussinesq est activée au moyen du paramètre algo_density_variation. Le coefficient de dilatation thermique et le nombre de Prandtl turbulent sont définis à l’aide de courtes fonctions utilisateur compilées lors du lancement du calcul.
Une étude préalable de sensibilité au maillage a été menée à partir de deux grilles comprenant respectivement et millions de cellules. Les différences observées sur les profils de température et de vitesse aux positions de mesure étant faibles, seuls les résultats obtenus avec le maillage de millions de cellules sont présentés dans la suite.
Résultats et discussion
La figure suivante présente les champs de température (en haut) et de vitesse, accompagnés des lignes de courant (en bas), dans le plan médian , pour code_saturne (à gauche) et OpenFOAM (à droite).

Ces champs illustrent le principe de la ventilation par le sol. Les deux colonnes sombres du champ de température correspondent aux jets d'air frais issus des bouches de soufflage, situées à m dans ce plan. Introduits à 0,70 m/s, ces jets conservent assez de quantité de mouvement pour monter jusqu'à 1,5 m environ, altitude à laquelle leur flottabilité négative s’oppose progressivement à leur mouvement ascendant. Ils atteignent une hauteur d’environ m avant de se défléchir et d’alimenter la partie inférieure de la pièce.
Il en résulte un air plus frais au niveau du sol, puis une température qui augmente continûment avec l'altitude, le haut de la pièce étant alimenté en air chaud par les panaches des sources. Le film le plus chaud, visible sous le plafond, provient des luminaires, dont deux bandeaux traversent le plan représenté. Le champ de vitesse confirme cette organisation : en dehors des jets, les vitesses restent inférieures à 0,1 m/s, et les lignes de courant montrent la convergence de la couche haute vers la bouche d'extraction, au centre du plafond. Les deux codes produisent des champs difficiles à distinguer l'un de l'autre.
Le plan médian ne contient toutefois aucune source de chaleur : les mannequins sont situés à m. La figure suivante présente les mêmes champs dans le plan m, qui traverse deux des quatre mannequins.

Au-dessus de chaque mannequin, l'air chauffé s'élève en un panache bien visible sur le champ de température. Le champ de vitesse montre que ce panache atteint 0,25 à 0,30 m/s, soit davantage que les jets de soufflage à la même hauteur. Les lignes de courant convergent vers le panache depuis l'air ambiant : en montant, celui-ci aspire et entraîne l'air environnant, de sorte que le débit qu'il transporte augmente avec l'altitude. Arrivé sous le plafond, ce débit se déverse dans la partie haute de la pièce et l'alimente en continu. La stratification observée résulte de cet équilibre : les panaches font monter l'air chauffé, et l'extraction au plafond en évacue une partie. Les deux codes restituent ce mécanisme de façon très similaire.
La comparaison quantitative aux mesures porte sur les profils verticaux aux sept mâts.

Sur les sept mâts, les profils calculés montrent une température qui croît continûment du sol au plafond, sans zone homogène. Dès 0,1 m de hauteur, l'air soufflé à 20 °C se réchauffe rapidement au contact du sol, maintenu à près de 24 °C, et par mélange avec l'air ambiant autour des jets. Plus haut, la température augmente de façon régulière, d'environ 1,1 à 1,7 K par mètre, et le profil se raidit légèrement à l'approche du plafond. La valeur , qui correspond par définition à la température de l'air extrait, n'est atteinte que vers 2,2 m, juste sous le plafond où se situe la bouche d'extraction. La stratification occupe ainsi toute la hauteur de la pièce plutôt que de s'organiser en deux couches séparées par une interface marquée, et les points expérimentaux présentent le même comportement continu.
Sur les derniers centimètres sous le plafond, les mâts V1, V2, V3, V5, V6 et V7 présentent une remontée brutale de la température, bien au-delà de : ces mâts aboutissent dans le film d'air chaud entretenu par les luminaires. La remontée est nettement plus faible sur le mât V4, le plus éloigné des bandeaux de luminaires, et dont le sommet se trouve de surcroît à 25 cm de la bouche d'extraction, qui aspire localement ce film chaud.
Les courbes de code_saturne et d'OpenFOAM sont presque confondues sur l'ensemble des mâts, y compris proche du plafond, et les écarts entre codes restent très inférieurs à l'écart aux mesures. La proximité des deux solutions suggère que l’écart principal est associé à une hypothèse de modélisation commune plutôt qu'au choix du solveur. L'écart aux mesures est visible dans la zone intermédiaire : entre 0,5 et 1,7 m, les points expérimentaux sont systématiquement plus chauds que les deux calculs.

Les profils de vitesse se lisent en trois zones. Près du sol, les calculs montrent un courant mince qui s'étale depuis les bouches de soufflage, avec un maximum de 0,10 à 0,13 m/s situé dans les deux premiers centimètres, sous le premier point de mesure. À 0,1 m, les vitesses calculées (0,05 à 0,10 m/s) restent supérieures aux vitesses mesurées (0,02 à 0,07 m/s). Le mât V4, à égale distance des deux bouches, fait exception : le courant de sol y arrive affaibli et le maximum calculé, environ 0,08 m/s, se situe vers 0,3 m. Dans la zone intermédiaire, entre 0,9 et 1,9 m, les mâts centraux V3 à V5 traversent un air presque au repos (moins de 0,02 m/s), tandis que les mâts V1, V2, V6 et V7 conservent un mouvement d'ensemble de 0,05 à 0,08 m/s; les vitesses mesurées y sont du même ordre. Près du plafond enfin, la vitesse calculée remonte sur les mâts centraux, fortement sur V4 dont le sommet se trouve à 25 cm de la bouche d'extraction : les calculs y donnent environ 0,14 m/s à 2,2 m contre 0,06 m/s mesuré, le plus grand écart local de la comparaison, dans la zone d'aspiration où la vitesse varie fortement sur quelques centimètres. Sur l'ensemble des points, le biais reste quasi nul (MBE inférieur à 0,005 m/s) et les courbes des deux codes sont à nouveau presque confondues.
L'accord aux mesures est quantifié par trois métriques calculées sur les points expérimentaux des sept mâts de mesure ( points de mesure), où désigne la grandeur comparée ( ou ) :
La MAE (Mean Absolute Error) mesure l'écart moyen, le biais signé MBE (Mean Bias Error) indique si le calcul surestime ou sous-estime en moyenne, et la RMSE (Root Mean Square Error) pénalise les écarts les plus grands. Les valeurs des profils calculés sont interpolées aux hauteurs des points de mesure.
| Métrique | code_saturne | OpenFOAM |
|---|---|---|
| MAE sur | 0,121 | 0,109 |
| MBE sur | −0,105 | −0,088 |
| RMSE sur | 0,136 | 0,123 |
| MAE sur (m/s) | 0,024 | 0,022 |
| MBE sur (m/s) | +0,003 | +0,002 |
| RMSE sur (m/s) | 0,030 | 0,029 |
Le tableau des métriques précise le constat fait sur les profils de température : le MBE de −0,105 représente la quasi-totalité de la MAE (0,121), ce qui signifie que l'erreur est presque intégralement un biais systématique froid, et non une dispersion. Entre 0,5 et 1,7 m, c'est-à-dire dans la zone d'occupation, le calcul est trop froid d'environ 0,6 K en moyenne. Ce biais est semblable pour les deux codes ce qui oriente vers un ingrédient physique manquant plutôt que vers un artefact numérique.
En imposant les puissances des charges sous la forme de flux thermiques à leurs surfaces, sans modèle radiatif, l’énergie est transférée à l’air uniquement par convection. La chaleur dissipée par les luminaires alimente ainsi principalement des panaches ascendants dirigés vers la partie supérieure de la pièce, sans transfert radiatif direct vers le sol ou les occupants. Dans l’expérience, une fraction de cette énergie est vraisemblablement échangée par rayonnement avec les surfaces situées dans la partie inférieure de la pièce. L’absence de ce mécanisme dans les deux calculs constitue donc une explication plausible du biais froid observé dans la zone d’occupation, d’autant que les essais menés avec un autre modèle de turbulence et un autre traitement de proche paroi ne l’ont pas réduit de manière significative. Cette hypothèse sera examinée dans un article consacré à la modélisation explicite des échanges radiatifs.
Pour conclure
L'expérience de ventilation par le sol de Zhang et Chen a été simulée avec deux codes CFD open-source, code_saturne v9.1 et OpenFOAM v2406, à maillage, propriétés physiques et conditions aux limites identiques. Trois enseignements se dégagent.
Les deux codes donnent des résultats presque confondus, sur les champs comme sur les profils aux sept mâts de mesure. Sur ce cas de convection mixte fortement influencé par les effets de la flottabilité, code_saturne constitue une alternative crédible à OpenFOAM, et la chaîne mise en œuvre, du maillage snappyHexMesh converti au format MED, grâce à meshlane jusqu'à la mise en données Boussinesq en algorithme stationnaire, est entièrement open-source.
La physique de la ventilation par le sol est correctement restituée : étalement des jets d'air frais au sol, panaches au-dessus des mannequins, température croissant continûment du sol au plafond. Les vitesses sont reproduites sans biais systématique, avec des écarts localisés dans le courant de sol et dans la zone d'aspiration de l'extraction.
La température de la zone d'occupation reste en revanche sous-estimée d'environ 0,6 K, de façon semblable pour les deux codes. La proximité des deux solutions suggère que l’écart principal est associé à une hypothèse de modélisation commune plutôt qu’à l’implémentation propre à l’un des deux codes. L'absence de transfert radiatif entre les charges thermiques et les surfaces basses de la pièce en est l'explication la plus vraisemblable. Sa prise en compte fera l'objet d'un prochain article.

Références
- Z. Zhang, Q. Chen, Experimental measurements and numerical simulations of particle transport and distribution in ventilated rooms, Atmospheric Environment 40 (2006) 3396–3408. [doi:10.1016/j.atmosenv.2006.01.014]
- code_saturne v9.1, EDF. [code-saturne.org]
- OpenFOAM v2406, OpenCFD Ltd. [openfoam.com]
- meshlane, visitez https://github.com/simvia-tech/meshlane