Réalisé via code_saturne v9.1.0 - le code CFD open-source d'EDF
En bref
L'hélice marine de référence PPTC VP1304 (essais SVA Potsdam, SVA Report 3752, Barkmann 2011) a été simulée en eau libre avec code_saturne v9.1, le solveur CFD volumes finis open-source développé par EDF, puis comparée à l'expérience et à OpenFOAM v2512. L'objectif est de situer code_saturne, conçu hors du maritime, face à OpenFOAM, la référence open-source de l'hydrodynamique navale. Les deux codes tournent sur le même maillage non structuré d'environ 4,1 millions de cellules et la même physique RANS stationnaire k-ω SST (loi de paroi all-, rotor en MRF), chacun avec les réglages numériques recommandés par ses propres bonnes pratiques. Le balayage couvre les coefficients d'avance de 0,267 à 1,6 (9 points). Hors de son domaine historique, code_saturne fait au moins jeu égal avec OpenFOAM.
- Poussée : les deux codes reproduisent la tendance expérimentale en sous-estimant la poussée sur toute la plage. L'écart à l'essai, minimal à moyen régime, se creuse aux faibles et aux fortes avances. code_saturne reste un peu plus proche de l'essai qu'OpenFOAM, un avantage qui tient à son schéma convectif moins dissipatif plutôt qu'au solveur lui-même.
- Couple : les deux codes sont très proches et partagent la même signature. La prédiction est excellente aux avances intermédiaires, et les écarts se confinent aux faibles et aux fortes avances.
- Rendement : au point de rendement maximal, l'écart à l'essai reste limité : −9,1 % pour code_saturne, −12,9 % pour OpenFOAM. À forte avance, la poussée tend vers zéro et le rendement devient hypersensible, ce qui amplifie les écarts des deux côtés.
- Champs locaux : sillage et pression pariétale sont quasi superposables à - les deux codes résolvent bien le même problème RANS, et l'écart intégré relève du réglage numérique, non du solveur.

