pywasp.wasp.potential_aep

pywasp.wasp.potential_aep(wwc, wtg, /, wind_turbines=None, *, wind_farm_model='PARK2_onshore', ws_stepsize=1.0, ws_upper_limit=None, ws_lower_limit=0.0, n_subsector=5, site_interp_method='nearest', site_interp_bounds='ignore', turbulence_intensity=None, shear=None, n_cpu_pywake=1)[source]

Calculate Potential Annual Energy Production using wind farm effects from PyWake.

Warning

This function is experimental and its signature may change.

Parameters:
  • wwc (Dataset) – PyWAsP Weibull Wind Climate Dataset containing wind climates for all the turbine locations.

  • wtg (Dataset, dict, wk.WindTurbines) –

    • If a xr.Dataset is passed it should be a WTG formatted dataset. PyWAsP will assume WWC points match the turbines hub height and that the WTG is the same for all turbines

    • If a dict of wtg_keys and WTG xr.Datasets is passed, a turbines dataset must be passed as well, and the key’s must match between the two.

    • A wk.WindTurbines object can also be passed, but is deprecated and will be removed in a future version.

  • wind_turbines (Dataset, optional) – Wind Turbine locations, hub heights, group_id’s, and wtg_keys.

  • wind_farm_model (str, function) – Wind farm model to use for deficit calculations. Can either be a name of a predefined wind farm model: “PARK1”, “PARK2_onshore”, “PARK2_offshore”, or a predefined py_wake wind_farm_model object (wrapped in a ‘functools.partial’ function)

  • ws_stepsize (float, optional) – Wind speed step sizes between wind speed cases, by default 1.0 m/s

  • n_subsector (int, optional) – Number of subsectors to use per sector, by default None Which means 5 subsectors will be used.

  • ws_upper_limit (float, optional) – Upper limit of wind speed range, by default None Which means the upper limit of the wind speed range will be the maximum

  • ws_lower_limit (float, optional) – Lower limit of wind speed range, by default 0.0

  • n_subsector (int, optional) – Number of subsectors to use per sector, by default None Which means 5 subsectors will be used.

  • site_interp_method (str, optional) – The interpolation method to use in py_wake XRSite, by default “nearest”

  • site_interp_bounds (str, optional) – How to handle values outside the site boundary, by default “ignore” Which means values outside the site bondary will not be checked for.

  • turbulence_intensity (float, optional) – Turbulence intensity to use for the AEP calculation. If not passed, the turbulence intensity from the WWC will be used. If turbulence intensity is passed, it will be used, and overwrite the turbulence intensity in the WWC, if present.

  • shear (float, optional) – shear to use for the AEP calculation. If not passed, the shear from the WWC will be used. If shear is passed, it will be used, and overwrite the shear in the WWC, if present.

  • n_cpu_pywake (int, optional) – Number of CPUs to use for the PyWake calculations, by default 1 If n_cpu_pywake is None, the number of CPUs will be set to the number of CPUs available on the machine.

Returns:

Dataset – Potential Annual Energy Production in GWh for each turbine/location and sector.

Raises:
  • ModuleNotFoundError – If PyWake is not installed.

  • TypeError – If wtg is not a xr.Dataset or wk.WindTurbines object.

  • ValueError – If required variables are not in the WWC.

  • ValueError – If turbulence_intensity is not in the WWC and no explicit value was passed.