Articles | Volume 11, issue 7
https://doi.org/10.5194/wes-11-2647-2026
https://doi.org/10.5194/wes-11-2647-2026
Research article
 | 
24 Jul 2026
Research article |  | 24 Jul 2026

A consistent computational fluid dynamics surrogate model for wind turbine interaction including atmospheric stability

Maarten Paul van der Laan, Alexander Meyer Forsting, and Pierre-Elouan Réthoré
Abstract

Wind turbine wake and blockage effects can reduce the energy yield in wind farms, and fast models are required to mitigate these effects by wind farm layout optimization. However, most fast models do not account for important physics that impact wake and blockage effects, as for example atmospheric stability. In this work, we propose a surrogate model of a Reynolds-averaged Navier–Stokes (RANS) wind farm model including atmospheric surface layer stability that is about 5 orders of magnitude faster than the original model. The surrogate model is based on a single-wake database of stream-wise velocity deficit and wake-added turbulence intensity, generated by a RANS model. The surrogate model is evaluated against the RANS model for different inflow conditions and wind farms. The errors in the surrogate model are reduced by a factor of 2 to 4 when taking into account wake-added turbulence intensity and the use of a rotor-averaging model in combination with a momentum-based wake superposition method. The latter leads to a more consistent surrogate model compared to using linear superposition without a rotor-averaging model. However, the computational effort of the surrogate model is still an order of magnitude larger compared to traditional engineering wake models, and more research is required to reduce it.

Share
1 Introduction

Interaction of wind turbines and wind farms can lead to energy losses (Barthelmie et al.2007) mainly due to wake and blockage effects (Bleeg et al.2018). These losses can be minimized by optimizing a wind farm layout, which requires fast wake models, commonly known as engineering wake models. However, such models often rely on strong assumptions of the wake shape (Jensen1983; Bastankhah and Porté-Agel2014) and wake superposition model (Katic et al.1987) and rarely take into account important effects of the atmospheric boundary layer (ABL), such as atmospheric stability; Coriolis forces; and turbine-related effects, including the thrust force distribution and wake rotation. High-fidelity wake models based on computational fluid dynamics (CFD) can include such effects but are too expensive for the application of wind farm layout optimization. A common approach is to use high-fidelity model results as training data for engineering wake models. This ranges from a simple calibration of an engineering wake model constant (Niayifar and Porté-Agel2016; Peña et al.2016) up to complex surrogate modeling for both steady-state (Schulte and Stoevesandt2014) and dynamic wake models (Andersen and Murcia Leon2022). A more detailed review of low- and high-fidelity wake models can be found in Göçmen et al. (2016); Porté-Agel et al. (2020). In addition, Porté-Agel et al. (2020) also reviewed the effect of different atmospheric conditions on wind turbine wakes, characterized by ambient turbulence intensity and atmospheric stability.

Steady-state models based on Reynolds-averaged Navier–Stokes (RANS) can be used to calculate the mean flow of a wind turbine in isolation, from which a wind farm flow can be constructed using a superposition model. This model type can be considered to be a surrogate model that solves the RANS equations for an entire wind farm (Prospathopoulos et al.2011; van der Laan et al.2015b). An overview of existing RANS-based surrogate models can be found in Table 1. The lowest model fidelity listed in Table 1 is based on a linearized set of RANS equations, where the effects of the thrust force are added as a linear perturbation to a base flow (Ott et al.2011; Ebenhoch et al.2017), and a wind farm flow is constructed by linear superposition of a single-wake shape multiplied by the thrust coefficient, CT. Fuga (Ott et al.2011) is a linearized RANS model where the base flow represents the atmospheric surface layer, including atmospheric stability following Monin–Obukhov similarity theory (MOST) (Monin and Obukhov1954). Ebenhoch et al. (2017) argued that the wake velocity deficit is only a linear function of the thrust coefficient for CT<0.5 using 1D momentum theory. However, RANS single-turbine simulations show that the effect of the thrust coefficient is nonlinear even for low thrust coefficients, e.g., CT=0.1, because the wake recovery increases with CT, as shown in Appendix A. A higher CT leads to larger velocity gradients that reduce the downstream extent of the near-wake, as shown by LES results of Sørensen et al. (2015). Schulte and Stoevesandt (2014) developed a surrogate model of (nonlinear) RANS simulations where the turbine is modeled as an actuator disk (AD) (Mikkelsen2003). A database of single-wake velocity deficits was pre-calculated and stored as a lookup table (LUT) for a range of wind speeds using RANS-AD simulations, and a wind farm flow was created by superposition. Jacquet et al. (2022) developed a similar RANS surrogate model for simulating wind farm blockage but also included effects of atmospheric stability following MOST. The Fuga and the RANS-LUT models of Schulte and Stoevesandt (2014) and Jacquet et al. (2022) do not take wake-added turbulence intensity (TI) into account. Criado Risco et al. (2023) followed a similar approach to Schulte and Stoevesandt (2014) and Jacquet et al. (2022) but extended the RANS-LUT model by including both shapes of velocity deficits and wake-added TI that depend on the thrust coefficient and ambient turbulence intensity. A wind farm flow was constructed by superposing the velocity deficit and wake-added TI, looking up different wake shapes for the local TI and thrust coefficient obtained from the local wind speed; the best results were obtained for linear superposition. Criado Risco et al. (2023) developed the RANS-LUT model for neutral surface layer conditions and verified the flow field of the RANS-LUT model for neutral conditions against RANS-AD wind turbine row simulations.

(Ott et al.2011)(Schulte and Stoevesandt2014)(Jacquet et al.2022)(Criado Risco et al.2023)

Table 1RANS-based surrogate wake models: LUT flow variables and input dimensions.

Download Print Version | Download XLSX

In this work, we extend the model of Criado Risco et al. (2023) by including atmospheric stability following MOST, and we compare the results with full RANS-AD wind farm simulations, including wind turbine power, for a range of stability conditions following MOST. In addition, an alternative superposition method is applied to the velocity field, which is based on the momentum-conserving superposition method of Zong and Porté-Agel (2020). The latter leads to a more consistent model that can be used to obtain good results of both the wind farm flow and turbine power. Finally, we show the importance of including wake-added TI in the RANS-LUT model. The proposed RANS-based surrogate model is summarized in Table 1. The RANS-AD and extended RANS-LUT models are described in Sect. 2, and the results are discussed in Sect. 3.

2 Methodology

The proposed RANS-LUT surrogate model is based on a database of single-wake simulations. In this work, RANS-AD simulations are employed to generate the aforementioned database and are discussed in detail in Sect. 2.2. The RANS-AD model is also used to run a set of wind farm simulation test cases, discussed in Sect. 2.1, to evaluate the performance of the RANS-LUT model. The original RANS-LUT model of Criado Risco et al. (2023) for the neutral case and proposed extensions are discussed in Sect. 2.3.

2.1 Test cases

The RANS-LUT model results are evaluated against RANS-AD simulations of a row of regularly spaced wind turbines and a square regular wind farm layout consisting of 1×8 and 8×8 turbines, respectively. The turbine row is simulated for a row-aligned wind direction, while the square wind farm is simulated for a range of wind directions for every 3° between 270 and 315°, where 270 and 315° are aligned with a wind farm edge and a wind farm diagonal, respectively. The test cases are listed in Table 2. Each case is simulated for a turbine spacing of 4D and 8D, with D as the rotor diameter, and two inflow wind speeds corresponding to a below- and above-rated wind speed, which lead to different thrust coefficients. Furthermore, three different stability conditions, labeled as stable, neutral, and unstable, are employed that differ in both ambient TI and surface layer stability. Here, the TI is based on the turbulent kinetic energy at hub height, and the stability parameter is defined as ζref=(zref+z0)/L, with zref as the reference height set equal to the hub height, z0 as the roughness length, and L as the Obukhov length. The TI and ζref values are {0.05,0.06,0.1} and {0.5,0,-0.5} for the stable, neutral, and unstable cases, respectively. The resulting normalized profiles are shown in Fig. 1 and further discussed in Sect. 2.2.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f01

Figure 1Normalized inflow profiles of wind speed (a), turbulence intensity (b), and eddy viscosity (c) as computed by the 1D precursor and compared with MOST. Rotor area of the NREL-5 MW reference turbine is depicted with horizontal dashed lines.

Download

The employed turbine is based on the NREL-5MW reference turbine (Jonkman et al.2009), which has a rotor diameter and hub height of 126 and 90 m, respectively. However, we use a general turbine model to represent the wind speed curves of the thrust coefficient CT(U), the power coefficient CP(U), and the tip speed ratio λ(U), with constant below-rated values of CT,r=0.8, CP,r=0.45, and λr=7.5 (van der Laan et al.2022), leading to a rated wind speed Ur of 11.33 m s−1. The use of a general turbine model makes it easier to test the RANS-LUT surrogate model against RANS-AD simulations of wind farms using a constant CT and variable CT by applying below- and above-rated wind speed cases, as listed in Table 2. The generic turbine model is fully defined as (van der Laan et al.2022)