Pourquoi le PPTC ?
Le PPTC (Potsdam Propeller Test Case) repose sur l'hélice VP1304, une hélice à pas réglable devenue une référence classique pour la validation de la CFD hydrodynamique. La géométrie - cinq pales, rapport pas/diamètre à , rapport de surface développée - et la base d'essais associée en font une référence ouverte exigeante. Les mesures retenues ici proviennent du bassin de traction de la SVA Potsdam, consignées dans le SVA Report 3752 (Barkmann, 2011), série « open water test, corrected with idle torque and gap force » intégrant pales et moyeu, à une fréquence de rotation tr/s.
L'essai en eau libre se résume à quatre grandeurs adimensionnelles. Le coefficient d'avance mesure le rapport entre vitesse d'avance et vitesse de rotation, c'est-à-dire le régime de fonctionnement de l'hélice. Le coefficient de poussée adimensionne la poussée , et le coefficient de couple le couple (traditionnellement tracé en pour des raisons d'échelle). Le rendement en eau libre combine les trois précédents et quantifie l'efficacité de conversion de la puissance mécanique fournie à l'arbre en puissance propulsive.
L'intérêt éditorial du cas tient à son positionnement. code_saturne a été développé par EDF pour des applications nucléaires, hydrauliques ou environnementales : le maritime se situe nettement hors de son cœur de domaine historique. OpenFOAM, à l'inverse, est la référence open-source généraliste, portée par une forte communauté navale. Confronter les deux sur une hélice de référence revient donc à demander : un solveur conçu pour d'autres physiques tient-il face à la référence open-source du domaine, sur son propre terrain ?
Configuration du cas
Géométrie : L'hélice VP1304 est à rotation droite, à cinq pales orientables, de diamètre m. Son pas relatif vaut à , son rapport de surface développée , et son rapport de moyeu . La simulation reproduit la configuration d'essai en eau libre du SVA Report 3752 (Barkmann, 2011).
Conditions d'essai : Les calculs sont menés dans l'eau à 15,6 °C ( kg/m³, m²/s), à une fréquence de rotation tr/s, soit une vitesse angulaire rad/s. Le coefficient d'avance est balayé de 0,267 à 1,6 (neuf points calculés). Le nombre de Reynolds, fondé sur la corde de pale à l'échelle modèle, reste compris entre environ et selon l'avance.
Convention d'intégration des efforts : Les coefficients et sont intégrés sur les pales et le moyeu, en excluant le cap aval, conformément à la convention de la série expérimentale de référence. Cette cohérence de périmètre d'intégration entre simulation et essai est indispensable pour une comparaison de coefficients valide.
| Paramètre | Valeur |
|---|---|
| Diamètre | 0,250 m |
| Nombre de pales | 5 |
| Pas relatif () | 1,635 |
| Rapport de surface | 0,779 |
| Rapport de moyeu | 0,300 |
| Masse volumique | 998,99 kg/m³ |
| Viscosité cinématique | m²/s |
| Fréquence de rotation | 15 tr/s ( rad/s) |
| Plage d'avance | 0,267 - 1,6 (9 points) |
| Nombre de Reynolds | |
| Référence d'essai | SVA Report 3752 (Barkmann, 2011) |
Deux codes, un protocole commun
L'objectif est simple : comparer les deux codes sur un pied d'égalité. Même cas, même physique, et pour chacun le jeu de réglages numériques que ses bonnes pratiques recommandent. On ne cherche pas une identité bit-à-bit des schémas - ni possible ni pertinente entre deux solveurs distincts - mais à voir si deux implémentations indépendantes, bien réglées, convergent vers la même solution.
Le maillage est figé en premier, car c'est lui qui conditionne le reste. Un unique maillage non structuré d'environ 4,1 millions de cellules est généré, puis converti sans modification pour chaque solveur - .med pour code_saturne, polyMesh pour OpenFOAM. Le aux parois s'y étend d'environ 0,1 à 90, avec une moyenne proche de 30 sur le périmètre pales/moyeu : selon la zone, la première cellule tombe dans la sous-couche visqueuse, la zone tampon ou la région logarithmique, ce qui impose le traitement de paroi all- (loi de Spalding) adopté des deux côtés. La convergence en maillage a été vérifiée à constant : elle valide le raffinement volumique, la résolution de paroi restant fixée au niveau loi-de-paroi.
La physique, elle aussi, est commune aux deux calculs : RANS incompressible stationnaire, turbulence k-ω SST, et approche en repère tournant figé (Multiple Reference Frame, MRF) dans une zone cylindrique autour de l'hélice à rad/s, qui gèle la position relative des pales et du sillage. Pour une hélice isolée en absence de non-uniformité orthoradiale de l'écoulement amont, le problème est axisymétrique en moyenne et le MRF n'introduit quasiment pas d'erreur, faute d'interaction rotor/stator.
| code_saturne v9.1 | OpenFOAM v2512 | |
|---|---|---|
| Maillage | ~4,1 M cellules (.med) | ~4,1 M cellules (polyMesh) |
| Turbulence | k-ω SST | k-ω SST |
| Traitement de paroi | loi de Spalding all- | nutUSpaldingWallFunction |
| Rotation | MRF (zone cylindrique, rad/s) | MRF (même zone, même ) |
| Schémas convectifs | U : centré 2ᵉ ordre + test de pente · k-ω : amont 1ᵉʳ ordre | U : linearUpwind 2ᵉ ordre · k-ω : amont borné 1ᵉʳ ordre |
| Gradients | Green-Gauss / moindres carrés | Gauss linear |
| Couplage P-V | SIMPLEC | SIMPLE |
| Intégration temporelle | pseudo-pas de temps local | itérations stationnaires sous-relaxées |
| Intégration des efforts | routine cs_user_extra_operations.cpp (pales + moyeu) | functionObject propellerInfo (surfaces du rotor) |
La seule différence de réglage notable est le schéma de convection sur : chaque code retient celui que ses bonnes pratiques recommandent - centré 2ᵉ ordre pour code_saturne, linearUpwind pour OpenFOAM, choisi pour sa robustesse sur ce type de maillage. Le centré étant moins dissipatif, il explique l'essentiel de l'écart résiduel sur les courbes : un effet de réglage, non de solveur. Partout ailleurs (turbulence au 1ᵉʳ ordre, lois de paroi all-), les deux réglages se correspondent.
Dans code_saturne, les coefficients de force et de moment hydrodynamique ne sortent pas directement des résultats standard : une routine utilisateur (cs_user_extra_operations.cpp) intègre à chaque itération les efforts de pression et de frottement sur le périmètre des pales et du moyeu, en excluant le cap aval pour respecter la convention expérimentale. Côté OpenFOAM, le functionObject propellerInfo intègre les efforts sur les surfaces du rotor.
Courbes d'eau libre : code_saturne face à l'expérience et à OpenFOAM

