def test_fuga_wriggles(): wts = HornsrevV80() path = tfp + 'fuga/2MW/Z0=0.03000000Zi=00401Zeta0=0.00E+00/' site = hornsrev1.Hornsrev1Site() fuga = PropagateDownwind(site, wts, FugaDeficit(path, remove_wriggles=True)) D = 80 flow_map_cw = fuga([0], [0], wd=270, ws=10).flow_map( HorizontalGrid([0], np.arange(-20 * D, 20 * D))) y = np.linspace(-5 * D, 5 * D, 100) dw_lst = range(10) flow_map_cw_lst = np.array([ fuga([0], [0], wd=270, ws=10).flow_map(HorizontalGrid([dw * D], y)).WS_eff.squeeze() for dw in dw_lst ]) if 0: for flow_map_cw, dw in zip(flow_map_cw_lst, dw_lst): plt.plot(y, flow_map_cw, label="%dD" % dw) plt.xlabel('y [m]') plt.ylabel('ws [m/s') plt.ylim([9.9, 10.1]) plt.grid() plt.legend(loc=1) plt.show() assert np.all(flow_map_cw_lst > 0)
def test_fuga_blockage_wt_row(): wts = HornsrevV80() path = tfp + 'fuga/2MW/Z0=0.03000000Zi=00401Zeta0=0.00E+00/' site = hornsrev1.Hornsrev1Site() fuga_pdw = Fuga(path, site, wts) fuga_a2a = FugaBlockage(path, site, wts) x, y = [ np.asarray(xy)[np.arange(0, 73, 8)] for xy in (hornsrev1.wt_x, hornsrev1.wt_y) ] sim_res_pdw = fuga_pdw(x, y, wd=[270]) aep = sim_res_pdw.aep_ilk()[:, 0, :] sim_res_a2a = fuga_a2a(x, y, wd=[270]) aep_blockage = sim_res_a2a.aep_ilk()[:, 0, :] # blockage reduce aep(wd=270) by .24% npt.assert_almost_equal((aep.sum() - aep_blockage.sum()) / aep.sum() * 100, 0.2433161515321294) if 0: plt.plot( (sim_res_pdw.WS_eff_ilk[:, 0, 7] - sim_res_a2a.WS_eff_ilk[:, 0, 7]) / sim_res_pdw.WS_eff_ilk[:, 0, 7] * 100) plt.grid() plt.show()
def test_fuga_table_edges(): wts = HornsrevV80() path = tfp + 'fuga/2MW/Z0=0.03000000Zi=00401Zeta0=0.00E+00/' site = hornsrev1.Hornsrev1Site() fuga = FugaBlockage(path, site, wts) D = 80 flow_map_dw = fuga([0], [0], wd=270, ws=10).flow_map( HorizontalGrid(np.arange(-200 * D, 450 * D), y=[0])) flow_map_cw = fuga([0], [0], wd=270, ws=10).flow_map( HorizontalGrid([0], np.arange(-20 * D, 20 * D))) flow_map = fuga([0], [0], wd=270, ws=10).flow_map( HorizontalGrid(np.arange(-150, 400) * D, np.arange(-20, 21) * D)) if 0: plt.plot(flow_map_dw.x / D, flow_map_dw.WS_eff.squeeze()) plt.grid() plt.ylim([9.9, 10.1]) plt.figure() plt.plot(flow_map_cw.y / D, flow_map_cw.WS_eff.squeeze()) plt.grid() plt.ylim([9.9, 10.1]) plt.figure() flow_map.WS_eff.plot() plt.show() npt.assert_array_equal(flow_map.WS_eff.squeeze()[[0, -1], :], 10) npt.assert_array_equal(flow_map.WS_eff.squeeze()[:, [0, -1]], 10)