(1) U in U U r : C T = C T,r , C P = C P,r , λ = λ r , U r < U U out : C T = C T,r ( U r / U ) 3.2 , C P = C P,r ( U r / U ) 3 , λ = λ r ( U r / U ) , ,

with Uin=4ms-1 and Uout=25ms-1 as the cut-in and cut-out wind speed, respectively. The above-rated thrust coefficient follows a power law with exponent 3.2, which fits turbine data well, covering a large range of turbine sizes (van der Laan et al.2022).

2.2 RANS-AD CFD model

The RANS-AD simulations are conducted with the CFD wind farm flow framework PyWakeEllipSys v5.4 (DTU Wind and Energy Systems2025), which uses the in-house incompressible finite-volume CFD solver EllipSys3D, initially developed by Michelsen (1992) and Sørensen (1994). The AD model (Réthoré et al.2014; Troldborg et al.2015) is based on a polar grid using 10 and 32 cells in the radial and azimuthal directions, respectively. Thrust and tangential force distributions are calculated with the analytical model of Sørensen et al. (2020), which depends on CT, CP, and λ. The force distributions are scaled with the local shear while maintaining the input integral forces (van der Laan et al.2020).

2.2.1 Numerical domain

The numerical grid is a Cartesian domain with a refined region around the horizontal center at which the turbines are placed. The grid topology and boundary conditions are the same as specified in van der Laan et al. (2024); however, the domain dimensions are case-specific. For the single-wind-turbine case, a domain with dimensions 1024D×1005D×25D is employed for the streamwise, lateral, and vertical directions, respectively. The inner refined domain is employed to resolve the wind turbine wake(s). It has dimensions 24D×5D×3D, is placed at 4x/D20 and 2.5y/D2,5, and contains a mesh with uniform horizontal spacing of D/8. Vertically, the cells grow with height up to D/8 in the rotor area and D/6 at the end of the refined domain using a first cell height of D/200. The cells are distributed as 288×128×64, leading to a total number of 2.4 million cells. The cell spacing of D/8 is sufficient to resolve the wind farm flow under neutral conditions (van der Laan et al.2015c). A finer grid spacing may be necessary for stable-inflow cases depending on the user's quantity of interest. For the present study, we use the same grid spacing of D/8 for all stability cases for simplicity. Our goal is to evaluate the RANS-LUT surrogate model against RANS-AD wind farm simulations using the same grid spacing. If one would like to apply a finer spacing, then the refined single-wake database would also improve the RANS-LUT model. A grid refinement study of RANS-AD single-wake simulations is performed in Appendix C. The numerical domains of the wind turbine row and square wind farm are larger in the horizontal extent, and the corresponding grid dimensions are listed in Table 3.

Table 3Domain dimensions and number of cells of RANS-AD single-wake and wind farm test cases.

Download Print Version | Download XLSX

2.2.2 Inflow and turbulence model

The inflow conditions represent an atmospheric surface layer including atmospheric stability following MOST (Monin and Obukhov1954). We employ a two-equation kε turbulence model that is in balance with MOST (van der Laan et al.2017; Doubrawa et al.2020; Baungaard et al.2022a), which is important for isolating the turbine and wind farm flow effects. The turbulence model has the following form:

(2)νT=CμfP(σ/σ̃,CR,CB)k2ε,(3)DkDt=xjν+νTσkkxj+P+B-ε+Sk,(4)DεDt=xjν+νTσεεxj+(Cε,1P-Cε,2ε+Cε,3B)εk,

with xj={x,y,z} as the Cartesian coordinates in streamwise, lateral, and vertical directions, respectively. The turbulence model solves equations for the turbulent kinetic energy, k, and its dissipation, ε, from which the eddy viscosity, νT, is calculated. In addition, the Boussinesq hypothesis (Boussinesq1897) is applied to compute the Reynolds stresses. The source terms 𝒫 and represent the production of turbulence due to shear and buoyancy, respectively; the latter is negative for stable conditions. The effect of the non-neutral conditions is mainly modeled by the turbulent buoyancy source term since a momentum buoyancy source and a temperature equation are not employed. The MOST profiles are in balance with the turbulence model using an additional source term Sk and a height-dependent Cε,3 (van der Laan et al.2017). They are derived by substituting the MOST similarity functions of the normalized shear and potential temperature gradient into the kε turbulence model; the full expressions of Sk and Cε,3 are provided in van der Laan et al. (2017). The original turbulence model used a buoyancy source that was a function of the stability and local shear. However, this can lead to a non-physical wake recovery for unstable conditions, where an increase in turbulent buoyancy production could lead to less wake recovery. In the present work, we use a constant turbulent buoyancy source term, B=u*3/(κL), which solves the wake recovery problem for unstable conditions (Baungaard et al.2022a). Here, u* is the friction velocity, and κ=0.4 is the von Kármán constant. However, we find that using a constant buoyancy source term for stable conditions can lead to numerical instabilities. For stable conditions, the constant buoyancy source is negative and reduces k. When the k equation is solved for, the other source terms can vary, while the buoyancy source remains constant. This can lead to negative k values. The numerical problem is solved by multiplying the constant buoyancy source term by the ratio of local eddy viscosity, νT, to inflow eddy viscosity, νT,MOST, for stable conditions only:

(5) B = u * 3 κ L ν T ν T , MOST = u * 3 κ L ν T u * κ z ϕ m ( ζ ) ,

with ϕm as the MOST function of normalized wind shear. The idea of using νT/νT,MOST in is based on the fact that both the original buoyancy production and the turbulent shear production also scale with νT. The modification does not change a single wake under stable conditions significantly. The eddy viscosity is limited with a near-wake-length-scale limiter, fP (van der Laan et al.2015c; van der Laan and Andersen2018), extended to non-neutral conditions (Doubrawa et al.2020) and later revised for unstable conditions (Baungaard et al.2022a). The fP function depends on the local shear, σ=k/ε(Uj/xj)2, normalized by the inflow shear, σ̃=1/Cμϕm/ϕε, and two model constants, CR=4.5 and CB=5.0. The other constants in the turbulence model are set as {Cμ,σk,σε,Cε,1,Cε,2}={0.03,1.0,1.3,1.21,1.92}. Finally, the molecular viscosity, ν, is set as 1.78×10-5m2s-1 but has no influence on the solution since νTν (van der Laan et al.2020).

The non-dimensional inflow is defined by the TI based on the turbulent kinetic energy, Iref=2/3k/Uref, and the stability parameter, ζref, with Uref as the freestream wind speed. Iref and ζref are used to set the roughness length, z0, and the friction velocity, u*:

(6) u * U ref = f ( I ref , ζ ref ) = I ref 3 / 2 C μ 1 4 Φ ε ( ζ ref ) - 1 4 Φ m ( ζ ref ) 1 4 , z 0 z ref = f ( I ref , ζ ref ) = exp κ U ref / u * + Ψ m ( ζ ref ) - 1 - 1 ,

with Φm, Φε, and Ψm as MOST functions defined in van der Laan et al. (2017). Even though a turbulence model is employed that is analytically in balance with MOST, numerical deviations can occur. Therefore, a 1D precursor (van der Laan and Sørensen2017) is used to simulate each MOST profile using the same vertical grid as used for the 3D successor simulations. The friction velocity from Eq. (6) is rescaled to get the desired wind speed at the reference height, Uref, using Reynolds number similarity. These scaling factors, computed as Uref/U1D precursor, are 0.9901, 0.9959, and 0.9962, for the stable, neutral, and unstable cases, respectively. The scaling factors indicate the numerical error in the streamwise velocity at the reference height. The scaled precursor inflow profiles are compared with the MOST analytic solutions in Fig. 1. While the precursor profiles of wind speed and eddy viscosity compare well to the analytic solutions, the precursor profile of TI has a small but visible deviation from MOST. This stems from numerical errors in the k profile leading to TI values at hub height equal to 0.0493, 0.0592, and 0.0995, for the stable, neutral, and unstable cases, respectively.

2.2.3 Single-wake database

The velocity deficit normalized by the inflow velocity and wake-added TI are independent of the Reynolds number for fixed values of the inflow TI and stability conditions (van der Laan et al.2020). Hence, the inflow wind speed, Uref, and turbine size are not relevant parameters. The prior holds if the operational parameters as CT, CP, and λ are set correctly. The latter applies for a constant ratio of turbine hub height to rotor diameter, zH/D, which also defines the ground clearance. The Reynolds number similarity reduces the number of independent parameters to a total of eight: two inflow parameters, Iref and ζref, and six turbine-related parameters, CT, CP, λ, zH/D, rotor tilt angle θtilt, and yaw misalignment angle θyaw. Here, we use a reference height equal to the turbine hub height, zref=zH. However, it is not necessary to consider all possible combinations of the aerodynamic coefficients and tip speed ratio since they are related. One could use the general wind turbine model of Eq. (1) to replace CP(U) and λ(U) with CP(CT)=CP,r(CT/CT,r)(3/3.2) and λ(CT)=λr(CT/CT,r)(1/3.2) and simulate a range of CT values up to CT,r. The number of dimensions is still eight, but the variation in CT,r, CP,r, and λr between existing utility-scale turbines is relatively small (van der Laan et al.2022). For the more simple AD model using a normalized axi-symmetric fixed thrust force distribution (van der Laan et al.2015c), without tangential forces, and zero tilt and yaw misalignment angles, the number of turbine parameters reduces to two, namely, CT and zH/D. For such a simplified setup, it is practical to create a general single-wake RANS database that could be used for any wind turbine model. However, in this work we employ a more realistic AD model including tangential forces and analytic force distributions, based on a generic version of the NREL-5 MW reference turbine, as discussed in Sect. 2.1.

