At a glance

The Niigata district (Japan), with its 60 m tower, is the basis of case E of an AIJ (Architectural Institute of Japan) benchmark, published by Tominaga et al. (2008). The associated wind-tunnel tests provide a demanding validation basis for urban-wind CFD, in particular for pedestrian comfort assessment.

In this study, two open-source solvers are compared on the same case: code_saturne v9.1 and OpenFOAM v2512. Both computations use the same mesh, the same wind direction, the same atmospheric boundary-layer inlet profile and the same k-ω SST turbulence model in URANS modelling.

The main findings are as follows:

  • Both codes give very close overall performance. Across all probes, the correlation coefficient is 0.783 for code_saturne and 0.774 for OpenFOAM. The RMSE values are likewise very close: 0.196 for code_saturne and 0.204 for OpenFOAM.
  • In exposed areas, agreement with the wind tunnel is satisfactory. Both codes correctly reproduce the accelerations around the buildings.
  • In the wake regions, behind the buildings, velocities are underestimated by both codes. This underestimation appears with both solvers, at identical mesh and turbulence model. It must therefore be interpreted first of all as a limitation of RANS k-ω SST modelling on this type of separated flow, rather than as a flaw specific to code_saturne or OpenFOAM.
  • The unsteady computation is the most robust numerical choice for this case. The velocity signals in the wake show a periodic dynamics consistent with a detached flow behind a sharp-edged geometry. URANS yields usable time averages, even though it does not correct the underestimation observed in the wake.
  • code_saturne behaves as a credible alternative to OpenFOAM for this type of study. On this reference benchmark, the two solvers lead to consistent engineering conclusions: very similar acceleration zones and sheltered zones, and the same limitations in the wake.

Why this case

Between buildings, wind can accelerate to the point of making a public space or a walkway uncomfortable, even dangerous. Anticipating this risk from the design stage is today a common use of CFD, which predicts the wind acceleration at ground level at every point of a district. What remains is to make sure this prediction is reliable, and that is precisely what a wind-tunnel-validated case such as this benchmark allows to check.

The case studied is case E of the AIJ benchmark dedicated to urban wind at pedestrian level: a real district, reproduced in a wind tunnel at 1:250 scale, whose main tower rises to 60 m. The reference data come from Tominaga et al. (2008).

This benchmark offers three benefits.

First, it relies on reference experimental data: geometry, atmospheric boundary-layer profile, measurement positions and velocity ratios at pedestrian level. The simulations can thus be compared directly against an independent experimental basis.

Second, it represents a realistic urban geometry, where the flow exhibits both local accelerations and unsteady wakes, unlike a simple academic case.

Finally, it offers a controlled setting to compare two open-source CFD implementations. The aim is not to designate a better solver, but to check whether, under an identical protocol, the two codes lead to the same physical conclusions and the same engineering decisions.

Case setup

Geometry of the Niigata district at 1:250 model scale: tower A of 60 m, buildings B and C of 18 m, top and perspective views
Geometry of the Niigata district at 1:250 model scale: tower A of 60 m, buildings B and C of 18 m, top and perspective views

Geometry and scale. The geometry is handled entirely at 1:250 model scale. The main tower measures H=0.24H = 0.24 m at this scale (60 m full scale). The CAD file BD_caseE.stl comes from the benchmark dataset and is provided directly at model scale.

Computational domain. The domain dimensions follow COST 732 and AIJ best practices for urban-environment CFD: about 5H5H upstream, laterally and above the built zone, and 15H15H downstream, with H=0.24H = 0.24 m the tower height. At model scale, this gives x[2.0, 4.4]x \in [-2.0,\ 4.4] m, y[2.0, 2.0]y \in [-2.0,\ 2.0] m and z[0, 1.5]z \in [0,\ 1.5] m, i.e. a height of about 6H6H.

Reynolds similarity. The Reynolds number based on the tower height is of order ReH=U(z=H)H/ν16000Re_H = U(z=H)\,H / \nu \approx 16\,000, with ν=1.5×105 m2/s\nu = 1.5 \times 10^{-5}\ \mathrm{m^2/s} (air) and U(z=H)1.0 m/sU(z=H) \approx 1.0\ \mathrm{m/s}.

