Predefined Engineering wind farm model classes

NOJ

class py_wake.literature.noj.Jensen_1983(site, windTurbines, rotorAvgModel=<py_wake.rotor_avg_models.area_overlap_model.AreaOverlapAvgModel object>, ct2a=<function ct2a_madsen>, k=0.1, superpositionModel=<py_wake.superposition_models.SquaredSum object>, deflectionModel=None, turbulenceModel=None, groundModel=None)[source]
Implemented according to:

Niels Otto Jensen, “A note on wind generator interaction.” (1983)

Features:
  • Top-hat shape for the wake profile.

  • Wake superposition is done with the squared sum model as default.

  • Given the top-hat shape, the Area Overlap Average model is used as default, which includes the wake radius.

__init__(site, windTurbines, rotorAvgModel=<py_wake.rotor_avg_models.area_overlap_model.AreaOverlapAvgModel object>, ct2a=<function ct2a_madsen>, k=0.1, superpositionModel=<py_wake.superposition_models.SquaredSum object>, deflectionModel=None, turbulenceModel=None, groundModel=None)[source]
Parameters:
  • site (Site) – Site object

  • windTurbines (WindTurbines) – WindTurbines object representing the wake generating wind turbines

  • k (float, default 0.1) – wake expansion factor

  • superpositionModel (SuperpositionModel, default SquaredSum) – Model defining how deficits sum up

  • blockage_deficitModel (DeficitModel, default None) – Model describing the blockage(upstream) deficit

  • deflectionModel (DeflectionModel, default None) – Model describing the deflection of the wake due to yaw misalignment, sheared inflow, etc.

  • turbulenceModel (TurbulenceModel, default None) – Model describing the amount of added turbulence in the wake

BastankhahGaussian

class py_wake.literature.gaussian_models.Bastankhah_PorteAgel_2014(site, windTurbines, k, ceps=0.2, ct2a=<function ct2a_mom1d>, use_effective_ws=True, rotorAvgModel=None, superpositionModel=<py_wake.superposition_models.LinearSum object>, deflectionModel=None, turbulenceModel=None, groundModel=None)[source]
Implemented according to:

Bastankhah M and Porté-Agel F. A new analytical model for wind-turbine wakes. J. Renew. Energy. 2014;70:116-23.

Description:
  • Conservation of mass and momentum is applied with the assumption of a Gaussian shape for the wake profile in the calculation of the wake deficit.

  • Only one parameter needed to determine the velocity distribution: the wake expansion parameter k.

__init__(site, windTurbines, k, ceps=0.2, ct2a=<function ct2a_mom1d>, use_effective_ws=True, rotorAvgModel=None, superpositionModel=<py_wake.superposition_models.LinearSum object>, deflectionModel=None, turbulenceModel=None, groundModel=None)[source]
Parameters:
  • site (Site) – Site object

  • windTurbines (WindTurbines) – WindTurbines object representing the wake generating wind turbines

  • k (float) – Wake expansion factor

  • use_effective_ws (bool) – Option to use either the local (True) or free-stream wind speed (False) experienced by the ith turbine

  • rotorAvgModel (RotorAvgModel, optional) –

    Model defining one or more points at the down stream rotors to calculate the rotor average wind speeds from.

    if None, default, the wind speed at the rotor center is used

  • superpositionModel (SuperpositionModel, default SquaredSum) – Model defining how deficits sum up

  • deflectionModel (DeflectionModel, default None) – Model describing the deflection of the wake due to yaw misalignment, sheared inflow, etc.

  • turbulenceModel (TurbulenceModel, default None) – Model describing the amount of added turbulence in the wake

IEA37SimpleBastankhahGaussian

class py_wake.IEA37SimpleBastankhahGaussian(site, windTurbines, rotorAvgModel=None, superpositionModel=<py_wake.superposition_models.SquaredSum object>, deflectionModel=None, turbulenceModel=None)[source]

Predefined wind farm model