The RANS-AD single-wake database of the generic NREL-5 MW reference turbine is made by a parametric study of Iref, ζref, and CT. We use Iref={0.05,0.06,0.08,0.1,0.15,0.2,0.3}, ζref={-0.5,0,0.5}, and CT=0 to CT=0.8 with an interval of 0.1. The corresponding CP and λ values are obtained from their respective relationship with the wind speed and using CT(U). Simulating stable conditions for a high TI inflow leads to unrealistic roughness length values obtained from Eq. (6). This is overcome by replacing the stable single-wake cases for Iref≥0.1 in the database with the neutral single-wake cases, which is justified by the fact that a high Iref often correlates with neutral conditions.

For every fixed TI and stability, the variation in CT is simulated consecutively by first running a zero thrust coefficient simulation until convergence, followed by adjusting the aerodynamic coefficients from low to high for the other CT cases while maintaining the inflow wind speed at hub height at 1.0 m s−1. The results are not affected due to Reynolds number similarity, but the total number of required iterations is an order of magnitude less compared to running all simulations separately. In total, about 500 CPU hours are used to simulate 153 single-wake cases. Note that the stable single-wake cases for Iref≥0.1 are not simulated, leading to 189-36=153 cases.

2.3 RANS-LUT surrogate model

The RANS-LUT wind farm flow model is implemented within PyWake (Pedersen et al.2023) (v2.6.18) – an open-source, Python-based Annual Energy Production (AEP) calculator with an extensive library of engineering wake and blockage models – following the approach by Criado Risco et al. (2023). Figure 2 provides an overview of the different components involved in building the surrogate model, including generating a RANS-AD single-wake database (a and b); deriving single-turbine blockage, wake, and added-TI models (c–f); rotor averaging (g–i); and superimposing individual turbine effects (j–l) to arrive at the wind farm flow field (m). All components are discussed in detail in the remainder of this section.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f02

Figure 2Overview of RANS-AD single-wake database (a, b) and workflow of the proposed RANS-LUT surrogate model (c–m). Contour plots depict the flow at hub height, and the magenta rectangle illustrates the location of the AD model. Panels (g)(i) are rotor-averaging (RA) operators. An example of a final result of the iterative method All2AllIterative is shown in (m).

Download

2.3.1 Single-turbine model

The single-turbine deficit and wake-added TI model by Criado Risco et al. (2023) is built by normalizing the streamwise velocity deficit and added TI fields with the background flow, such that for a single RANS simulation

(7) Δ U ̃ ( x ) = U ( x ) - U b ( z ) U b ( z ) , Δ I ̃ ( x ) = 2 / 3 k ( x ) - 2 / 3 k b ( z ) U b ( z ) ,

with normalized deficit ΔŨ and added TI ΔĨ, computed from streamwise velocity U and turbulent kinetic energy k. The background flow is denoted by b and corresponds to a simulation with CT=0. All variables are given in the turbine hub coordinate system x=(x-xH)/D, with turbine hub position xH in the RANS frame of reference and x=(x,y,z).

As illustrated in Fig. 2a and b, the RANS-LUT wake model employed here is built from a RANS-AD single-wake database 𝒟L, which is a discrete collection of numerical solutions sampled across a range of thrust coefficients, inflow turbulence intensities, and stability parameters. To reconstruct the continuous velocity deficit and turbulence intensity fields from these discrete samples, a multi-dimensional interpolation operator is employed. The final single-wake model takes the functional form

(8) Δ U ̃ , Δ I ̃ = I ( x , C T , I ref , ζ ref | D L ) ,

where maps the discrete entries in 𝒟L to a continuous domain. Within PyWake this is done using the xarray package (Hoyer and Hamman2017) for multi-dimensional data handling. However, PyWake's native 1D grid interpolator is employed by collapsing all dimensions into a 1D array, which is faster than the multi-dimensional xarray interpolator. Furthermore, we use linear interpolation, due to its robustness and speed. To optimize memory usage, 𝒟L retains only the vertical CFD layers spanning the rotor-swept area – defined by the range between the minimum and maximum tip heights across all turbines within a farm. For wind farms with heterogeneous turbine types, 𝒟L is expanded to include specific entries for each turbine model. Figure 2c and d show how the single-wake deficit database is split into up- and downstream regions to build PyWake blockage and wake deficit models. This results in some effects related to blockage, as for example the speed-up in wind speed around the turbine wake, becoming part of the wake deficit model. As depicted in Fig. 2f, this split is not done for the wake-added TI model.

2.3.2 Wind farm flow field

To move from the non-dimensional quantities provided by the single-wake model in Eq. (8) to a physical representation of the flow field, they must be scaled by some reference inflow values, which are referred to as effective wind speed, U^, and TI, I^, in PyWake. As turbines inside a farm respond to the local waked inflow, we compute quantities at each rotor location. In general the effective wind speed at the ith turbine in PyWake in the wind farm coordinate system is given by

(9)

(10) U ^ j Δ U ̃ j A i = n w n U ^ j Δ U ̃ ( x i , n - x H , j , C T ( U ^ j ) , I ^ j , ζ ref ) ,

where wake deficits ΔŨW from upstream turbines 𝒲 and blockage deficits ΔŨB from downstream turbines are superimposed https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-g01 (self-induction is excluded) and rotor-averaged Ai separately and deducted from the wind farm background flow, which is evaluated at the rotor center Ub(xH,i). This signifies that background flow variations over the rotor area (shear, veer) do not impact the effective wind speed and consequently neither turbine power nor thrust. Note that this differs from the way the RANS-AD reacts to the flow, which responds to the local variation over the AD instead, i.e Ub(xi)-U^jΔŨj(xi,n-xH,j). Rotor averaging, executed preceding superposition, is performed by weighing the scaled deficits U^ΔŨ over the rotor area Ai with weights wn assigned to discrete sampling points, representing a numerical integration across the rotor disk where wn=1. Here, the normalized deficits are scaled by the turbine local wind speed; however, in PyWake it is generally possible to switch to freestream scaling, meaning that U^j=Ub(xH,j) in the above. Furthermore, superposition and rotor-averaging methods are allowed to differ between blockage and wake deficits in PyWake, and, whilst not used here, it is possible to introduce multi-dimensional thrust curves. Generally the background flow in PyWake is allowed to vary freely in space, yet here we ensure it follows the RANS inflow conditions that only include vertical shear following MOST:

(11) U b ( z ) = U ref ln ( z / z 0 ) - Ψ m ( ζ ) ln ( z ref / z 0 ) - Ψ m ( ζ ref ) ,

with Ψm as the integrated normalized shear from MOST, as defined in van der Laan et al. (2017). The effective TI is only computed using upstream turbines:

(12)

where denotes the superposition of background with added TI. As the single-wake database underlying the RANS-LUT model is generated through a parametric variation in inflow TI, our approach inherently assumes that turbines respond identically to ambient inflow and wake-added TI.

Due to the inclusion of up- and downstream effects, an iterative approach needs to be employed to obtain the effective wind speed and TI at all turbines. As shown in Fig. 2m, here we use PyWake's All2AllIterative solver. Once the operating conditions of each turbine have been determined, they are fixed, and the final wind farm flow field at a point xi is determined by aggregating contributions from all turbines 𝒩–omitting all other dimensions except x for ΔŨ,ΔĨ:

(13)(14)

2.3.3 Superposition methods

As deficits and power production scale with the effective wind speed, the accuracy of our RANS-LUT model predictions strongly depends on our choice of superposition models. Whilst Eq. (9) shows an explicit dependency on the deficit superposition models, their is also an implicit connection to the TI superposition, as the normalized deficit ΔU is a function of the effective TI I^. While Criado Risco et al. (2023) found that linear superposition of velocity deficits and wake-added TI yielded the most accurate results, Delvaux et al. (2024) identified the superposition of the maximum added TI – I^i=Ib(xH,i)+maxjΔĨj – as optimal; however they also utilized a different definition of wake-added TI, namely ΔĨ=2/3(k-kb)/Ub. As we follow the one by Criado Risco et al. (2023) in Eq. (7), we similarly linearly superimpose wake-added TI contributions as depicted in Fig. 2l such that

(15) I ^ i = I b ( x H , i ) + j W Δ I ̃ j A i .

Since blockage deficits are limited, they are also linearly superimposed – a valid approach as demonstrated by Meyer Forsting et al. (2023).