Poussée : code_saturne et OpenFOAM reproduisent correctement la tendance expérimentale, avec une légère sous-estimation de la poussée sur l'ensemble de la plage d'avance, probablement liée aux limites de la modélisation RANS. L'écart est minimal aux régimes intermédiaires, mais s'accentue aux faibles avances, où des décollements apparaissent sur les pales et sont difficilement capturés par la modélisation RANS, ainsi qu'aux fortes avances, où la poussée résulte d'un faible déséquilibre de pression, la rendant très sensible à la moindre erreur locale. Les résultats d'OpenFOAM s'écartent légèrement davantage des mesures que ceux de code_saturne - différence imputable au schéma de convection moins dissipatif retenu dans code_saturne (voir section précédente), non à la modélisation physique, identique des deux côtés.
Couple : code_saturne et OpenFOAM fournissent des résultats très proches et reproduisent correctement les mesures sur l'ensemble de la plage d'avance. L'accord est excellent aux avances intermédiaires, tandis que les écarts se concentrent aux faibles avances, en présence de décollements, et aux fortes avances, lorsque le chargement des pales devient très faible et accroît la sensibilité aux erreurs locales.
Rendement : résultant directement de la poussée et du couple, le rendement reflète naturellement les écarts observés sur ces deux grandeurs. Les deux codes en reproduisent correctement l'évolution expérimentale ; le léger avantage de code_saturne découle de sa meilleure prédiction de poussée. Au point de rendement maximal (), l'écart reste limité à −9,1 % pour code_saturne contre −12,9 % pour OpenFOAM, en cohérence avec la sous-estimation plus marquée de la poussée par ce dernier. Aux fortes avances, les deux codes se dégradent : la poussée tend vers zéro et le rendement devient très sensible aux moindres erreurs locales, ce qui amplifie l'écart d'OpenFOAM.
Cette divergence doit être relativisée : à forte avance, poussée et rendement deviennent très faibles, si bien que de faibles écarts absolus se traduisent par des différences relatives importantes. Dans ce régime hors point de fonctionnement nominal, la robustesse des choix numériques pèse autant que la modélisation physique.
Champs locaux : deux solveurs, une même solution
L'essai en eau libre ne fournit pas de mesure de champ : la comparaison locale est donc menée code-à-code, au point ( m/s), au rendement maximal.

Sillage axial : La coupe méridienne de montre les trois traits attendus d'un sillage d'hélice : un jet accéléré () dans l'anneau balayé par les pales, un déficit de vitesse derrière le moyeu, et une contraction de la veine fluide en aval. Les topologies des deux codes sont très proches.

Pression pariétale : Les cartes du coefficient de pression sur les pales confirment ce constat. La pression est rapportée au champ amont : en incompressible, le niveau de référence est arbitraire et propre à chaque solveur, seul l'écart a un sens. Sur une échelle commune de à , les distributions des deux codes sont quasi superposables sur la face aspiration comme sur la face pression, et la répartition radiale de la charge est similaire. L'argument est direct : deux implémentations indépendantes, partant du même maillage et de la même physique, convergent vers une solution de champ quasi identique. Cela établit que la solution n'est pas un artefact propre à un code donné, mais bien la réponse RANS commune à ce problème.
La limite : la modélisation, pas le code
La proximité des résultats obtenus avec code_saturne et OpenFOAM constitue sans doute l'enseignement principal de cette étude. Deux implémentations indépendantes, exécutées sur le même maillage avec la même modélisation physique, produisent des courbes d'eau libre très proches, des champs de vitesse et de pression quasi superposables, ainsi que des écarts comparables vis-à-vis de l'expérience. Ce que l'on observe est donc la réponse RANS du problème, et non la signature d'un solveur particulier.
Le biais que les deux codes partagent face à l'expérience tient dès lors plus vraisemblablement aux hypothèses de modélisation. La première limite est la résolution de paroi : traitée par lois all-, elle conditionne la prédiction du frottement sur toute la plage d'avance, et c'est l'aspect que le raffinement à constant n'a pas couvert. À forte avance s'y ajoute l'absence de modèle de transition de la couche limite : au vu des Reynolds, lorsque les pales sont peu chargées, la couche limite peut rester laminaire sur une part importante de la corde, alors que le RANS k-ω SST la suppose pleinement turbulente - ce qui surestime le frottement là où la poussée est déjà très faible. À l'inverse, l'approche MRF n'a qu'une influence limitée sur les performances moyennes d'une hélice isolée en absence de non-uniformité orthoradiale de l'écoulement amont (pas de stator). Les marges de progression se situent donc dans la fidélité de la modélisation, non dans le choix du solveur.
Pour conclure
Pour une équipe industrielle, la lecture est directe : sur un benchmark naval de référence, hors de son domaine d'application historique, code_saturne atteint un niveau de prédiction comparable à celui d'OpenFOAM - les deux partageant les mêmes limites de modélisation RANS face à l'expérience. Il reproduit les mêmes tendances physiques, converge vers des champs locaux très proches et se montre au moins aussi performant sur les grandeurs intégrées, ce qui en fait une alternative crédible aux outils CFD couramment utilisés en hydrodynamique navale.