Turbines#
Analytical turbine performance models and per-position assignments.
Wind turbine with power and thrust-coefficient curves. |
|
|
Idealized turbine with a constant below-rated |
|
Variable-speed turbine whose thrust and power follow one axial induction. |
|
Turbine defined by tabulated power and thrust-coefficient curves. |
Wind turbine performance models.
- class oowl.turbines.Idealized(rated_power, rotor_diameter, hub_height, cp_max, *, ct_rated=0.8, air_density=1.225, generator_efficiency=1.0, cutin_wind_speed=4.0, cutout_wind_speed=25.0, ct_idle=None, ct_parked=None, name=None)[source]#
Idealized turbine with a constant below-rated
C_P.Follows the generalized turbine relations of Sørensen (2023, https://doi.org/10.5194/wes-8-1017-2023), including the idealized cut-in discontinuity. The rated wind speed is derived, not supplied.
- Parameters:
rated_power (float) – Electrical rated power in watts.
rotor_diameter (float) – Rotor size and height in meters.
hub_height (float) – Rotor size and height in meters.
cp_max (float) – Power coefficient below rated, at most the Betz limit 16/27.
ct_rated (float) – Thrust coefficient below rated.
air_density (float) – Air density in kg/m³.
generator_efficiency (float) – Share of the rotor power delivered as electrical power.
cutin_wind_speed (float) – Operating band in m/s.
cutout_wind_speed (float) – Operating band in m/s.
ct_idle (float | None) – Thrust below cut-in, default 0, and above cut-out, default the operating value at cut-out.
ct_parked (float | None) – Thrust below cut-in, default 0, and above cut-out, default the operating value at cut-out.
name (str | None) – Label used in plots and windIO documents.
- cp(wind_speed: float) float[source]#
- cp(wind_speed: ArrayLike) ndarray
Return the power coefficient at
wind_speedin m/s.Scalar in, scalar out. Zero outside the cut-in to cut-out band.
- Parameters:
wind_speed (ArrayLike)
- Return type:
float | np.ndarray
- ct(wind_speed: float) float[source]#
- ct(wind_speed: ArrayLike) ndarray
Return the thrust coefficient in [0, 1] at
wind_speedin m/s.ct_ratedbelow rated. Above it, the thrust follows the momentum induction of the fallingC_P. Below cut-in it isct_idle(default 0), above cut-outct_parked, which defaults to the operating value at cut-out.- Parameters:
wind_speed (ArrayLike)
- Return type:
float | np.ndarray
- power(wind_speed: float) float[source]#
- power(wind_speed: ArrayLike) ndarray
Return the electrical power in watts at
wind_speedin m/s.- Parameters:
wind_speed (ArrayLike)
- Return type:
float | np.ndarray
- class oowl.turbines.Controlled(rated_power, rotor_diameter, hub_height, cp_max, optimal_tip_speed_ratio, minimum_rotor_speed, maximum_tip_speed, *, ct_optimal=0.8, induction_exponent=0.35, ct_peak_shaving=None, thrust_slope=0.0, turbulence_smoothing=0.0, air_density=1.225, generator_efficiency=0.96, cutin_wind_speed=3.0, cutout_wind_speed=25.0, ct_idle=None, ct_parked=None, name=None)[source]#
Variable-speed turbine whose thrust and power follow one axial induction.
The rotor tracks
optimal_tip_speed_ratio, held betweenminimum_rotor_speedandmaximum_tip_speed. The induction follows the realized tip-speed ratio asa = a_opt (λ / λ_opt) ** induction_exponent, wherea_optgivesct_optimal. Thrust is the momentum value4 a (1 - a), with Buhl’s correction abovea = 0.4. Power follows the same induction, and its power coefficient never exceedscp_maxunlessturbulence_smoothingaverages it. Above rated the blades pitch to hold rated power, and the induction falls with the power coefficient.At the minimum rotor speed, near cut-in, the rotor over-induces and the thrust rises above
ct_optimal. At the tip-speed limit it falls before rated.induction_exponent=0gives a flat thrust below rated.Rotor speed, tip-speed ratio and induction are diagnostics only and are not exported to windIO.
- Parameters:
rated_power (float) – Electrical rated power in watts.
rotor_diameter (float) – Rotor size and height in meters.
hub_height (float) – Rotor size and height in meters.
cp_max (float) – Power coefficient at the optimal tip-speed ratio.
optimal_tip_speed_ratio (float) – Tip-speed ratio the controller tracks.
minimum_rotor_speed (float) – Lowest rotor speed in rpm.
maximum_tip_speed (float) – Highest blade tip speed in m/s.
ct_optimal (float) – Thrust coefficient at the optimal tip-speed ratio.
induction_exponent (float) – How strongly the induction follows the tip-speed ratio.
ct_peak_shaving (float | None) – Thrust cap, or
None. The lower induction also lowers the power.thrust_slope (float) – Change of the design thrust per m/s about 8 m/s below rated, as in fine-pitch schedules. Above rated the blades pitch instead.
turbulence_smoothing (float) – Turbulence intensity, at most 0.1, over which power and thrust are averaged. It rounds the knee at rated as in measured curves and keeps cut-in and cut-out sharp. As in measured curves, the apparent
C_Pthen exceedscp_max, by about 3% at 0.1 and up to about 13% just above cut-in, where the average sees no idling speeds.ct_idle (float | None) – Thrust below cut-in, default 0, and above cut-out, default the operating value at cut-out.
ct_parked (float | None) – Thrust below cut-in, default 0, and above cut-out, default the operating value at cut-out.
air_density (float) – Air density in kg/m³.
generator_efficiency (float) – Share of the rotor power delivered as electrical power.
cutin_wind_speed (float) – Operating band in m/s.
cutout_wind_speed (float) – Operating band in m/s.
name (str | None) – Label used in plots and windIO documents.
- axial_induction(wind_speed: float) float[source]#
- axial_induction(wind_speed: ArrayLike) ndarray
Return the rotor-averaged axial induction, before turbulence smoothing.
- Parameters:
wind_speed (ArrayLike)
- Return type:
float | np.ndarray
- cp(wind_speed: float) float[source]#
- cp(wind_speed: ArrayLike) ndarray
Return the power coefficient implied by
power().Scalar in, scalar out. Zero outside the cut-in to cut-out band.
- Parameters:
wind_speed (ArrayLike)
- Return type:
float | np.ndarray
- ct(wind_speed: float) float[source]#
- ct(wind_speed: ArrayLike) ndarray
Return the thrust coefficient at
wind_speedin m/s.Below cut-in it is
ct_idle(default 0). Above cut-out it isct_parked, which defaults to the operating value at cut-out.- Parameters:
wind_speed (ArrayLike)
- Return type:
float | np.ndarray
- power(wind_speed: float) float[source]#
- power(wind_speed: ArrayLike) ndarray
Return the electrical power in watts at
wind_speedin m/s.- Parameters:
wind_speed (ArrayLike)
- Return type:
float | np.ndarray
- property rated_wind_speed: float#
Wind speed in m/s at which rated power is first reached.
nanwhen rated power is never reached, which the constructor rejects.
- class oowl.turbines.Tabulated(rotor_diameter, hub_height, wind_speeds, power_values, ct_values, *, name=None, rated_power=None)[source]#
Turbine defined by tabulated power and thrust-coefficient curves.
Curves are linearly interpolated inside the tabulated range and are zero outside it, so the first and last speeds act as cut-in and cut-out.
- Parameters:
rotor_diameter (float) – Rotor size and height in meters.
hub_height (float) – Rotor size and height in meters.
wind_speeds (numpy.ndarray) – Strictly increasing, non-negative wind speeds in m/s.
power_values (numpy.ndarray) – Electrical power in watts at each speed.
ct_values (numpy.ndarray) – Thrust coefficient in [0, 1] at each speed.
name (str | None) – Label used in plots and windIO documents.
rated_power (float | None) – Rated power in watts. Defaults to the largest tabulated power.
- ct(wind_speed: float) float[source]#
- ct(wind_speed: ArrayLike) ndarray
Return the thrust coefficient in [0, 1] at
wind_speedin m/s.- Parameters:
wind_speed (ArrayLike)
- Return type:
float | np.ndarray
- metadata()[source]#
Return the turbine configuration as a JSON-compatible dict.
rated_wind_speedisNonewhen rated power is never reached.- Return type:
- class oowl.Turbine[source]#
Wind turbine with power and thrust-coefficient curves.
The base of every OOWL turbine model. Wind speeds are in m/s, power in watts and heights and diameters in meters.
- abstractmethod ct(wind_speed: float) float[source]#
- abstractmethod ct(wind_speed: ArrayLike) ndarray
Thrust coefficient at one or more wind speeds.
- Parameters:
wind_speed (ArrayLike)
- Return type:
float | np.ndarray
- abstractmethod power(wind_speed: float) float[source]#
- abstractmethod power(wind_speed: ArrayLike) ndarray
Power in watts at one or more wind speeds.
- Parameters:
wind_speed (ArrayLike)
- Return type:
float | np.ndarray