As mentioned above, Criado Risco et al. (2023) similarly superimposed wake deficits linearly and found them to agree with RANS-AD simulations in terms of the wind farm velocity and TI fields. However, as shown in detail in Appendix B, we find that this is due to velocity superposition errors canceling those from using rotor center – ΔŨj=ΔŨ(xH,j) – instead of rotor-averaged values. As reported by Zong and Porté-Agel (2020), linear superposition overestimates wake deficits in deep arrays, and they consequently devised a momentum-deficit-conserving superposition method instead, which effectively acts as a weighted sum, such that the combined wind farm deficit is given by

(16) Δ U = i u c i U c Δ u i ,

where lower- and uppercase letters refer to the single-turbine and combined wind farm velocities, respectively. The weights are given by the ratio between single-turbine uc and wind farm Uc wake convection velocities, which are determined by performing an integral over the plane perpendicular to the mean flow, A:

(17) U c = A ( U b - Δ U ) Δ U A Δ U .

For a single turbine just replace with lowercase letters. Equations (16) and (17) are coupled, thus requiring an iterative approach. Hence, to employ the weighted sum, cross-plane integrals need to be performed for single-turbine wakes and the combined wind farm flow at every iteration until convergence. If the cross-plane integrals are performed numerically, the computational cost would be prohibitive. PyWake circumvents this by employing analytical solutions based on assuming Gaussian-shaped wake deficits, defined here as

(18) Δ u = δ exp - r 2 2 σ 2 ,

with centerline deficit δ, cross-wind distance r, and wake expansion σ. Zong and Porté-Agel (2020) already showed that for a single Gaussian wake there is an analytical solution to Eq. (17), as it has a finite integral. Here, we show that there is also an analytical solution to the wind farm flow; substituting Eq. (16) into Eq. (17) and assuming that Ub does not vary over A, the update of Uc(n+1) can be written entirely in terms of single-wake parameters that can be precomputed:

(19) U c ( n + 1 ) = U b - 1 U c ( n ) A i u c i Δ u i 2 A i u c i Δ u i = U b - 1 U c ( n ) × i u c i δ i π σ i 2 + 2 i j < i u c i u c j δ i δ j I i j i u c i δ i 2 π σ i 2 I i j = 2 π σ i 2 σ j 2 σ i 2 + σ j 2 exp - d i j 2 2 ( σ i 2 + σ j 2 ) d i j = ( y H , i - y H , j ) 2 + ( z H , i - z H , j ) 2 ,

where ij represents the interaction between two wakes, meaning that if the combined deficit downstream of the ith turbine is to be computed, the interaction of its single wake with all preceding wakes (i<j) needs to be determined. As this nested sum can become expensive, small deficits less than 1 % of Ub are skipped and added linearly (uci=Uc(n)). As the superposition model assumes that the pressure has fully recovered (p/x0), it does not hold in the near-wake, causing the algorithm to become unstable, as locally the individual wake convection velocity might exceed that of the combined wakes. Referring to Eq. (19), if uc>Uc(n), Uc→0, as the numerator grows faster than the denominator, and Uc continues to drop. Since uc>Uc(n) implies that individual wakes are convected faster than the background flow and that momentum deficit would be created during superposition (see Eq. 16), we enforce ucUc(n). This means that the weights – uc/Uc(n) – in the superposition method do not exceed 1. The iterations are initialized by setting Uc=maxi(uci), and stopped when max|(Uc(n+1)-Uc(n))/Uc(n)|<10-3, or five iterations have been completed.

Due to its accuracy, speed, and numerical stability, we adopt the analytical approach in our RANS-LUT model by fitting Gaussian profiles to the RANS-AD database. The fitting is performed over the downstream plane at hub height, z=0 and 2x100, with an additional fit at x=0 where the magnitude is limited to the axial induction from 1D momentum theory; see Fig. 2e. Subsequently, the normalized wake expansion, σ/D, and centerline deficit, δ̃, are provided by additional LUT-based surrogate models:

(20) σ / D , δ ̃ = L x , C T , I ref , ζ ref | G L ,

where δ from the RANS-AD simulations is normalized by the hub height wind speed. It should be noted that the assumption of the Gaussian velocity deficit is only applied to determine the superposition weights that are employed to superpose the velocity deficit shapes of the RANS-LUT model. The performance of the weighted superposition method and effect of enforcing the ucUc(n) limit is further discussed in Sect. B.

Finally, in this work we use a rotor-averaging model based on a Gaussian quadrature method with eight points, which is sufficient to obtain a rotor-average wind speed with an error of 0.65 % (Pedersen et al.2023).

3 Results and discussion

The RANS-AD and RANS-LUT surrogate models have been employed to simulate a wind turbine row and a square wind farm for different turbine spacing and inflow cases, as defined in Sect. 2.1. The RANS-AD results are used to evaluate the RANS-LUT model performance in terms of the flow (Sect. 3.1 and 3.2), turbine power performance (Sect. 3.3), and wind farm efficiency (Sect. 3.4). RANS-LUT model errors in streamwise velocity, ϵU, TI, ϵI, turbine power, ϵP,i, and wind farm efficiency, ϵη, are computed as the difference between the models normalized by the freestream values:

(21) ϵ U = U LUT - U RANS U ref ,

ϵI=23kLUT-23kRANSUref=ILUT-IRANS,ϵP,i=Pi,LUT-Pi,RANSPref,ϵη=i=1i=NPi,LUT-i=1i=NPi,RANSNPref=ηLUT-ηRANS,

with i as the turbine index, N as the total number of turbines, Pi as the turbine power of turbine i, Pref as the turbine power obtained from the power curve as defined by the simple turbine model from Eq. (1), and η as the wind farm efficiency.

3.1 Flow

Figure 3 depicts the rotor-averaged streamwise velocity and wake-added TI obtained from the results of the turbine row consisting of eight turbines. Results are shown for the three stability cases and two turbine spacings, s=4D and s=8D. A below-rated wind speed of 11 m s−1 is used, which means that all turbines operate at the same thrust coefficient of CT=0.8. Hence, the wake shapes applied in the RANS-LUT model only change by wake-added TI, but the magnitude in wake deficit still varies due to the wake superposition and effective wind speed scaling. Figure 3e–h depict the RANS-LUT model errors in streamwise velocity and wake-added TI. Overall, the RANS-LUT model captures the trend of both the streamwise velocity and wake-added TI in terms of downstream development and effect of atmospheric stability. The RANS-LUT model mainly overpredicts the wake-added TI inside the turbine row but underpredicts the wake-added TI in the wind farm wake for the turbine row with the smallest spacing, as shown in Fig. 3e. The opposite trend is obtained for the streamwise velocity errors for the smallest spacing and the stable and neutral cases (Fig. 3e and f). The largest absolute errors are 5 % and 2.5 % for the streamwise velocity (Fig. 3e and f) and wake-added TI (Fig. 3g and h), respectively. It is also worth noting that the errors in the wind farm wake can be larger than the errors inside the turbine row, as obtained for the unstable case with 4D spacing (Fig. 3e and g). The RANS-LUT model includes blockage effects and predict similar values of upstream rotor-averaged streamwise velocity for the neutral and unstable cases, as shown in Fig. 3e and f, for x/s<0. However, the RANS-LUT model overpredicts the wind farm blockage for the stable case by about 1 %, which is not fully understood.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f03

Figure 3Rotor-averaged streamwise velocity (a, b), wake-added TI (c–d), and corresponding model errors (e–h) in a turbine row with 4D and 8D turbine spacing and Uref=11ms-1 (constant CT=0.8).

Download

Figure 4 is the same as Fig. 3, but an above-rated wind speed is applied, resulting in a varying turbine thrust coefficient. Similar observations can be made as discussed for Fig. 3, but the errors in streamwise velocity and wake-added TI are higher for the above-rated case, where the largest absolute errors are about 8 % and 3 %, respectively, obtained for the stable case.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f04

Figure 4Same as Fig. 3 for Uref=14ms-1 (variable CT).

Download

One can remove the error of looking up the wrong velocity deficit shape in the RANS-LUT model by simulating the below-rated wind speed case (constant CT) with prescribed wake-added TI values obtained from the RANS-AD model. The resulting normalized stream-wise velocity and corresponding error are depicted in Fig. 5. The largest absolute errors in the RANS-LUT model are obtained for the unstable case with 8D spacing and are about 1 % higher in magnitude as calculated for the case where the wake-added TI is not prescribed by the RANS-AD model, as shown in Fig. 3. This indicates that an overestimation in wake-added TI can slightly reduce the error in stream-wise velocity deficit. However, the main source of error is the velocity deficit superposition method, as shown in Fig. B1, and not the error made by looking up the wrong wake shape due to an overprediction of wake-added TI.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f05

Figure 5Rotor-averaged streamwise velocity (a, b) for prescribed wake-added TI values from RANS-AD and corresponding model errors (c, d) in a turbine row with 4D and 8D turbine spacing and Uref=11ms-1 (constant CT=0.8).

Download

