From 54e91327a0981deecf2df65e24ef1ffaa9c224a5 Mon Sep 17 00:00:00 2001
From: Javier Criado Risco <jcrri@dtu.dk>
Date: Wed, 2 Jun 2021 06:08:28 +0000
Subject: [PATCH] fix loads of time series

---
 py_wake/wind_farm_models/wind_farm_model.py | 25 ++++++++++++++-------
 1 file changed, 17 insertions(+), 8 deletions(-)

diff --git a/py_wake/wind_farm_models/wind_farm_model.py b/py_wake/wind_farm_models/wind_farm_model.py
index 6c95192f1..381572aa5 100644
--- a/py_wake/wind_farm_models/wind_farm_model.py
+++ b/py_wake/wind_farm_models/wind_farm_model.py
@@ -321,18 +321,27 @@ class SimulationResult(xr.Dataset):
                     loads_silk = (np.log((softmax_base**(loads_siilk / f[:, na, na, na, na])).sum(1)) /
                                   np.log(softmax_base) * f[:, na, na, na])
 
-            ds = xr.DataArray(
-                loads_silk,
-                dims=['sensor', 'wt', ('wd', 'time')['time' in self.dims], 'ws'],
-                coords={'sensor': wt.loadFunction.output_keys,
-                        'm': ('sensor', wt.loadFunction.wohler_exponents, {'description': 'Wohler exponents'}),
-                        'wt': self.wt, 'wd': self.wd, 'ws': self.ws},
-                attrs={'description': '1Hz Damage Equivalent Load'}).to_dataset(name='DEL')
+            if 'time' in self.dims:
+                ds = xr.DataArray(
+                    np.array(loads_silk)[..., 0],
+                    dims=['sensor', 'wt', 'time'],
+                    coords={'sensor': wt.loadFunction.output_keys,
+                            'm': ('sensor', wt.loadFunction.wohler_exponents, {'description': 'Wohler exponents'}),
+                            'wt': self.wt, 'time': self.time, 'wd': self.wd, 'ws': self.ws},
+                    attrs={'description': '1Hz Damage Equivalent Load'}).to_dataset(name='DEL')
+            else:
+                ds = xr.DataArray(
+                    loads_silk,
+                    dims=['sensor', 'wt', 'wd', 'ws'],
+                    coords={'sensor': wt.loadFunction.output_keys,
+                            'm': ('sensor', wt.loadFunction.wohler_exponents, {'description': 'Wohler exponents'}),
+                            'wt': self.wt, 'wd': self.wd, 'ws': self.ws},
+                    attrs={'description': '1Hz Damage Equivalent Load'}).to_dataset(name='DEL')
             f = ds.DEL.mean()   # factor used to reduce numerical errors in power
             if 'time' in self.dims:
                 assert 'duration' in self, "Simulation must contain a dataarray 'duration' with length of time steps in seconds"
                 t_flowcase = self.duration
-                ds['LDEL'] = ((t_flowcase * (ds.DEL / f)**ds.m).sum(('time', 'ws')) / n_eq_lifetime)**(1 / ds.m) * f
+                ds['LDEL'] = ((t_flowcase * (ds.DEL / f)**ds.m).sum(('time')) / n_eq_lifetime)**(1 / ds.m) * f
             else:
                 ds['P'] = self.P
                 t_flowcase = ds.P * 3600 * 24 * 365 * lifetime_years
-- 
GitLab