From 82affaeda76e4f16ec19d0330fdad287d2fe9cd9 Mon Sep 17 00:00:00 2001 From: "Mads M. Pedersen" <mmpe@dtu.dk> Date: Wed, 17 May 2017 13:11:54 +0200 Subject: [PATCH] rainflow error fixed but test fails --- wetb/fatigue_tools/fatigue.py | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/wetb/fatigue_tools/fatigue.py b/wetb/fatigue_tools/fatigue.py index 27b4c2c..684a598 100644 --- a/wetb/fatigue_tools/fatigue.py +++ b/wetb/fatigue_tools/fatigue.py @@ -104,7 +104,7 @@ def eq_load_and_cycles(signals, no_bins=46, m=[3, 4, 6, 8, 10, 12], neq=[10 ** 6 if 0: #to be similar to windap ampl_bin_mean = (ampl_bin_edges[:-1] + ampl_bin_edges[1:]) / 2 cycles, ampl_bin_mean = cycles.flatten(), ampl_bin_mean.flatten() - eq_loads = [[((np.sum(cycles * ampl_bin_mean ** _m) / _neq) ** (1. / _m)) for _m in np.atleast_1d(m)] for _neq in np.atleast_1d(neq)] + eq_loads = [[((np.nansum(cycles * ampl_bin_mean ** _m) / _neq) ** (1. / _m)) for _m in np.atleast_1d(m)] for _neq in np.atleast_1d(neq)] return eq_loads, cycles, ampl_bin_mean, ampl_bin_edges @@ -147,7 +147,8 @@ def cycle_matrix(signals, ampl_bins=10, mean_bins=10, rainflow_func=rainflow_win >>> cycles, ampl_bin_mean, ampl_edges, mean_bin_mean, mean_edges = cycle_matrix(signal) >>> cycles, ampl_bin_mean, ampl_edges, mean_bin_mean, mean_edges = cycle_matrix([(.4, signal), (.6,signal)]) """ - + if len(signals)==0: + print ("here") if isinstance(signals[0], tuple): weights, ampls, means = np.array([(np.zeros_like(ampl)+weight,ampl,mean) for weight, signal in signals for ampl,mean in rainflow_func(signal[:]).T], dtype=np.float64).T else: @@ -158,12 +159,9 @@ def cycle_matrix(signals, ampl_bins=10, mean_bins=10, rainflow_func=rainflow_win cycles, ampl_edges, mean_edges = np.histogram2d(ampls, means, [ampl_bins, mean_bins], weights=weights) ampl_bin_sum = np.histogram2d(ampls, means, [ampl_bins, mean_bins], weights=weights * ampls)[0] - ampl_bin_mean = np.zeros_like(cycles) - mask = (cycles > 0) - ampl_bin_mean[mask] = ampl_bin_sum[mask] / cycles[mask] + ampl_bin_mean = np.nanmean(ampl_bin_sum / np.where(cycles,cycles,np.nan),1) mean_bin_sum = np.histogram2d(ampls, means, [ampl_bins, mean_bins], weights=weights * means)[0] - mean_bin_mean = np.zeros_like(cycles)+np.nan - mean_bin_mean[cycles > 0] = mean_bin_sum[cycles > 0] / cycles[cycles > 0] + mean_bin_mean = np.nanmean(mean_bin_sum / np.where(cycles, cycles, np.nan), 1) cycles = cycles / 2 # to get full cycles return cycles, ampl_bin_mean, ampl_edges, mean_bin_mean, mean_edges -- GitLab