Figure 6 depicts the streamwise velocity and wake-added TI at hub height for the wind farm with 8D turbine spacing and a below-rated wind speed. Results of the RANS-LUT and RANS-AD models are shown for all three stability cases. A wind direction of 279° is selected where the downstream turbines operate in a partial wake depending on the stability conditions. The streamwise velocity of the RANS-AD model (Fig. 6a–c) shows that the wakes are more narrow for stable cases compared to the neutral and unstable cases. As a result, the wake effects of the stable case are less pronounced compared to the other stability cases, which is shown in more detail in Sect. 3.4 in terms of wind farm efficiency. The RANS-LUT model is able to capture this trend, although it overpredicts the wake-added TI compared to the RANS-AD model for the stable and neutral cases, as shown in Fig. 6g, j, h, and k. In addition, the RANS-LUT model flow fields are less smooth compared to the RANS-AD model flow fields, mainly visible for the stable and neutral cases, which is a consequence of not solving the RANS and turbulence transport equations.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f06

Figure 6Flow at hub height in terms of streamwise velocity (a–f) and wake-added TI (g–l) for RANS-AD and RANS-LUT models, a wind farm with 8D turbine spacing, and Uref=11ms-1 (constant CT=0.8).

Download

3.2 Consequence of not including wake-added turbulence

In order to quantify the impact of wake-added turbulence, the RANS-LUT model has been employed without wake-added TI for the wind turbine rows with different turbine spacing, atmospheric stability cases, and a below-rated wind speed (constant CT). This means that the employed velocity deficit wake shape is the same for all turbines per stability case. Results of rotor-averaged streamwise velocity and the corresponding model error are depicted in Fig. 7. Figure 7a and b show that the absence of wake-added TI in the RANS-LUT model leads to larger velocity deficits compared to the RANS-AD model. The removal of wake-added TI results in large model errors in the rotor-averaged streamwise velocity that grows with downstream distance inside the wind farm up to −22 %, which is more than 3 times as large as largest error obtained from the RANS-LUT model including wake-added TI for the same case (Fig. 3f). Hence, it is important to include wake-added TI LUTs in the RANS-LUT model.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f07

Figure 7Rotor-averaged streamwise velocity (a, b) and corresponding model errors (c, d) in a turbine row with 4D and 8D turbine spacing and Uref=11ms-1 (constant CT), without wake-added TI LUTs.

Download

3.3 Wind turbine power

Figure 8 depicts the turbine power of the simulated wind turbine row for two wind turbine spacings, a below- and above-rated wind speed, and all three stability cases. The maximum absolute errors are 5.3 % and 20 % for the below- and above-rated wind speed cases, both obtained for the fourth turbine. In terms of mean absolute error in power of all turbines and cases, we obtain a values of 3.4 %.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f08

Figure 8Wind turbine power (a–d) and RANS-LUT model error (e–h) of a turbine row with 4D and 8D turbine spacing and Uref=11ms-1 and Uref=14ms-1.

Download

It should be noted that the RANS-LUT model errors in the rotor-averaged wind speed and turbine power can be opposite in sign, which is a counterintuitive result. For example, the error in rotor-averaged wind speed of the unstable case for an above-rated inflow wind speed is mostly positive (Fig. 4e and f), while the corresponding errors in power are negative for the fourth, fifth, and sixth turbine (Fig. 8g and h). The reason for the possibility of opposite sign errors in wind speed and power is related to a difference in power calculation method employed by the RANS-AD and RANS-LUT models. The RANS-LUT model follows the power calculation method in PyWake, which determines the power from the power curve using an effective wind speed at the turbine location that represents the effects of all neighboring turbines excluding its own induction, as explained in Sect. 2.3.2. The latter is not possible for a wind farm flow based on CFD since the inflow wind speed at the turbine location is undefined for a wind farm. Instead, an alternative power coefficient based on the actuator-disk-averaged wind speed is used from which the power can be obtained. The alternative power coefficient can be determined from 1D momentum theory (Calaf et al.2010) or single RANS-AD simulations (van der Laan et al.2015a); we employ the latter for the RANS-AD wind farm simulations in the present work.

3.4 Wind farm efficiency

The wind farm efficiency of the square wind farm as a function of wind direction is shown in Fig. 9 for the two turbine spacings, a below- and above-rated wind speed, and all three stability cases. Figure 9 shows that wind farm efficiency is lower for the below-rated wind speed and aligned wind direction as expected. However, the wind farm efficiency is not always the lowest for stable conditions because the wakes are narrower compared to neutral and unstable conditions and can therefore miss the downstream turbines more easily for wind directions in between row-aligned wind directions for the wind farm layout with 8D turbine spacing, as discussed previously in Sect. 3.1 using Fig. 6. This effect is also captured by the RANS-LUT model. The RANS-LUT model errors, as shown in Fig. 9c and d, are within ±3.0 % for the below-rated wind speed inflow. The highest errors are obtained for the row-aligned wind directions (270 and 315°); for the above-rated wind speed (14 m s−1); and for the smallest turbine spacing, with a maximum error of 10 %.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f09

Figure 9Wind farm efficiency (a, b) and corresponding RANS-LUT model error (c, d) for 8×8 wind farm with 4D (a, c) and 8D (b, d) turbine spacing and Uref=11ms-1 and Uref=14ms-1.

Download

3.5 Computational effort and memory usage

The computational effort of the RANS-AD and RANS-LUT models is listed in Table 4 in terms of CPU hours and maximum memory usage. The simulations are run on the Sophia HPC cluster (Technical University of Denmark2019). It consists of nodes with 32 physical cores ( 16-core AMD EPYC 7351) with either 128 or 256 GB RAM. The RANS-LUT model is run with a single core on a node with 256 GB RAM. The RANS-AD simulations are parallel and have been run with 532 and 696 cores for the wind farms with 4D and 8D spacing, respectively. The RANS-LUT surrogate model is 5 orders of magnitude faster than the RANS-AD model for the wind farm case with 8D spacing. The surrogate model also uses 2 orders of magnitude less memory. However, the RANS-LUT model is relatively slow and requires a large amount memory compared to an analytical engineering wake model. For example, running the TurbOPark analytical engineering wake model (Nygaard et al.2020; Pedersen et al.2022) in PyWake using the non-calibrated setup described in van der Laan et al. (2023) for the wind farm with 8D spacing requires 0.00074 CPU hours and 0.3 GB, which is about 25 times faster and 10 times less memory compared to the RANS-LUT model. Timings would be similar for any of the other analytical models available in PyWake. Here, the same iterative method for including both wake and blockage effects is applied as that used in the RANS-LUT model.

Table 4Computational effort of RANS-LUT and RANS-AD models obtained from wind farms for stable conditions using 32 flow cases.

Download Print Version | Download XLSX

The CPU hours and memory usage of the RANS-LUT model increase with the number of turbines, N, as shown in Fig. 10. Results of additional simulations are shown for a square wind farm with 8D spacing for a single flow case (11 m s−1 and 270°) using N={42,82,162,322}. Results of TurbOPark are also shown. Figure 10 shows that both the RANS-LUT and TurbOPark models require more CPU hours and memory with increasing number of turbines. For the largest wind farm using N=322, the RANS-LUT model requires 1 and 2 orders of magnitude more CPU hours and memory, respectively, compared to TurbOPark. For larger wind farms, the available 256 GB of node memory may be exceeded, and the RANS-LUT model cannot be run on the employed HPC. The CPU hours and memory usage also increase with N because the inclusion of blockage effects is calculated with an iterative method in PyWake (labeled as All2AllIterative), which scales roughly as 𝒪(N2) in terms of CPU hours and memory. One could investigate faster and less memory-intensive iterative methods, as for example the recently developed PropagateUpDownIterative method in PyWake, which uses iterative upwind and downwind steps where the memory scales as 𝒪(N). However, switching from All2AllIterative to PropagateUpDownIterative can lead to an increase in the mean absolute wind turbine power in the turbine rows of about 0.3 %. One could also reduce the number of points of the LUTs by simply removing data where they are not required, e.g., the near-wake region applicable to a wind farm layout with a relatively large turbine spacing. Other memory-reducing solutions could be in the form of an analytical model (Delvaux et al.2024) or an artificial neural network (Schøler et al.2023), both calibrated or trained with the single-wake database.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f10

Figure 10Computational effort of RANS-LUT and TurbOPark models with number of turbines using a single flow case (Uref=11ms-1 and 270°). Horizontal dashed line depicts memory limit of 256 GB.

Download

3.6 Model limitations

The RANS-LUT surrogate model is based on RANS-AD single-wake simulations and will therefore inherit the limitations of the chosen RANS-AD method. In this work, we have applied a surface layer model following MOST. However, the applicability of MOST becomes less relevant for tall turbines that operate beyond the atmospheric surface layer, especially for stable conditions where the ABL is shallow. One could create a RANS-AD single-wake database based on an idealized ABL model including a prescribed pressure gradient, Coriolis, and an ABL height (van der Laan et al.2024). However, it is not trivial to create a single-wake database for a large range of inflow TI required to represent wake-added TI in a wind farm simulation employing the RANS-LUT surrogate model. In other words, the RANS-LUT model assumption stating that the effects of inflow TI and wake-added TI are the same may not hold for an ABL inflow model. Furthermore, the deflection of the single wake due to the Coriolis-induced wind veer may require a superposition of lateral-velocity LUTs, which is currently not available in PyWake (v2.6.18).

