from py_wake.deficit_models.gaussian import TurboGaussianDeficit
from py_wake.ground_models.ground_models import Mirror
from py_wake.rotor_avg_models.gaussian_overlap_model import GaussianOverlapAvgModel
from py_wake.superposition_models import SquaredSum
from py_wake.wind_farm_models.engineering_models import PropagateDownwind
from py_wake.deficit_models.utils import ct2a_mom1d
[docs]class Nygaard_2022(PropagateDownwind):
"""
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.
"""
[docs] def __init__(self, site, windTurbines):
wake_deficitModel = TurboGaussianDeficit(
ct2a=ct2a_mom1d,
groundModel=Mirror(),
rotorAvgModel=GaussianOverlapAvgModel())
# Ørsted scales the deficit with respect to the ambient wind speed of the downstream turbine:
wake_deficitModel.WS_key = 'WS_jlk'
PropagateDownwind.__init__(self, site, windTurbines,
wake_deficitModel=wake_deficitModel,
superpositionModel=SquaredSum())