Inlet profile (atmospheric boundary layer). The inlet velocity profile measured in the wind tunnel is imposed directly, via a user routine in code_saturne and via fixedProfile for OpenFOAM (see figure below). The turbulence profiles (kk and ω\omega) are imposed in the same way, tabulated from the measurements.

Imposed inlet profiles at model scale: velocity U(z) and turbulent kinetic energy k(z). The profile imposed in the CFD (line) reproduces the rescaled AF_caseE wind-tunnel measurements (circles), identical for code_saturne and OpenFOAM.
Imposed inlet profiles at model scale: velocity U(z) and turbulent kinetic energy k(z). The profile imposed in the CFD (line) reproduces the rescaled AF_caseE wind-tunnel measurements (circles), identical for code_saturne and OpenFOAM.

Wind direction. The simulated direction is sector W (West wind). In the frame used here, the flow enters through the xMin face and exits through xMax: the flow therefore progresses in the +x direction.

Map of the 80 measurement probes of the AIJ Case E benchmark, top view, with positions numbered around the tower and the buildings, sector W
Map of the 80 measurement probes of the AIJ Case E benchmark, top view, with positions numbered around the tower and the buildings, sector W

Probes. Eighty measurement positions are distributed around the tower and the buildings, see the image below, to measure the velocity ratio at pedestrian level, defined as U(z=2 m)Uref\dfrac{|U|(z = 2\ \mathrm{m})}{U_{ref}} (at 2 m full scale), i.e. z=0.008z = 0.008 m at model scale.

ParameterValue
Model scale1:250
Main tower height (model)H=0.24H = 0.24 m (60 m full scale)
Kinematic viscosity ν\nu1.5×105 m2/s1.5 \times 10^{-5}\ \mathrm{m^2/s}
Reynolds ReHRe_H16000\approx 16\,000
UrefU_{ref}0.7812 m/s0.7812\ \mathrm{m/s} at zref=0.0636z_{ref} = 0.0636 m
Power law (approx., near ground)α0.18\alpha \approx 0.18
zz pedestrian (model)0.0080.008 m (2 m full scale)
Wind directionsector W (flux +x+x)
Probes80 positions
Experimental data sourceAIJ UWE Benchmark Dataset – Case E (Niigata)

Two codes, one shared protocol

The aim is to place the two codes on an equal footing: same geometry, same mesh, same physics, and for each the numerical settings recommended by its own best practices. The comparison must allow the effect of the solver to be isolated from that of the modelling.

Shared mesh. A single mesh is generated with snappyHexMesh, targeting ~1.37 M cells. This mesh is in polyMesh format, directly usable by OpenFOAM, then converted without modification to .med format for code_saturne via the python package meshlane. Both codes thus run on the same grid. The near-ground refinement is isotropic and fine enough to resolve the flow at pedestrian level. No prism layer is added to the building walls: wall functions are used, which simplifies mesh generation.

Mesh convergence was verified on the code_saturne side: further mesh refinement does not significantly improve the velocity predictions at the 80 probes. The prediction of this quantity is therefore considered mesh-independent on the chosen grid (~1.37 M cells).