RANS relies on a turbulence model that represents all turbulence scales. It is well known that RANS turbulence models can have model errors (Réthoré2009; van der Laan et al.2015c; Baungaard et al.2022b; Jigjid et al.2025), and the development of better models is an active area of research. One could use a turbulence-resolving method as large-eddy simulation (LES) to create a single-wake database of mean velocity deficit and wake-added TI and develop a corresponding LES-LUT surrogate model. Such a model could also include a turbulence-length-scale dimension, which one could relate to atmospheric stability. Using LES to create a single-wake database is 3 to 4 orders of magnitude more expensive compared to RANS, but one may be able to obtain a more realistic wake model. The development of an LES-LUT surrogate model, as well as a validation of the RANS-LUT model, is recommended for future research.

4 Conclusions

A surrogate model of RANS-AD wind farm simulations is proposed, labeled as the RANS-LUT model, which is based on lookup tables of single-wake velocity deficit and wake-added TI flow fields including effects of atmospheric stability following MOST. The RANS-LUT model is evaluated against RANS-AD wind farm simulations for different inflow conditions and wind farms. The RANS-LUT model can capture the trend of RANS-AD wind farm simulations with respect to atmospheric stability, wind direction, and wind speed. The largest errors in rotor-averaged streamwise velocity and wake-added TI in a turbine row of eight turbines are 8 % and 3 %, respectively, and are obtained for an above-rated wind speed, stable conditions, and 4D turbine spacing. When wake-added TI is not used in the RANS-LUT model, then the largest error in streamwise velocity deficit increases to 22 %, which shows the necessity of including wake-added TI in the surrogate model. The errors in streamwise velocity lead to a mean absolute error in turbine power of 3.4 % for all turbine row cases. The wind farm case simulations consisting of 8×8 turbines reveal errors in wind farm efficiency up to 3 % below-rated, while above-rated a maximum absolute error of 10 % is obtained for a row-aligned wind direction and stable conditions. Good results for both velocity and power are achieved by using a momentum-based wake deficit superposition method in combination with a rotor-averaging model, which leads to a more consistent RANS surrogate model compared to using linear superposition without rotor averaging that relies on error cancellation. However, one of the main sources of error remains the wake deficit superposition. The applied velocity deficit superposition method is based on a simplified momentum equation, and one could investigate alternative superposition methods based on a more complex momentum equation, as for example proposed by (Bastankhah et al.2021). The RANS-LUT model is about 105 faster than the RANS-AD model, but it is still an order of magnitude slower than an engineering wake model using analytical wake shapes due to the need for interpolating and storing LUTs in the RANS-LUT model. More research is required to reduce the computational effort. In addition, the use of MOST is a limitation for large turbines that frequently operate beyond the atmospheric surface layer, especially for stable conditions. Future work could employ a more realistic inflow model including an ABL height and Coriolis, although it is not trivial how to generate a single-wake database for a large range of inflow TI for all conditions, which would be needed to represent wake-added TI when the RANS-LUT model is applied to a wind farm.

Appendix A: Nonlinear behavior of the thrust coefficient

In this section, the linearity of the thrust coefficient on the single-wake velocity deficit in RANS-AD simulations is investigated for neutral inflow conditions. To simplify the study, an AD model is employed based on a fixed normalized thrust force distribution (van der Laan et al.2015c), obtained from a rotor-resolved CFD simulation of the DTU 10 MW reference turbine (Bak et al.2013), and tangential forces are neglected. The effect of the thrust coefficient is investigated by scaling the normalized thrust force distribution accordingly.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f11

Figure A1Effect of thrust coefficient on the single-wake velocity deficit, normalized by the thrust coefficient.

Download

A conservative grid spacing of D/16 is used. Figure A1 depicts the single-wake velocity deficit normalized by the thrust coefficient at four different downstream distances for two different ambient turbulence intensities and a range of thrust coefficients. It is clear that the velocity deficits do not collapse for constant ambient turbulence intensity, which shows the nonlinear behavior of the thrust coefficient. The wake recovery is enhanced with increasing thrust coefficient, and this leads to a nonlinear behavior of the thrust coefficient, which follows the same trend as the LES-derived near-wake length scale of Sørensen et al. (2015). Hence, the RANS-LUT surrogate model requires a thrust coefficient dimension in order to capture this effect.

Appendix B: Effect of wake superposition and rotor averaging

Figure B1 depicts results of the rotor-averaged streamwise velocity and turbine power of a wind turbine row consisting of eight turbines, with 4D and 8D spacing. The full RANS-AD model and the RANS-LUT surrogate model are employed with different combinations of velocity deficit superposition and rotor-averaging methods. The corresponding errors with respect to RANS-AD results are also plotted in Fig. B1. The most challenging inflow case is shown, corresponding to an above-rated wind speed (variable CT) and stable conditions. Note that the rotor-averaging method of the RANS-LUT model refers to averaging the deficit at the turbine location to obtain the effective wind speed and wake-added TI, not the rotor-averaging method to obtain the flow as a post-step. Two different methods are applied: rotor center (RC), meaning no averaging, and rotor averaging (RA), using a Gaussian quadrature method that yields similar results to the AD polar grid of the RANS-AD model. The velocity deficit superposition methods are linear superposition (linear sum), weighted superposition of  Zong and Porté-Agel (2020) (weighted sum), and a weighted superposition where the weights do not exceed 1 (weighted sum limiter). The additional limiter ensures that the individual wakes are not convected faster than the background flow. Our implementation of the weighted superposition is discussed in detail in Sect. 2.3.3. Criado Risco et al. (2023) used a linear summation method without rotor averaging (RC), and their LUT flow predictions compared well to RANS-AD simulations, as also shown in Fig. B1a and b.

However, we find that this does not apply to power production, depicted in Fig. B1c and d, as it turns out that the favorable flow field predictions rely on superposition and effective wind speed errors canceling out. Linear summation leads to overestimating wind farm deficits in deep wakes (Zong and Porté-Agel2020); however at the rotor center the wind speed is lower compared to the rotor average, leading to lower deficits. This becomes clear when using linear superposition with the rotor-averaging model, which results in much larger errors compared to linear summation with the rotor center model, best visible in Fig. B1e, despite being more consistent with the RANS-AD simulation where rotor averaging is applied. When the weighted sum method is employed, the errors are reduced after the third or fourth turbine in the row. However, the weighted sum method can result in large errors in the near-wake because the superposition method weights are based on a simplified momentum equation, which is invalid in the near-wake, and we find that the weights can exceed 1. Therefore, we propose to limit the weights to not exceed 1 (i.e., the weights do not become larger than a linear superposition model). Figure B1e shows that the weighed sum method with the limiter does not produce the large errors in the near-wake and performs overall the best after the third turbine for both the flow and turbine power.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f12

Figure B1Rotor-averaged streamwise velocity (a, b) and wind turbine power (c, d) and corresponding model errors (e–h) in a turbine row with 4D and 8D turbine spacing, Uref=14ms-1 (variable CT), and stable conditions. Results are shown for different rotor-averaging and superposition methods.

Download

Appendix C: RANS-AD grid refinement study

The RANS-AD single-wake and wind farm simulations are performed with a grid that has a refined resolution around the AD of D/8. A grid spacing of D/8 to D/10 is commonly used for neutral and unstable RANS-AD simulations employing EllipSys3D (van der Laan et al.2015c, b; Baungaard et al.2022a). However, for stable conditions, the grid resolution may need to be refined depending on the quantity of interest. Results of a grid refinement study of single RANS-AD simulations are shown in Fig. C1 using three grid resolutions – D/4, D/8, and D/16 – and three stability inflow cases, as defined in Sect. 2.1. A below-rated inflow wind speed is applied, leading to a thrust coefficient of CT=0.8. The rotor-averaged velocity deficit (Fig. C1a–c) and wake-added TI (Fig. C1d–e) increase when going from the unstable to stable cases. The increased wake deficits lead to larger discretization errors (Fig. C1g–l) based on a mixed-order analysis (Roy2003). For the chosen grid resolution of D/8, the maximum discretization error in rotor-averaged streamwise velocity beyond x/D=2.5 is around 3 % for the stable and neutral cases and less than 0.5 % for the unstable

case. The maximum wake-added TI discretization errors for D/8 and x/D>2.5 are similar in magnitude for the neutral case but larger for the stable and unstable cases, namely, 3.5 % and 2 %, respectively. While these errors are acceptable, one could choose a finer grid resolution to generate the RANS-AD single-wake database with reduced discretization errors.

https://wes.copernicus.org/articles/11/2647/2026/wes-11-2647-2026-f13

Figure C1Influence of grid spacing on RANS-AD single-wake results in terms of rotor-averaged streamwise velocity (a–c) and wake-added TI (d–f) and corresponding discretization errors (g–l) for different stability cases. RE is Richardson-extrapolated value.

Download

Code and data availability

