Newer
Older
from py_wake.wake_model import WakeModel
import numpy as np
class TurbulenceModel(WakeModel):
def calc_added_turbulence(self):
"""Calculate added turbulence intensity caused by the x'th most upstream wind turbines
for all wind directions(l) and wind speeds(k) on a set of points(j)
This method must be overridden by subclass
Arguments required by this method must be added to the class list
args4addturb
See class documentation for examples and available arguments
Returns
-------
add_turb_jlk : array_like
"""
def calc_effective_TI(self, TI_lk, add_turb_jlk):
"""Calculate effective turbulence intensity
Parameters
----------
TI_lk : array_like
Local turbulence intensity at x'th most upstream turbines for all wind
directions(l) and wind speeds(k)
add_turb_jlk : array_like
deficit caused by upstream turbines(j) for all wind directions(l)
and wind speeds(k)
Returns
-------
TI_eff_lk : array_like
Effective wind speed at the x'th most upstream turbines for all wind
directions(l) and wind speeds(k)
"""
def ti_map(self, x_j, y_j, h, wt_x_i, wt_y_i, wt_type_i, wt_h_i, wd, ws):
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
"""Calculate a wake (effecitve wind speed) map
Parameters
----------
WS_ilk : array_like
Local wind speed [m/s] for each turbine(i), wind direction(l) and
wind speed(k)
WS_eff_ilk : array_like
Local effective wind speed [m/s] for each turbine(i), wind
direction(l) and wind speed(k)
dw_ijl : array_like
Down wind distance matrix between turbines(i) and map points (j) for
all wind directions(l) [m]
hcw_ijl : array_like
Horizontal cross wind distance matrix between turbines(i) and map
points(j) for all wind directions(l) [m]
dh_ijl : array_like
Vertical hub height distance matrix between turbines(i,i) for all
wind directions(l) [m]
ct_ilk : array_like
Thrust coefficient for all turbine(i), wind direction(l) and
wind speed(k)
types_i : array_like
Wind turbine type indexes
WS_jlk : array_like
Local wind speed [m/s] for map point(j), wind direction(l) and
wind speed(k)
Returns
-------
WS_eff_jlk : array_like
Local effective wind speed [m/s] for all map points(j),
wind direction(l) and wind speed(k)
"""
X_j, Y_j, deficit_ijlk, _, TI_jlk, P_ilk = self._map(args4func=self.args4addturb, func=self.calc_added_turbulence,
x_j=x_j, y_j=y_j, h=h,
wt_x_i=wt_x_i, wt_y_i=wt_y_i, wt_type_i=wt_type_i, wt_h_i=wt_h_i,
wd=wd, ws=ws)
TI_eff_jlk = self.calc_effective_TI(TI_jlk, deficit_ijlk)
return X_j, Y_j, TI_eff_jlk, P_ilk
class MaxSum():
def calc_effective_TI(self, TI_jlk, add_turb_ijlk):
return TI_jlk + np.max(add_turb_ijlk, 0)