From 3e1beea402e48a61b4237f624c681cae4c461bd3 Mon Sep 17 00:00:00 2001
From: mmpe <mmpe@dtu.dk>
Date: Mon, 12 Apr 2021 09:56:57 +0200
Subject: [PATCH] fix AEP of time series

---
 py_wake/site/xrsite.py                               |  4 +++-
 .../test_enginering_wind_farm_model.py               | 12 ++++++++++++
 py_wake/wind_farm_models/wind_farm_model.py          |  2 ++
 3 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/py_wake/site/xrsite.py b/py_wake/site/xrsite.py
index ed9e56a2b..d31cc96c1 100644
--- a/py_wake/site/xrsite.py
+++ b/py_wake/site/xrsite.py
@@ -233,7 +233,9 @@ class XRSite(Site):
         lw.set_W(WS, WD, TI, ws_bins, self.use_WS_bins)
         lw.set_data_array(TI_std, 'TI_std', 'Standard deviation of turbulence intensity')
 
-        if 'time' not in lw:
+        if 'time' in lw:
+            lw['P'] = 1 / len(lw.time)
+        else:
             if 'P' in self.ds:
                 if ('ws' in self.ds.P.dims and 'ws' in lw.coords):
                     d_ws = self.ds.P.ws.values
diff --git a/py_wake/tests/test_wind_farm_models/test_enginering_wind_farm_model.py b/py_wake/tests/test_wind_farm_models/test_enginering_wind_farm_model.py
index 08f0ade0c..4a7338c93 100644
--- a/py_wake/tests/test_wind_farm_models/test_enginering_wind_farm_model.py
+++ b/py_wake/tests/test_wind_farm_models/test_enginering_wind_farm_model.py
@@ -409,6 +409,18 @@ def test_time_series_override_ti():
     npt.assert_array_equal(sim_res.TI, ti)
 
 
+def test_time_series_aep():
+
+    d = np.load(os.path.dirname(examples.__file__) + "/data/time_series.npz")
+    wd, ws = [d[k][::100] for k in ['wd', 'ws']]
+    wt = V80()
+    site = Hornsrev1Site()
+    x, y = site.initial_position.T
+    wfm = NOJ(site, wt)
+    sim_res = wfm(x, y, ws=ws, wd=wd, time=True, verbose=False)
+    npt.assert_allclose(sim_res.aep().sum(), 545, atol=1)
+
+
 def test_time_series_operating():
     from py_wake.wind_turbines.power_ct_functions import PowerCtFunctionList, PowerCtTabular
     d = np.load(os.path.dirname(examples.__file__) + "/data/time_series.npz")
diff --git a/py_wake/wind_farm_models/wind_farm_model.py b/py_wake/wind_farm_models/wind_farm_model.py
index e3b0db92c..42391787e 100644
--- a/py_wake/wind_farm_models/wind_farm_model.py
+++ b/py_wake/wind_farm_models/wind_farm_model.py
@@ -237,6 +237,8 @@ class SimulationResult(xr.Dataset):
             return xr.DataArray(aep, [('wt', self.wt), ('wd', self.wd), ('ws', ws)])
         else:
             weighted_power = power_ilk * self.P.ilk() / norm
+        if 'time' in self and weighted_power.shape[2] == 1:
+            weighted_power = weighted_power[:, :, 0]
 
         return xr.DataArray(weighted_power * hours_pr_year * 1e-9,
                             self.Power.coords,
-- 
GitLab