__init__(site, windTurbines, rotorAvgModel=None, superpositionModel=<py_wake.superposition_models.SquaredSum object>, deflectionModel=None, turbulenceModel=None)[source]
Parameters:
  • site (Site) – Site object

  • windTurbines (WindTurbines) – WindTurbines object representing the wake generating wind turbines

  • rotorAvgModel (RotorAvgModel, optional) –

    Model defining one or more points at the down stream rotors to calculate the rotor average wind speeds from.

    if None, default, the wind speed at the rotor center is used

  • superpositionModel (SuperpositionModel, default SquaredSum) – Model defining how deficits sum up

  • deflectionModel (DeflectionModel, default None) – Model describing the deflection of the wake due to yaw misalignment, sheared inflow, etc.

  • turbulenceModel (TurbulenceModel, default None) – Model describing the amount of added turbulence in the wake

NiayifarGaussian

class py_wake.literature.gaussian_models.Niayifar_PorteAgel_2016(site, windTurbines, a=[0.3837, 0.003678], ceps=0.2, ct2a=<function ct2a_mom1d>, use_effective_ws=True, use_effective_ti=True, superpositionModel=<py_wake.superposition_models.LinearSum object>, deflectionModel=None, turbulenceModel=<py_wake.turbulence_models.crespo.CrespoHernandez object>, rotorAvgModel=<py_wake.rotor_avg_models.gaussian_overlap_model.GaussianOverlapAvgModel object>, groundModel=None)[source]
Implemented according to:

Amin Niayifar and Fernando Porté-Agel Analytical Modeling of Wind Farms: A New Approach for Power Prediction Energies 2016, 9, 741; doi:10.3390/en9090741 [1]

Features:
  • Conservation of mass and momentum and a Gaussian shape for the wake profile.

  • Wake expansion function of local turbulence intensity.

Description:
  • The expansion rate ‘k’ varies linearly with local turbluence intensity: k = a1 I + a2.

  • The default constants are set according to publications by Porte-Agel’s group, which are based on LES simulations. Lidar field measurements by Fuertes et al. (2018) indicate that a = [0.35, 0.0] is also a valid selection.

  • Wake superposition is represented by linearly adding the wakes.

  • The Crespo Hernandez turbulence model is used to calculate the added streamwise turbulence intensity, Eq 14 in [1].

__init__(site, windTurbines, a=[0.3837, 0.003678], ceps=0.2, ct2a=<function ct2a_mom1d>, use_effective_ws=True, use_effective_ti=True, superpositionModel=<py_wake.superposition_models.LinearSum object>, deflectionModel=None, turbulenceModel=<py_wake.turbulence_models.crespo.CrespoHernandez object>, rotorAvgModel=<py_wake.rotor_avg_models.gaussian_overlap_model.GaussianOverlapAvgModel object>, groundModel=None)[source]
Parameters:
  • site (Site) – Site object

  • windTurbines (WindTurbines) – WindTurbines object representing the wake generating wind turbines

  • superpositionModel (SuperpositionModel, default LinearSum) – Model defining how deficits sum up

  • deflectionModel (DeflectionModel, default None) – Model describing the deflection of the wake due to yaw misalignment, sheared inflow, etc.

  • turbulenceModel (TurbulenceModel, default CrespoHernandez) – Model describing the amount of added turbulence in the wake

  • use_effective_ws (bool) – Option to use either the local (True) or free-stream (False) wind speed experienced by the ith turbine

  • use_effective_ti (bool) – Option to use either the local (True) or free-stream (False) turbulence intensity experienced by the ith turbine

ZongGaussian

class py_wake.literature.gaussian_models.Zong_PorteAgel_2020(site, windTurbines, a=[0.38, 0.004], deltawD=0.7071067811865475, eps_coeff=0.35, lam=7.5, B=3, use_effective_ws=True, use_effective_ti=True, rotorAvgModel=None, superpositionModel=<py_wake.superposition_models.WeightedSum object>, deflectionModel=None, turbulenceModel=<py_wake.turbulence_models.crespo.CrespoHernandez object>, groundModel=None)[source]
Implemented according to:

Haohua Zong and Fernando Porté-Agel “A momentum-conserving wake superposition method for wind farm power prediction” J. Fluid Mech. (2020), vol. 889, A8; doi:10.1017/jfm.2020.77

Features:
  • Conservation of mass and momentum and a Gaussian shape for the wake profile.

  • Wake expansion function of local turbulence intensity.

  • New wake width expression following the approach by Shapiro et al. (2018).

Description:

