from py_wake.wind_turbines import WindTurbine from py_wake.wind_turbines.power_ct_functions import PowerCtTabular from py_wake.site._site import UniformSite from py_wake.site.xrsite import XRSite from py_wake.wind_farm_models import PropagateDownwind from py_wake.deficit_models.gaussian import TurboGaussianDeficit from py_wake.flow_map import XYGrid import numpy as np import xarray as xr D = 126 #Diametro del wT h = 90 #Altura del WT U_ref = 8 initial_position = np.array([[ 1 , 1], [ 2. , 2], [ 4 , 4], [ 1 , 4], [ 2 , 4], [ 3 , 4], [ 1 , 5], [ 2 , 5], [ 5 , 5]]) def py_wake_Initial_Cong(D,name,h,U_ref,initial_position=initial_position): #Curvas del WT power_curve = np.array([ [ 0.1, 1.000], [ 4.5, 267.7], [ 5.0, 387.6], [ 5.5, 534.0], [ 6.0, 707.4], [ 6.5, 910.0], [ 7.0, 1142.7], [ 7.5, 1407.5], [ 8.0, 1707.1], [ 8.5, 2047.3], [ 9.0, 2430.6]]) * [1, 1000] ct_curve = np.array([ [ 0.1, 0.100], [ 4.5, 0.928], [ 5.0, 0.892], [ 5.5, 0.861], [ 6.0, 0.835], [ 6.5, 0.812], [ 7.0, 0.792], [ 7.5, 0.776], [ 8.0, 0.7702530978349217], [ 8.5, 0.762], [ 9.0, 0.763]]) return WindTurbine(name=name, diameter=D, hub_height=h, powerCtFunction=PowerCtTabular(power_curve[:, 0], power_curve[:, 1], 'w',ct_curve[:, 1], method='linear')) windTurbines = py_wake_Initial_Cong(D, 'NREL_5MW', h, U_ref) def run(initial_position=initial_position, U_ref=U_ref): initial_position = np.array(initial_position); #site = UniformSite(p_wd=[1], # ws=U_ref, # initial_position=initial_position*D) ds = xr.Dataset( data_vars={'P': ('wd', [1])}, coords={'wd': [0]}) ds['TI'] = 0.1 site = XRSite(ds, interp_method='nearest', initial_position=initial_position*D, default_ws=np.atleast_1d(U_ref)) wt_x, wt_y = site.initial_position.T/D wfm = PropagateDownwind(site, windTurbines, wake_deficitModel=TurboGaussianDeficit()) grid = XYGrid(x=np.arange(0, 10.01, 0.1)*126, y=np.arange(0, 10.01, 0.1)*126) xa = wfm(x=wt_x*126, y=wt_y*126, wd=0, yaw=0).flow_map(grid) ws = xa.WS_eff return ws[:,:,0,0].values[:,:,0].tolist()