Shared physics. Both computations use the k-ω SST turbulence model and the all-y+ wall treatment (Spalding's law). This treatment suits the range of y+ obtained on a mesh without prism layers, where the first cell may fall in the buffer layer or the logarithmic region depending on the wall location.

URANS on both sides. Wake flows, behind the buildings, are physically unsteady. Steady RANS does not converge cleanly on this type of sharp-edged urban geometry: the residuals oscillate and the wake probes show a marked periodicity, a finding common to both codes. URANS, which lets the coherent unsteady modes evolve and builds a time average from them, is the appropriate approach. code_saturne runs with a transient SIMPLEC coupling, OpenFOAM with pimpleFoam. The comparison metrics are computed on converged time averages.

code_saturne v9.1OpenFOAM v2512
Mesh~1.37 M cells (.med, meshlane)~1.37 M cells (polyMesh)
Turbulencek-ω SSTk-ω SST
Wall treatmentSpalding's law all-y+nutUSpaldingWallFunction
Near-wallisotropic refinement, no prism layerisotropic refinement, no prism layer
Transient solution (URANS)SIMPLEC couplingPIMPLE coupling (pimpleFoam)
Inlet BCtabulated measured profile (user routine)tabulated measured profile (fixedProfile)

Comparison with the wind tunnel

Both codes are compared with the wind tunnel on the velocity ratio at pedestrian level, over the benchmark's 80 probes, see the figure below. Since the computations are unsteady (URANS), this ratio is evaluated from the time-averaged velocity on the converged solution, and compared with the velocity ratio measured in the wind tunnel.

Profiles of the pedestrian-level velocity ratio as a function of probe number (1 to 80): wind-tunnel curve, code_saturne and OpenFOAM, showing the overall agreement of both codes and the shared underestimation at the probes located in the wake regions of the built environment
Profiles of the pedestrian-level velocity ratio as a function of probe number (1 to 80): wind-tunnel curve, code_saturne and OpenFOAM, showing the overall agreement of both codes and the shared underestimation at the probes located in the wake regions of the built environment

Agreement is satisfactory in the exposed areas and the acceleration corridors, where the flow stays attached and well guided by the facades: this is the regime where RANS modelling is classically most reliable. The most underestimated points, comparably for both codes, correspond to the wake regions, behind the buildings, marked by separations and recirculations. This shared underestimation points to a common limitation of turbulence modelling, developed further on.

Quantitatively, the deviation from the wind tunnel is summarised by four indicators, computed over the 80 probes:

  • the correlation R (Pearson coefficient) measures whether the simulation reproduces the variations of the velocity ratio well from one probe to another. It equals 1 for perfect agreement of the trends, 0 in the absence of correlation.
  • the RMSE (root-mean-square error) gives the typical deviation between simulated and measured velocity, expressed in the unit of the velocity ratio.
  • the bias is the mean signed error. A negative bias signals a systematic underestimation of the velocities.
  • the hit rate is the proportion of probes whose deviation from the wind tunnel stays below ±25%, a tolerance threshold common in the AIJ recommendations.

Global metrics (80 probes)

RRMSEbiashit ±25%
code_saturne v9.10.7830.196-0.04932%
OpenFOAM v25120.7740.204-0.05236%

The four indicators are very close between the two codes. The differences between code_saturne and OpenFOAM are small compared with the error each makes with respect to the wind tunnel, and do not allow one solver to be designated as more accurate. The scatter plot confirms this: the two sets mingle around the diagonal, which corresponds to perfect agreement between CFD and wind tunnel. The points below the diagonal reflect a computed velocity lower than the measured velocity, that is, an underestimation. Both codes deviate together below the diagonal in the wake, where velocities are systematically underestimated.

Scatter plot of the pedestrian-level velocity ratio predicted vs measured: code_saturne (blue circles) and OpenFOAM (orange circles), 80 probes, with the reference diagonal and the plus/minus 25 percent bands
Scatter plot of the pedestrian-level velocity ratio predicted vs measured: code_saturne (blue circles) and OpenFOAM (orange circles), 80 probes, with the reference diagonal and the plus/minus 25 percent bands

Local fields: very close solutions

Beyond the pointwise metrics at the probes, comparing the velocity fields at pedestrian level over the whole domain confirms the good agreement between the two codes.

Top view of the pedestrian-level velocity ratio field at z = 0.008 m (2 m full scale): code_saturne on the left, OpenFOAM on the right, over the Niigata district. The corridor accelerations between buildings and the low-velocity wake regions stand out very similarly between the two codes.
Top view of the pedestrian-level velocity ratio field at z = 0.008 m (2 m full scale): code_saturne on the left, OpenFOAM on the right, over the Niigata district. The corridor accelerations between buildings and the low-velocity wake regions stand out very similarly between the two codes.

Both codes broadly identify the same comfort and discomfort zones for pedestrians: the corridors between the tower and the adjacent buildings show comparable accelerations, and the wakes behind the buildings are delimited very similarly. The high-velocity-ratio zones and the sheltered zones correspond largely between the two simulations.

This field agreement goes beyond the mere match of the metrics at the 80 probes. It indicates that the two solvers, starting from the same mesh and the same physics, produce very close velocity fields: what we observe is not a statistical coincidence on a subset of points, but a consistent RANS response between two independent implementations.

In practice, for a design office working on pedestrian comfort, the two codes lead to the same engineering decisions. The zones to treat, to protect or to monitor come out identical whatever the implementation chosen, so that the choice of solver does not, at this level, alter the layout recommendations.

The limitation: the model, not the code

The underestimation of velocities in the wake regions is the main limitation of this study. It is shared by both codes, which sheds light on its origin.

Two independent implementations, on the same mesh and with the same modelling, underestimate the wake velocity in very similar proportions. It is the modelling itself that is at fault: here, the k-ω SST model in the RANS regime, with its isotropic turbulent viscosity and its Boussinesq hypothesis. In the wake of a sharp-edged building, where separation is imposed by the edges, the assumption of turbulence isotropy is particularly ill-suited: the normal Reynolds stresses play an important role in the mixing, and representing them by a scalar viscosity leads to turbulent under-diffusion in the wake, hence an underestimation of the recovery velocity.

URANS does not lift this limitation. It resolves the large-scale unsteadiness of the wake (the vortex shedding), but the turbulence remains entirely modelled by the same k-ω SST closure, with the same isotropic turbulent viscosity.

Improving the prediction in the wake means relaxing the isotropy assumption identified above. Two routes are possible. The first stays within the RANS framework, but with a closure that transports the Reynolds stresses (RSM model) instead of reducing them to a scalar viscosity. The second explicitly resolves the large turbulent structures of the wake rather than modelling all of them: large-eddy simulation (LES) or a hybrid RANS-LES approach (DDES, Delayed Detached Eddy Simulation). These approaches often improve agreement with the wind tunnel in the wake, at the cost of a markedly higher computational cost for those that resolve the large scales. They become relevant when the wake is the main zone of interest, for example if a public space or a building entrance lies directly downwind of a building.

For the vast majority of pedestrian-comfort studies at district scale, RANS/URANS k-ω SST remains a suitable approach. And for the application, this is rather reassuring: the residual deviation lies in the low-velocity wake regions, the least critical for the pedestrian, while the high-velocity zones that determine discomfort and risk are, for their part, well captured by both codes. The computational cost stays manageable and the layout recommendations from the two solvers are consistent.

In closing

On the reference AIJ Case E (Niigata) benchmark, a realistic urban-wind case validated in a wind tunnel, code_saturne v9.1 is on par with OpenFOAM v2512.

The two codes agree on several fronts. The global metrics are very close (R = 0.783 and 0.774, RMSE = 0.196 and 0.204). In exposed areas, both codes correctly reproduce the wind-tunnel measurements. In the wake, the underestimation is shared and of comparable magnitude. The local velocity fields at pedestrian level are very close, and the layout recommendations that follow converge.

On the methodological side, two points are worth keeping in mind for practice.

The first concerns the choice of URANS. Since the wake of a sharp-edged building is intrinsically unsteady, steady RANS does not converge cleanly. URANS is then the appropriate approach, for its robustness and its clean convergence, independently of the accuracy of the turbulence model.

The second concerns the limitation in the wake. The underestimation of velocities behind the buildings stems from the k-ω SST turbulence model, and not from the solvers: it is shared by both codes. When the wake is the main zone of interest of a study (public space, building entrance or pedestrian route located downwind of a building), the route to improvement runs through modelling that relaxes the assumption of turbulence isotropy: a Reynolds-stress closure (RSM) in RANS, or methods resolving the large scales (LES, DDES), at the cost of a higher computational cost.

For a team working on pedestrian comfort and looking for an open-source solver validated on reference benchmarks, code_saturne is a credible alternative to OpenFOAM. The two codes, correctly set up on the same protocol, produce very close physical solutions. The choice between them can then rest on other criteria: integration into the existing numerical chain, institutional support, compatibility with other coupled physics, or simply the team's familiarity with one environment or the other.

Aerial view of the modelled Niigata district with the 60 m tower, CFD rendering of the streamline from code_saturne
Aerial view of the modelled Niigata district with the 60 m tower, CFD rendering of the streamline from code_saturne

References

  • 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): wind-tunnel tests of a real Niigata urban district. Zenodo, CC-BY 4.0 licence. 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. Summary: International Journal of Environment and Pollution 44(1-4), 419-427, DOI: 10.1504/IJEP.2011.038443.