Extension of the Niayifar et al. (2016) implementation with adapted Shapiro wake model components, namely a gradual growth of the thrust force and an expansion factor not falling below the rotor diameter. Shapiro modelled the pressure and thrust force as a combined momentum source, that are distributed in the streamwise direction with a Gaussian kernel with a certain characteristic length. As a result the induction changes following an error function. Zong chose to use a characteristic length of D/sqrt(2) and applies it directly to the thrust not the induction as Shapiro. This leads to the full thrust being active only 2D downstream of the turbine. Zong’s wake width expression is inspired by Shapiro’s, however the start of the linear wake expansion region (far-wake) was related to the near-wake length by Vermeulen (1980). The epsilon factor that in the original Gaussian model was taken to be a function of CT is now a constant as proposed by Bastankhah (2016), as the near-wake length now effectively dictates the origin of the far-wake.

__init__(site, windTurbines, a=[0.38, 0.004], deltawD=0.7071067811865475, eps_coeff=0.35, lam=7.5, B=3, use_effective_ws=True, use_effective_ti=True, rotorAvgModel=None, superpositionModel=<py_wake.superposition_models.WeightedSum object>, deflectionModel=None, turbulenceModel=<py_wake.turbulence_models.crespo.CrespoHernandez object>, groundModel=None)[source]
Parameters:
  • site (Site) – Site object

  • windTurbines (WindTurbines) – WindTurbines object representing the wake generating wind turbines

  • superpositionModel (SuperpositionModel, default SquaredSum) – Model defining how deficits sum up

  • deflectionModel (DeflectionModel, default None) – Model describing the deflection of the wake due to yaw misalignment, sheared inflow, etc.

  • turbulenceModel (TurbulenceModel, default None) – Model describing the amount of added turbulence in the wake

  • use_effective_ws (bool) – Option to use either the local (True) or free-stream (False) wind speed experienced by the ith turbine

  • use_effective_ti (bool) – Option to use either the local (True) or free-stream (False) turbulence intensity experienced by the ith turbine

SuperGaussian

class py_wake.literature.gaussian_models.Blondel_Cathelain_2020(site, windTurbines, use_effective_ws=True, use_effective_ti=True, superpositionModel=<py_wake.superposition_models.LinearSum object>, deflectionModel=None, turbulenceModel=None, rotorAvgModel=None, groundModel=None)[source]
Implemented according to:

Blondel and Cathelain (2020) An alternative form of the super-Gaussian wind turbine wake model Wind Energ. Sci., 5, 1225–1236, 2020 https://doi.org/10.5194/wes-5-1225-2020 [1]

Features:
  • Wake profile transitions from top-hat at near wake to Gaussian at far wake.

  • characteristic wake width (sigma) function of turbulence intensity and CT.

  • evolution of super gaussian “n” order function of downwind distance and turbulence intensity.

Description:
  • Super gaussian wake order “n” is determined with the calibrated parameters: a_f, b_f, c_f; with a_f kept constant at 3.11.

  • Calibrated parameters taken from Table 2 and 3 in [1].

  • Linear summation of the wakes based on Shapiro (2019) https://www.mdpi.com/1996-1073/12/15/2956

  • Turbulence model is set to None. The Crespo Hernandez model is recommended.

__init__(site, windTurbines, use_effective_ws=True, use_effective_ti=True, superpositionModel=<py_wake.superposition_models.LinearSum object>, deflectionModel=None, turbulenceModel=None, rotorAvgModel=None, groundModel=None)[source]
Parameters:
  • site (Site) – Site object

  • windTurbines (WindTurbines) – WindTurbines object representing the wake generating wind turbines

  • superpositionModel (SuperpositionModel, default SquaredSum) – Model defining how deficits sum up

  • deflectionModel (DeflectionModel, default None) – Model describing the deflection of the wake due to yaw misalignment, sheared inflow, etc.

  • turbulenceModel (TurbulenceModel, default None) – Model describing the amount of added turbulence in the wake

  • use_effective_ws (bool) – Option to use either the local (True) or free-stream (False) wind speed experienced by the ith turbine

  • use_effective_ti (bool) – Option to use either the local (True) or free-stream (False) turbulence intensity experienced by the ith turbine

TurbOPark

class py_wake.Nygaard_2022(site, windTurbines)[source]
Implemented similar to:

