def main(): if __name__ == '__main__': from py_wake.examples.data.iea37 import IEA37Site, IEA37_WindTurbines from py_wake import IEA37SimpleBastankhahGaussian import matplotlib.pyplot as plt site = IEA37Site(16) x, y = site.initial_position.T windTurbines = IEA37_WindTurbines() # NOJ wake model wind_farm_model = IEA37SimpleBastankhahGaussian(site, windTurbines) simulation_result = wind_farm_model(x, y) fm = simulation_result.flow_map(wd=30) fm.plot_wake_map() plt.figure() fm.plot(fm.power_xylk()[:, :, 0, 0] * 1e-3, "Power [kW]") fm = simulation_result.flow_map(grid=HorizontalGrid(resolution=50)) plt.figure() fm.plot(fm.aep_xy(), "AEP [GWh]") plt.show()
def test_YZGrid_terrain(): site = ParqueFicticioSite(distance=StraightDistance()) x, y = site.initial_position.T windTurbines = IEA37_WindTurbines() wind_farm_model = IEA37SimpleBastankhahGaussian(site, windTurbines) simulation_result = wind_farm_model(x, y, wd=270, ws=10) x = x.max() + 10 fm = simulation_result.flow_map(grid=YZGrid(x, z=110, resolution=20)) y = fm.X[0] x = np.zeros_like(y) + x z = site.elevation(x, y) simulation_result.flow_map().plot_wake_map() plt.plot(x, y, '.') plt.figure() simulation_result.flow_map(grid=YZGrid(x.max() + 10)).plot_wake_map() plt.plot(y, z + 110, '.') if 0: print(np.round(fm.WS_eff_xylk[0, :, 0, 0], 2).tolist()) plt.show() plt.close() npt.assert_array_almost_equal(fm.WS_eff_xylk[:, 0, 0, 0], [10.0, 10.0, 11.69, 5.8, 8.7, 5.15, 10.63, 4.99, 10.73, 8.16, 13.24, 5.59, 12.4, 7.02, 10.91, 7.21, 8.77, 8.41, 9.99, 10.0], 2)
def test_YZGrid_variables(): site = IEA37Site(16) x, y = [0], [0] windTurbines = IEA37_WindTurbines() wf_model = IEA37SimpleBastankhahGaussian(site, windTurbines) sim_res = wf_model(x, y) fm = sim_res.flow_map(grid=YZGrid(x=100, y=None, resolution=100, extend=.1), wd=270, ws=None) fm.WS_eff.plot() plt.plot(fm.y[::10], fm.y[::10] * 0 + 110, '.') if 0: print(np.round(fm.WS_eff.interp(h=110)[::10].squeeze().values, 4)) plt.show() plt.close('all') npt.assert_array_almost_equal( fm.WS_eff.interp(h=110)[::10].squeeze(), [ 9.1461, 8.4157, 7.3239, 6.058, 5.022, 4.6455, 5.1019, 6.182, 7.446, 8.506 ], 4)
import multiprocessing from py_wake.examples.data.hornsrev1 import Hornsrev1Site, wt_x, wt_y from py_wake import IEA37SimpleBastankhahGaussian from py_wake.tests.check_speed import timeit import numpy as np from py_wake.tests import npt from py_wake.wind_turbines import WindTurbines from py_wake.examples.data import wtg_path wt = WindTurbines.from_WAsP_wtg(wtg_path + "Vestas-V80.wtg") site = Hornsrev1Site() wf_model = IEA37SimpleBastankhahGaussian(site, wt) wd_lst = np.arange(0, 360, 10) def aep_wd(args): x, y, wd = args return wf_model(x, y, wd=wd, ws=None).aep().sum() def aep_all_multiprocessing(pool, x, y): return np.sum(pool.map(aep_wd, [(x, y, i) for i in wd_lst])) def aep_wfm_xy(args): wfm, x, y = args return wfm(x, y, wd=wd_lst).aep().sum() def aep_xy(args):
def get_wfm(grad=True): wt = WindTurbines.from_WAsP_wtg(wtg_path + "Vestas-V80.wtg", ) site = Hornsrev1Site() return IEA37SimpleBastankhahGaussian(site, wt)