Built with code_saturne v9.1.0 - EDF's open-source CFD code
At a glance
The reference PPTC VP1304 marine propeller (SVA Potsdam tests, SVA Report 3752, Barkmann 2011) was simulated in open water with code_saturne v9.1, the open-source finite-volume CFD solver developed by EDF, then compared with experiment and with OpenFOAM v2512. The aim is to benchmark code_saturne, designed outside the marine field, against OpenFOAM, the open-source reference of marine hydrodynamics. Both codes run on the same unstructured mesh of about 4.1 million cells and the same steady RANS k-ω SST physics (all- wall function, rotor in MRF), each with the numerical settings recommended by its own best practices. The sweep covers advance coefficients from 0.267 to 1.6 (9 points). Outside its historical domain, code_saturne proves at least on par with OpenFOAM.
- Thrust : both codes reproduce the experimental trend while underestimating thrust across the whole range. The gap to the measurements, minimal at moderate advance, widens at low and high advance ratios. code_saturne stays slightly closer to the data than OpenFOAM, an edge that owes to its less dissipative convection scheme rather than to the solver itself.
- Torque : the two codes are very close and share the same signature. The prediction is excellent at intermediate advance ratios, and the deviations are confined to low and high advance.
- Efficiency : at the point of maximum efficiency, the gap to experiment stays limited: −9.1% for code_saturne, −12.9% for OpenFOAM. At high advance, thrust tends to zero and the efficiency becomes hypersensitive, which amplifies the deviations on both sides.
- Local fields: wake and wall pressure are nearly superimposable at - both codes solve the same RANS problem well, and the integrated discrepancy comes down to numerical settings, not to the solver.