The RANS-LUT surrogate model is available through the open-source software PyWake v2.6.18 (Pedersen et al.2023) (https://gitlab.windenergy.dtu.dk/TOPFARM/PyWake, https://doi.org/10.5281/zenodo.2562661, Pedersen et al.2019). The CFD results are generated with proprietary software, although the data presented can be made available by contacting the corresponding author. However, the turbine row examples including the single-wake database and RANS data are publicly available at https://gitlab.windenergy.dtu.dk/TOPFARM/pywake_ranslut/-/tree/v0.4?ref_type=tags (https://doi.org/10.5281/zenodo.21338574, van der Laan et al.2026). If the data set/code is not your own, please inform us accordingly. In any case, please ensure that you include a reference list entry corresponding to the data set/code including creators, title, and date of last access.

Author contributions

MPvdL developed the RANS-LUT model extensions, performed the CFD simulations, drafted the article, and produced the figures. AMF investigated the model errors related to the rotor average and wake superposition models. AWF suggested the use of the weighted summation method and implemented it in PyWake. All authors contributed to discussion of the new model, the methodology, and finalization of the paper.

Competing interests

The contact author has declared that none of the authors has any competing interests.

Disclaimer

Publisher's note: Copernicus Publications remains neutral with regard to jurisdictional claims made in the text, published maps, institutional affiliations, or any other geographical representation in this paper. The authors bear the ultimate responsibility for providing appropriate place names. Views expressed in the text are those of the authors and do not necessarily reflect the views of the publisher.

Acknowledgements

We would like to thank Mads Pedersen for his support regarding the implementation of the RANS-LUT surrogate model in PyWake. We also gratefully acknowledge the computational and data resources provided on the Sophia HPC Cluster at the Technical University of Denmark (https://doi.org/10.57940/FAFC-6M81 Technical University of Denmark2019).

Financial support

This work has been partially supported by the MERIDIONAL project, which receives funding from the European Union’s Horizon Europe Programme under the grant agreement no. 101084216.

Review statement

This paper was edited by Xiaolei Yang and reviewed by three anonymous referees.

References

Andersen, S. J. and Murcia Leon, J. P.: Predictive and stochastic reduced-order modeling of wind turbine wake dynamics, Wind Energ. Sci., 7, 2117–2133, https://doi.org/10.5194/wes-7-2117-2022, 2022. a

Bak, C., Zahle, F., Bitsche, R., Kim, T., Yde, A., Henriksen, L., Natarajan, A., and Hansen, M.: Description of the DTU 10 MW Reference Wind Turbine, Tech. Rep., DTU Wind Energy Report-I-0092, Technical University of Denmark, 2013. a

Barthelmie, R. J., Frandsen, S. T., Nielsen, M. N., Pryor, S. C., Rethore, P. E., and Jørgensen, H. E.: Modelling and measurements of power losses and turbulence intensity in wind turbine wakes at middelgrunden offshore wind farm, Wind Energy, 10, 517–528, https://doi.org/10.1002/we.238, 2007. a

Bastankhah, M. and Porté-Agel, F.: A new analytical model for wind-turbine wakes (special issue on aerodynamics of offshore wind energy systems and wakes), Renew. Energ., 70, 116–123, https://doi.org/10.1016/j.renene.2014.01.002, 2014. a

Bastankhah, M., Welch, B. L., Martínez-Tossas, L. A., King, J., and Fleming, P.: Analytical solution for the cumulative wake of wind turbines in wind farms, J. Fluid Mech., 911, A53, https://doi.org/10.1017/jfm.2020.1037, 2021. a

Baungaard, M., van der Laan, M. P., and Kelly, M.: RANS modeling of a single wind turbine wake in the unstable surface layer, Wind Energ. Sci., 7, 783–800, https://doi.org/10.5194/wes-7-783-2022, 2022a. a, b, c, d

Baungaard, M., Wallin, S., van der Laan, M. P., and Kelly, M.: Wind turbine wake simulation with explicit algebraic Reynolds stress modeling, Wind Energ. Sci., 7, 1975–2002, https://doi.org/10.5194/wes-7-1975-2022, 2022b. a

Bleeg, J., Purcell, M., Ruisi, R., and Traiger, E.: Wind Farm Blockage and the Consequences of Neglecting Its Impact on Energy Production, Energies, 11, https://doi.org/10.3390/en11061609, 2018. a

Boussinesq, M. J.: Théorie de l'écoulement tourbillonnant et tumultueux des liquides, Gauthier-Villars et fils, Paris, France, 1897. a

Calaf, M., Meneveau, C., and Meyers, J.: Large eddy simulation study of fully developed wind-turbine array boundary layers, Phys. Fluids, 22, 015110, https://doi.org/10.1063/1.3291077, 2010. a

Criado Risco, J., van der Laan, M. P., Pedersen, M. M., Meyer Forsting, A., and Réthoré, P.-E.: A RANS-based surrogate model for simulating wind turbine interaction, J. Phys. Conf. Ser., 2505, 012016, https://doi.org/10.1088/1742-6596/2505/1/012016, 2023. a, b, c, d, e, f, g, h, i, j, k

Delvaux, T., Van Der Laan, M. P., and Terrapon, V. E.: A new RANS-based added turbulence intensity model for wind-farm flow modelling, J. Phys. Conf. Ser., 2767, 092089, https://doi.org/10.1088/1742-6596/2767/9/092089, 2024. a, b

Doubrawa, P., Quon, E. W., Martinez-Tossas, L. A., Shaler, K., Debnath, M., Hamilton, N., Herges, T. G., Maniaci, D., Kelley, C. L., Hsieh, A. S., Blaylock, M. L., van der Laan, P., Andersen, S. J., Krueger, S., Cathelain, M., Schlez, W., Jonkman, J., Branlard, E., Steinfeld, G., Schmidt, S., Blondel, F., Lukassen, L. J., and Moriarty, P.: Multimodel validation of single wakes in neutral and stratified atmospheric conditions, Wind Energy, 23, 2027–2055, https://doi.org/10.1002/we.2543, 2020. a, b

DTU Wind and Energy Systems: PyWakeEllipSys v5.4, https://topfarm.pages.windenergy.dtu.dk/cuttingedge/pywake/pywake_ellipsys/ (last access: 13 July 2026), 2025. a

Ebenhoch, R., Muro, B., Dahlberg, J.-Å., Berkesten Hägglund, P., and Segalini, A.: A linearized numerical model of wind-farm flows, Wind Energy, 20, 859–875, https://doi.org/10.1002/we.2067, 2017. a, b

Göçmen, T., van der Laan, M. P., Réthoré, P. E., Peña Diaz, A., Larsen, G. C., and Ott, S.: Wind turbine wake models developed at the technical university of Denmark: A review, Renew. Sust. Energ. Rev., 60, 752–769, 2016. a

Hoyer, S. and Hamman, J.: xarray: N–D labeled arrays and datasets in Python, Journal of Open Research Software, 5, https://doi.org/10.5334/jors.148, 2017. a

Jacquet, C., Apgar, D., Chauchan, V., Storey, R., Kern, S., and Davoust, S.: Farm blockage model validation using pre and post construction LiDAR measurements, J. Phys. Conf. Ser., 2265, 022009, https://doi.org/10.1088/1742-6596/2265/2/022009, 2022. a, b, c, d

Jensen, N.: A note on wind generator interaction, no. 2411 in Risø-M, Risø National Laboratory, 1983. a

Jigjid, K., Eidi, A., Doan, N. A. K., and Dwight, R. P.: Discovery of a Physically Interpretable Data-Driven Wind-Turbine Wake Model, Flow Turbul. Combust., https://doi.org/10.1007/s10494-025-00679-y, 2025. a

Jonkman, J., Butterfield, S., Musial, W., and Scott, G.: Definition of a 5-MW Reference Wind Turbine for Offshore System Development, Tech. rep., National Renewable Energy Laboratory, https://docs.nlr.gov/docs/fy09osti/38060.pdf (last access: 13 July 2026), 2009. a

Katic, I., Højstrup, J., and Jensen, N.: A Simple Model for Cluster Efficiency, in: EWEC'86. Proceedings, Vol. 1, edited by: Palz, W. and Sesto, E., 407–410, European Wind Energy Association Conference and Exhibition, EWEC '86; Conference date: 6–8 October 1986, Rome, Italy, 1987. a

Meyer Forsting, A. R., Navarro Diaz, G. P., Segalini, A., Andersen, S. J., and Ivanell, S.: On the accuracy of predicting wind-farm blockage, Renew. Energ., 214, 114–129, https://doi.org/10.1016/j.renene.2023.05.129, 2023. a

Michelsen, J. A.: Basis3D – a platform for development of multiblock PDE solvers., Tech. Rep. AFM 92-05, Technical University of Denmark, Lyngby, Denmark, 1992. a

Mikkelsen, R.: Actuator Disc Methods Applied to Wind Turbines, PhD thesis, Technical University of Denmark, Mek dept, Lyngby, Denmark, 2003. a

Monin, A. S. and Obukhov, A. M.: Basic laws of turbulent mixing in the surface layer of the atmosphere, Tr. Akad. Nauk. SSSR Geophiz. Inst., 24, 163–187, 1954. a, b

Niayifar, A. and Porté-Agel, F.: Analytical Modeling of Wind Farms: A New Approach for Power Prediction, Energies, 9, https://doi.org/10.3390/en9090741, 2016. a

Nygaard, N. G., Steen, S. T., Poulsen, L., and Pedersen, J. G.: Modelling cluster wakes and wind farm blockage, J. Phys. Conf. Ser., 1618, 062072, https://doi.org/10.1088/1742-6596/1618/6/062072, 2020. a

Ott, S., Berg, J., and Nielsen, M.: Linearised CFD Models for Wakes, Tech. Rep. Risø-R-1772, Risø, 2011. a, b, c

Pedersen, M. M., van der Laan, P., Friis-Møller, M., Rinker, J., and Réthoré, P.-E.: DTUWindEnergy/PyWake: PyWake, Zenodo [code], https://doi.org/10.5281/zenodo.2562661, 2019. a

Pedersen, J. G., Svensson, E., Poulsen, L., and Nygaard, N. G.: Turbulence Optimized Park model with Gaussian wake profile, J. Phys. Conf. Ser., 2265, 022063, https://doi.org/10.1088/1742-6596/2265/2/022063, 2022. a

Pedersen, M. M., Meyer Forsting, A., van der Laan, P., Riva, R., Alcayaga Romàn, L. A., Criado Risco, J., Friis-Møller, M., Quick, J., Schøler Christiansen, J. P., Valotta Rodrigues, R., Olsen, B. T., and Réthoré, P.-E.: PyWake 2.5.0: An open-source wind farm simulation tool, Zenodo [code], https://doi.org/10.5281/zenodo.6806136, 2023. a, b, c

Peña, A., Réthoré, P.-E., and van der Laan, M. P.: On the application of the Jensen wake model using a turbulence-dependent wake decay coefficient: the Sexbierum case, Wind Energy, 19, 763–776, https://doi.org/10.1002/we.1863, 2016. a

Porté-Agel, F., Bastankhah, M., and Shamsoddin, S.: Wind-Turbine and Wind-Farm Flows: A Review, Bound.-Lay. Meteorol., 174, 1–59, https://doi.org/10.1007/s10546-019-00473-0, 2020. a, b

Prospathopoulos, J. M., Politis, E. S., Rados, K. G., and Chaviaropoulos, P. K.: Evaluation of the effects of turbulence model enhancements on wind turbine wake predictions, Wind Energy, 14, 285–300, https://doi.org/10.1002/we.419, 2011. a

Réthoré, P.: Wind Turbine Wake in Atmospheric Turbulence, PhD thesis, Risø National Laboratory for Sustainable Energy, ISBN: 978-87-550-3785-4, 2009. a

Réthoré, P.-E., van der Laan, M. P., Troldborg, N., Zahle, F., and Sørensen, N. N.: Verification and validation of an actuator disc model, Wind Energy, 17, 919–937, https://doi.org/10.1002/we.1607, 2014. a

Roy, C. J.: Grid Convergence Error Analysis for Mixed-Order Numerical Schemes, AIAA J., 41, 595–604, https://doi.org/10.2514/2.2013, 2003. a

Schulte, J. and Stoevesandt, B.: Wind farm layout optimization with wakes from fluid dynamics simulations, EWEA, https://doi.org/10.13140/2.1.2544.3847, 2014. a, b, c, d, e

Schøler, J. P., Riva, R., Andersen, S. J., Murcia Leon, J. P., van der Laan, M. P., Criado Risco, J., and Réthoré, P.-E.: RANS-AD based ANN surrogate model for wind turbine wake deficits, J. Phys. Conf. Ser., 2505, 012022, https://doi.org/10.1088/1742-6596/2505/1/012022, 2023. a

Sørensen, N. N.: General purpose flow solver applied to flow over hills, PhD thesis, Risø National Laboratory, Roskilde, Denmark, 1994. a

Sørensen, J. N., Mikkelsen, R., Henningson, D. S., Ivanell, S., Sarmast, S., and Andersen, S. J.: Simulation of wind turbine wakes using the actuator line technique, Philos. T. R. Soc. A, 373, 20140071, https://doi.org/10.1098/rsta.2014.0071, 2015. a, b

Sørensen, J. N., Nilsson, K., Ivanell, S., Asmuth, H., and Mikkelsen, R. F.: Analytical body forces in numerical actuator disc model of wind turbines, Renew. Energ., 147, 2259, https://doi.org/10.1016/j.renene.2019.09.134, 2020. a

Technical University of Denmark: Sophia HPC Cluster, Research Computing at DTU, https://doi.org/10.57940/FAFC-6M81, 2019. a, b

Troldborg, N., Sørensen, N., Réthoré, P.-E., and van der Laan, P.: A consistent method for finite volume discretization of body forces on collocated grids applied to flow through an actuator disk, Comput. Fluids, 119, 197–203, https://doi.org/10.1016/j.compfluid.2015.06.028, 2015. a

van der Laan, M. P. and Andersen, S. J.: The turbulence scales of a wind turbine wake: A revisit of extended k-epsilon models, J. Phys. Conf. Ser., 1037, 072001, https://doi.org/10.1088/1742-6596/1037/7/072001, 2018. a

van der Laan, M. P. and Sørensen, N. N.: A 1D version of EllipSys, Tech. Rep. DTU Wind Energy E-0141, Technical University of Denmark, ISBN: 978-87-93549-08-1, 2017. a

van der Laan, M. P., Sørensen, N. N., Réthoré, P.-E., Mann, J., Kelly, M. C., and Troldborg, N.: The kεfP model applied to double wind turbine wakes using different actuator disk force methods, Wind Energy, 18, 2223–2240, https://doi.org/10.1002/we.1816, 2015a. a

van der Laan, M. P., Sørensen, N. N., Réthoré, P.-E., Mann, J., Kelly, M. C., Troldborg, N., Hansen, K. S., and Murcia, J. P.: The kεfP model applied to wind farms, Wind Energy, 18, 2065–2084, https://doi.org/10.1002/we.1804, 2015b. a, b

van der Laan, M. P., Sørensen, N. N., Réthoré, P.-E., Mann, J., Kelly, M. C., Troldborg, N., Schepers, J. G., and Machefaux, E.: An improved kε model applied to a wind turbine wake in atmospheric turbulence, Wind Energy, 18, 889–907, https://doi.org/10.1002/we.1736, 2015c. a, b, c, d, e, f

van der Laan, M. P., Kelly, M. C., and Sørensen, N. N.: A new k-epsilon model consistent with Monin–Obukhov similarity theory, Wind Energy, 20, 479–489, https://doi.org/10.1002/we.2017, 2017. a, b, c, d, e

van der Laan, M., Andersen, S., Kelly, M., and Baungaard, M.: Fluid scaling laws of idealized wind farm simulations, J. Phys. Conf. Ser., 1618, 062018, https://doi.org/10.1088/1742-6596/1618/6/062018, 2020. a, b, c

van der Laan, M. P., Andersen, S. J., Réthoré, P.-E., Baungaard, M., Sørensen, J. N., and Troldborg, N.: Faster wind farm AEP calculations with CFD using a generalized wind turbine model, J. Phys. Conf. Ser., 2265, 022030, https://doi.org/10.1088/1742-6596/2265/2/022030, 2022. a, b, c, d

van der Laan, M. P., García-Santiago, O., Kelly, M., Meyer Forsting, A., Dubreuil-Boisclair, C., Sponheim Seim, K., Imberger, M., Peña, A., Sørensen, N. N., and Réthoré, P.-E.: A new RANS-based wind farm parameterization and inflow model for wind farm cluster modeling, Wind Energ. Sci., 8, 819–848, https://doi.org/10.5194/wes-8-819-2023, 2023. a

van der Laan, M. P., Kelly, M., Baungaard, M., Dicholkar, A., and Hodgson, E. L.: A simple steady-state inflow model of the neutral and stable atmospheric boundary layer applied to wind turbine wake simulations, Wind Energ. Sci., 9, 1985–2000, https://doi.org/10.5194/wes-9-1985-2024, 2024.  a, b

van der Laan, M. P., Meyer Forsting, A., and Réthoré, P.-E.: Python script for RANS surrogate model, accepted in Wind Energy Science: A consistent computational fluid dynamics surrogate model for wind turbine interaction including atmospheric stability, Zenodo [code], https://doi.org/10.5281/zenodo.21338574, 2026. a

Zong, H. and Porté-Agel, F.: A momentum-conserving wake superposition method for wind farm power prediction, J. Fluid Mech., 889, A8, https://doi.org/10.1017/jfm.2020.77, 2020. a, b, c, d, e

Download
Short summary
Wind turbine interaction can lead to energy losses. This article introduces a fast open-source wind turbine interaction model that can be used to design energy-efficient wind farms, including effects of atmospheric turbulence and temperature. The model can inherit the accuracy of a higher-fidelity model while being about 5 orders of magnitude faster. However, the model is an order of magnitude slower than analytic wind turbine interaction models, and more research is needed to reduce it.
Share
Altmetrics
Final-revised paper
Preprint