Ørsted’s TurbOPark model (https://github.com/OrstedRD/TurbOPark/blob/main/TurbOPark%20description.pdf)

Features:
  • Velocity deficit defined as in Bastankhah and Porté-Agel (2014) with a Gaussian profile.

  • Wake expansion calculation considers the combination of the ambient turbulence intensity (I0) and the turbulence generated by the wake itself.

  • The expression by Frandsen (2007) is used to model the turbulence in the turbine’s wake, which depends on the thrust coefficient and downstream distance.

  • Wake expansion parameter (A) calibrated from data and constant at A = 0.04.

  • The squared sum wake superposition model from Katic et al (1986) is used as default.

  • The mirror model is used as the default ground model.

__init__(site, windTurbines)[source]

Initialize flow model

Parameters:
  • site (Site) – Site object

  • windTurbines (WindTurbines) – WindTurbines object representing the wake generating wind turbines

  • wake_deficitModel (DeficitModel) – Model describing the wake(downstream) deficit

  • rotorAvgModel (RotorAvgModel, optional) –

    Model defining one or more points at the down stream rotors to calculate the rotor average wind speeds from.

    if None, default, the wind speed at the rotor center is used

  • superpositionModel (SuperpositionModel) – Model defining how deficits sum up

  • deflectionModel (DeflectionModel) – Model describing the deflection of the wake due to yaw misalignment, sheared inflow, etc.

  • turbulenceModel (TurbulenceModel) – Model describing the amount of added turbulence in the wake

Fuga

class py_wake.literature.fuga.Ott_Nielsen_2014(LUT_path, site, windTurbines, rotorAvgModel=None, deflectionModel=None, turbulenceModel=None, remove_wriggles=False)[source]
Implemented according to:

Ott, S., & Nielsen, M. (2014). Developments of the offshore wind turbine wake model Fuga. DTU Wind Energy. DTU Wind Energy E No. 0046

Description:
  • Fuga is a linearized CFD model that can predict wake effects for offshore wind farms.

  • It has the ability to work with different types of turbines for the same project, which makes it useful for inter farm interactions.

__init__(LUT_path, site, windTurbines, rotorAvgModel=None, deflectionModel=None, turbulenceModel=None, remove_wriggles=False)[source]
Parameters:
  • LUT_path (str) – path to look up tables

  • site (Site) – Site object

  • windTurbines (WindTurbines) – WindTurbines object representing the wake generating wind turbines

  • rotorAvgModel (RotorAvgModel, optional) –

    Model defining one or more points at the down stream rotors to calculate the rotor average wind speeds from.

    if None, default, the wind speed at the rotor center is used

  • deflectionModel (DeflectionModel) – Model describing the deflection of the wake due to yaw misalignment, sheared inflow, etc.

  • turbulenceModel (TurbulenceModel) – Model describing the amount of added turbulence in the wake

FugaBlockage

class py_wake.literature.fuga.Ott_Nielsen_2014_Blockage(LUT_path, site, windTurbines, rotorAvgModel=None, deflectionModel=None, turbulenceModel=None, convergence_tolerance=1e-06, remove_wriggles=False)[source]
Implemented according to:

Ott, S., & Nielsen, M. (2014). Developments of the offshore wind turbine wake model Fuga. DTU Wind Energy. DTU Wind Energy E No. 0046

Description:
  • Fuga is a linearized CFD model that can predict wake effects for offshore wind farms.

  • It has the ability to work with different types of turbines for the same project, which makes it useful for inter farm interactions.

  • An additional blockage model is added and the All2AllIterative wind farm model is used to model blockage effects.

__init__(LUT_path, site, windTurbines, rotorAvgModel=None, deflectionModel=None, turbulenceModel=None, convergence_tolerance=1e-06, remove_wriggles=False)[source]
Parameters:
  • LUT_path (str) – path to look up tables

  • site (Site) – Site object

  • windTurbines (WindTurbines) – WindTurbines object representing the wake generating wind turbines

  • rotorAvgModel (RotorAvgModel, optional) –

    Model defining one or more points at the down stream rotors to calculate the rotor average wind speeds from.

    if None, default, the wind speed at the rotor center is used

  • deflectionModel (DeflectionModel) – Model describing the deflection of the wake due to yaw misalignment, sheared inflow, etc.

  • turbulenceModel (TurbulenceModel) – Model describing the amount of added turbulence in the wake