Why the PPTC?
The PPTC (Potsdam Propeller Test Case) is built around the VP1304 propeller, a controllable-pitch propeller that has become a classic benchmark for validating hydrodynamic CFD. Its geometry - five blades, pitch-to-diameter ratio at , expanded area ratio - together with the associated test database make it a demanding open reference. The measurements used here come from the SVA Potsdam towing tank, recorded in SVA Report 3752 (Barkmann, 2011), the "open water test, corrected with idle torque and gap force" series including blades and hub, at a rotation rate rev/s.
The open-water test boils down to four dimensionless quantities. The advance coefficient measures the ratio of advance speed to rotational speed, that is, the propeller's operating regime. The thrust coefficient non-dimensionalises the thrust , and the torque coefficient the torque (conventionally plotted as for scaling reasons). The open-water efficiency combines the previous three and quantifies how efficiently the mechanical power supplied to the shaft is converted into propulsive power.
The case's editorial interest lies in its positioning. code_saturne was developed by EDF for nuclear, hydraulic and environmental applications: the marine field lies well outside its historical core domain. OpenFOAM, by contrast, is the general-purpose open-source reference, backed by a strong marine community. Pitting the two against each other on a reference propeller therefore amounts to asking: can a solver designed for other physics hold its own against the field's open-source reference, on its home ground?
Case setup
Geometry: The VP1304 is a right-handed, five-bladed controllable-pitch propeller of diameter m. Its pitch ratio is at , its expanded area ratio , and its hub ratio . The simulation reproduces the open-water test configuration of SVA Report 3752 (Barkmann, 2011).
Test conditions: The computations are run in water at 15.6 °C ( kg/m³, m²/s), at a rotation rate rev/s, i.e. an angular velocity rad/s. The advance coefficient is swept from 0.267 to 1.6 (nine computed points). The Reynolds number, based on the blade chord at model scale, stays between about and depending on advance.
Force integration convention: The and coefficients are integrated over the blades and hub, excluding the downstream cap, in line with the convention of the reference experimental series. This consistency of integration perimeter between simulation and test is essential for a valid coefficient comparison.
| Parameter | Value |
|---|---|
| Diameter | 0.250 m |
| Number of blades | 5 |
| Pitch ratio () | 1.635 |
| Expanded area ratio | 0.779 |
| Hub ratio | 0.300 |
| Density | 998.99 kg/m³ |
| Kinematic viscosity | m²/s |
| Rotation rate | 15 rev/s ( rad/s) |
| Advance ratio range | 0.267 - 1.6 (9 points) |
| Reynolds number | |
| Test reference | SVA Report 3752 (Barkmann, 2011) |
Two codes, one common protocol
The goal is simple: compare the two codes on an equal footing. Same case, same physics, and for each the set of numerical settings its best practices recommend. We are not after a bit-for-bit identity of the schemes - neither possible nor relevant between two distinct solvers - but seek to find out whether two independent, well-tuned implementations converge to the same solution.
The mesh is fixed first, because it conditions everything else. A single unstructured mesh of about 4.1 million cells is generated, then converted without modification for each solver - .med for code_saturne, polyMesh for OpenFOAM. The wall ranges from about 0.1 to 90, with a mean near 30 over the blade/hub perimeter: depending on the zone, the first cell falls in the viscous sublayer, the buffer layer or the logarithmic region, which calls for the all- wall treatment (Spalding's law) adopted on both sides. The mesh convergence was checked at constant : it validates the volume refinement, while the wall resolution stays fixed at the wall-function level.
The physics, too, is common to both computations: steady incompressible RANS, k-ω SST turbulence, and a frozen rotating-frame approach (Multiple Reference Frame, MRF) in a cylindrical zone around the propeller at rad/s, which freezes the relative position of blades and wake. For an isolated propeller in uniform axial inflow, the problem is axisymmetric on average and MRF introduces virtually no error, in the absence of rotor/stator interaction.
| code_saturne v9.1 | OpenFOAM v2512 | |
|---|---|---|
| Mesh | ~4.1 M cells (.med) | ~4.1 M cells (polyMesh) |
| Turbulence | k-ω SST | k-ω SST |
| Wall treatment | Spalding all- law | nutUSpaldingWallFunction |
| Rotation | MRF (cylindrical zone, rad/s) | MRF (same zone, same ) |
| Convection schemes | U: 2nd-order centred + slope test · k-ω: 1st-order upwind | U: linearUpwind 2nd order · k-ω: bounded 1st-order upwind |
| Gradients | Green-Gauss / least-squares | Gauss linear |
| Pressure-velocity coupling | SIMPLEC | SIMPLE |
| Time integration | local pseudo-time-stepping | under-relaxed steady iterations |
| Force integration | cs_user_extra_operations.cpp routine (blades + hub) | propellerInfo functionObject (rotor surfaces) |
The only notable difference in settings is the convection scheme on : each code keeps the one its best practices recommend - 2nd-order centred for code_saturne, linearUpwind for OpenFOAM, chosen for its robustness on this kind of mesh. Being less dissipative, the centred scheme accounts for most of the residual gap on the curves: a settings effect, not a solver effect. Everywhere else (1st-order turbulence, all- wall functions), the two setups match.
In code_saturne, the hydrodynamic force and moment coefficients do not come directly out of the standard results: a user routine (cs_user_extra_operations.cpp) integrates, at each iteration, the pressure and friction loads over the blade and hub perimeter, excluding the downstream cap to respect the experimental convention. On the OpenFOAM side, the propellerInfo functionObject integrates the loads over the rotor surfaces.
Open-water curves: code_saturne against experiment and OpenFOAM

Thrust : code_saturne and OpenFOAM reproduce the experimental trend correctly, with a slight underestimation of thrust across the whole advance range, likely tied to the limits of RANS modelling. The gap is minimal at intermediate regimes but grows at low advance, where flow separation appears on the blades and is hard for RANS modelling to capture, as well as at high advance, where thrust results from a small pressure imbalance, making it very sensitive to the slightest local error. OpenFOAM's results depart slightly more from the measurements than code_saturne's - a difference attributable to the less dissipative convection scheme used in code_saturne (see previous section), not to the physical modelling, which is identical on both sides.
Torque : code_saturne and OpenFOAM give very close results and reproduce the measurements correctly over the whole advance range. The agreement is excellent at intermediate advance ratios, while the deviations concentrate at low advance, in the presence of separation, and at high advance, when the blade loading becomes very low and increases sensitivity to local errors.
Efficiency : resulting directly from thrust and torque, the efficiency naturally reflects the deviations seen on those two quantities. Both codes reproduce its experimental evolution correctly; code_saturne's slight edge follows from its better thrust prediction. At the point of maximum efficiency (), the gap stays limited to −9.1% for code_saturne against −12.9% for OpenFOAM, consistent with the latter's more pronounced thrust underestimation. At high advance, both codes degrade: thrust tends to zero and the efficiency becomes very sensitive to the slightest local error, which amplifies OpenFOAM's gap.
This divergence should be put in perspective: at high advance, thrust and efficiency become very small, so that small absolute deviations translate into large relative differences. In this off-design regime, the robustness of the numerical choices weighs as much as the physical modelling.
Local fields: two solvers, one solution
The open-water test provides no field measurement: the local comparison is therefore carried out code-to-code, at the point ( m/s), at maximum efficiency.

Axial wake: The meridional slice of shows the three expected features of a propeller wake: an accelerated jet () in the annulus swept by the blades, a velocity deficit behind the hub, and a contraction of the fluid stream downstream. The topologies of the two codes are very close.

Wall pressure: The pressure-coefficient maps on the blades confirm this. The pressure is referenced to the upstream field : in incompressible flow the reference level is arbitrary and specific to each solver, so only the difference is meaningful. On a common scale from to , the two codes' distributions are nearly superimposable on the suction side as on the pressure side, and the radial load distribution is similar. The argument is direct: two independent implementations, starting from the same mesh and the same physics, converge to a nearly identical field solution. This establishes that the solution is not an artefact specific to a given code, but the RANS response common to this problem.
The limiting factor: the modelling, not the code
The closeness of the results obtained with code_saturne and OpenFOAM is arguably the main takeaway of this study. Two independent implementations, run on the same mesh with the same physical modelling, produce very close open-water curves, nearly superimposable velocity and pressure fields, and comparable deviations from experiment. What we observe is therefore the RANS response of the problem, not the signature of a particular solver.
The bias the two codes share against experiment is thus more likely tied to the modelling assumptions. The first limitation is the wall resolution: handled by all- wall laws, it governs the friction prediction across the whole advance range, and it is precisely the aspect that the constant- refinement did not cover. At high advance, the absence of a boundary-layer transition model adds to this: given the Reynolds numbers, when the blades are lightly loaded the boundary layer can remain laminar over a large part of the chord, whereas RANS k-ω SST assumes it fully turbulent - which overestimates friction where thrust is already very low. Conversely, the MRF approach has only a limited influence on the mean performance of an isolated propeller in uniform inflow. The room for improvement therefore lies in the fidelity of the modelling, not in the choice of solver.
In conclusion
For an industrial team, the takeaway is direct: on a reference marine benchmark, outside its historical field of application, code_saturne reaches a level of prediction comparable to that of OpenFOAM - both sharing the same RANS modelling limits against experiment. It reproduces the same physical trends, converges to very close local fields and proves at least as accurate on the integrated quantities, which makes it a credible alternative to the CFD tools commonly used in marine hydrodynamics.