pywasp.potential_aep

pywasp.potential_aep(wwc, wtg, /, wind_turbines=None, *, air_density_correction='infer', air_density=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)

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) –

    • 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.

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

  • air_density_correction (string, optional) – “infer” –> to apply power curve interpolation/extrapolation to site-specific air density. “none” –> to not apply power curve interpolation/extrapolation.

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

  • 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.

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

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