diff --git a/wetb/prepost/h2_vs_hs2.py b/wetb/prepost/h2_vs_hs2.py index f06621114cbe3b38a994348a6204b909a13381f1..e9597be58653a6f20ed41d9d1f60dbef2f9a0711 100644 --- a/wetb/prepost/h2_vs_hs2.py +++ b/wetb/prepost/h2_vs_hs2.py @@ -18,7 +18,7 @@ from wetb.prepost import hawcstab2 as hs2 from wetb.prepost import mplutils -class Configurations: +class ConfigBase: def __init__(self): pass @@ -499,11 +499,18 @@ class Sims(object): class MappingsH2HS2(object): - def __init__(self, chord_length=3.0): + def __init__(self, config): """ + + Parameters + ---------- + + config : Config class based on ConfigBase + """ self.hs2_res = hs2.results() - self.chord_length = chord_length + self.chord_length = config.chord_length + self.h2_maps = config.h2_maps def powercurve(self, h2_df_stats, fname_hs): @@ -512,19 +519,15 @@ class MappingsH2HS2(object): def _powercurve_h2(self, df_stats): - mappings = {'Ae rot. power' : 'P_aero', - 'Ae rot. thrust': 'T_aero', - 'Vrel-1-39.03' : 'vrel_39', - 'Omega' : 'rotorspeed', - 'tower-tower-node-010-forcevec-y' : 'T_towertop', - 'tower-shaft-node-003-forcevec-y' : 'T_shafttip'} - df_stats.sort_values('[windspeed]', inplace=True) df_mean = pd.DataFrame() df_std = pd.DataFrame() - for key, value in mappings.items(): + for key, value in self.h2_maps.items(): tmp = df_stats[df_stats['channel']==key] + if len(tmp) == 0: + msg = 'channel %s is required for %s but not found' % (key, value) + raise ValueError(msg) df_mean[value] = tmp['mean'].values.copy() df_std[value] = tmp['std'].values.copy() @@ -718,7 +721,13 @@ class Plots(object): the HAWC2 output output_at_time, and HAWCStab2 output *.ind """ - def __init__(self): + def __init__(self, config): + """ + Parameters + ---------- + + config : Config class based on ConfigBase + """ self.h2c = 'b' self.h2ms = '+' @@ -733,6 +742,8 @@ class Plots(object): self.errlab = 'diff' self.interactive = False + self.config = config + self.dist_size = (16, 11) self.dist_nrows = 3 self.dist_ncols = 4 @@ -742,7 +753,7 @@ class Plots(object): def load_h2(self, fname_h2, h2_df_stats=None, fname_h2_tors=None): - res = MappingsH2HS2() + res = MappingsH2HS2(self.config) res.h2_res = sim.windIO.ReadOutputAtTime(fname_h2) res._distribution_h2() if h2_df_stats is not None: @@ -754,7 +765,7 @@ class Plots(object): def load_hs(self, fname_hs): - res = MappingsH2HS2() + res = MappingsH2HS2(self.config) res.hs2_res.load_ind(fname_hs) res._distribution_hs2() @@ -943,7 +954,7 @@ class Plots(object): Number of nodes to ignore at the blade root section """ - results = MappingsH2HS2() + results = MappingsH2HS2(self.config) results.blade_distribution(fname_h2, fname_hs2, h2_df_stats=h2_df_stats, fname_h2_tors=fname_h2_tors) res = [results.h2_aero[n0+1:-1], results.hs_aero[n0:]] @@ -966,7 +977,7 @@ class Plots(object): output file. """ - results = MappingsH2HS2() + results = MappingsH2HS2(self.config) results.blade_distribution(fname_h2, fname_hs2) res = [results.h2_aero[n0+1:-1], results.hs_aero[n0:]] @@ -983,7 +994,7 @@ class Plots(object): def powercurve(self, h2_df_stats, fname_hs, title, size=(8.6, 4)): - results = MappingsH2HS2() + results = MappingsH2HS2(self.config) results.powercurve(h2_df_stats, fname_hs) fig, axes = self.new_fig(title=title, nrows=1, ncols=2, size=size) @@ -1050,11 +1061,11 @@ class Plots(object): def h2_powercurve(self, h2_df_stats1, h2_df_stats2, title, labels, size=(8.6,4)): - res1 = MappingsH2HS2() + res1 = MappingsH2HS2(self.config) res1._powercurve_h2(h2_df_stats1) wind1 = res1.pwr_h2_mean['windspeed'].values - res2 = MappingsH2HS2() + res2 = MappingsH2HS2(self.config) res2._powercurve_h2(h2_df_stats2) wind2 = res2.pwr_h2_mean['windspeed'].values @@ -1116,11 +1127,11 @@ class Plots(object): def hs_powercurve(self, fname1, fname2, title, labels, size=(8.6, 4)): - res1 = MappingsH2HS2() + res1 = MappingsH2HS2(self.config) res1._powercurve_hs2(fname1) wind1 = res1.pwr_hs['windspeed'].values - res2 = MappingsH2HS2() + res2 = MappingsH2HS2(self.config) res2._powercurve_hs2(fname2) wind2 = res2.pwr_hs['windspeed'].values