From c2ac3a9b9c045d55975a2517d85b383a26919bd9 Mon Sep 17 00:00:00 2001 From: sgho <sgho@dtu.dk> Date: Wed, 3 Oct 2018 10:56:30 +0200 Subject: [PATCH 1/5] BUGFIX #67 (-blade_nr- in windIO), also extended to -radius- variable --- wetb/prepost/windIO.py | 69 +++++++++++++++++++++--------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/wetb/prepost/windIO.py b/wetb/prepost/windIO.py index b11abe5e..eb89b67f 100755 --- a/wetb/prepost/windIO.py +++ b/wetb/prepost/windIO.py @@ -28,6 +28,7 @@ import math from time import time import codecs from itertools import chain +import re as re import numpy as np import scipy as sp @@ -1023,17 +1024,18 @@ class LoadResults(ReadHawc2): dscr_list = misc.remove_items(dscr_list, '') sensortype = self.ch_details[ch, 0].split(',')[0] - # is this always valid? - blade_nr = self.ch_details[ch, 2].split('blade ')[1][0] + # Blade number is identified as the first integer in the string + blade_nr = re.search(r'\d+', self.ch_details[ch, 2]).group() + blade_nr = int(blade_nr) # sometimes the units for aero sensors are wrong! units = self.ch_details[ch, 1] # there is no label option # radius what you get -# radius = dscr_list[-1] - # radius what you asked for - tmp = self.ch_details[ch, 0].split('R=') - radius = misc.remove_items(tmp, '')[-1].strip() + # radius = dscr_list[-1] + # radius what you asked for, identified as the last float in the string + s=self.ch_details[ch, 0] + radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1]) # and tag it tag = '%s-%s-%s' % (sensortype, blade_nr, radius) @@ -1041,7 +1043,7 @@ class LoadResults(ReadHawc2): channelinfo = {} channelinfo['sensortype'] = sensortype channelinfo['radius'] = float(radius) - channelinfo['blade_nr'] = int(blade_nr) + channelinfo['blade_nr'] = blade_nr channelinfo['units'] = units channelinfo['chi'] = ch @@ -1087,10 +1089,10 @@ class LoadResults(ReadHawc2): blade_nr = int(items[5]) # radius what you get -# radius = float(items[8].replace(',', '')) - # radius what you asked for - tmp = self.ch_details[ch, 0].split(' ') - radius = float(misc.remove_items(tmp, '')[-1]) + # radius = float(items[8].replace(',', '')) + # radius what you asked for, identified as the last float in the string + s=self.ch_details[ch, 0] + radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1]) items = self.ch_details[ch, 0].split(',') component = items[0][-2:] @@ -1122,17 +1124,16 @@ class LoadResults(ReadHawc2): items = self.ch_details[ch, 2].split(' ') items = misc.remove_items(items, '') - # find blade number - tmp = self.ch_details[ch, 2].split('blade ')[1].strip() - blade_nr = int(tmp.split(' ')[0]) - tmp = self.ch_details[ch, 2].split('radius ')[1].strip() - tmp = tmp.split(',') - + # Blade number is identified as the first integer in the string + blade_nr = re.search(r'\d+', self.ch_details[ch, 2]).group() + blade_nr = int(blade_nr) # radius what you get -# radius = float(tmp[0]) - # radius what you asked for - tmp = self.ch_details[ch, 0].split(' ') - radius = float(misc.remove_items(tmp, '')[-1]) + # tmp = self.ch_details[ch, 2].split('radius ')[1].strip() + # tmp = tmp.split(',') + # radius = float(tmp[0]) + # radius what you asked for, identified as the last float in the string + s=self.ch_details[ch, 0] + radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1]) if len(tmp) > 1: coord = tmp[1].strip() @@ -1218,16 +1219,17 @@ class LoadResults(ReadHawc2): units = self.ch_details[ch, 1].strip() tmp = self.ch_details[ch, 0].split(' ')[1].strip() direction = tmp.replace(',', '') - blade_nr = self.ch_details[ch, 2].split('blade')[1].strip()[:2] coord = self.ch_details[ch, 2].split(',')[1].strip() - blade_nr = blade_nr.strip() + # Blade number is identified as the first integer in the string + blade_nr = re.search(r'\d+', self.ch_details[ch, 2]).group() + blade_nr = int(blade_nr) # radius what you get -# radius = self.ch_details[ch, 2].split('radius')[1].split(',')[0] -# radius = radius.strip() - # radius what you asked for - tmp = self.ch_details[ch, 0].split(' ') - radius = misc.remove_items(tmp, '')[-1].strip() + # radius = self.ch_details[ch, 2].split('radius')[1].split(',')[0] + # radius = radius.strip() + # radius what you asked for, identified as the last float in the string + s=self.ch_details[ch, 0] + radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1]) # and tag it rpl = (direction, blade_nr, radius, coord) @@ -1237,7 +1239,7 @@ class LoadResults(ReadHawc2): channelinfo['coord'] = coord # FIXME: direction is the same as component, right? channelinfo['direction'] = direction - channelinfo['blade_nr'] = int(blade_nr) + channelinfo['blade_nr'] = blade_nr channelinfo['radius'] = float(radius) channelinfo['units'] = units channelinfo['chi'] = ch @@ -1247,18 +1249,17 @@ class LoadResults(ReadHawc2): # 2: Flap angle for blade 3 flap number 1 elif self.ch_details[ch, 0][:7] == 'setbeta': units = self.ch_details[ch, 1].strip() - blade_nr = self.ch_details[ch, 2].split('blade')[1].strip() - blade_nr = blade_nr.split(' ')[0].strip() + # Blade number is identified as the first integer in the string + blade_nr = re.search(r'\d+', self.ch_details[ch, 2]).group() + blade_nr = blade_nr flap_nr = self.ch_details[ch, 2].split(' ')[-1].strip() - blade_nr = blade_nr.strip() - # and tag it tag = 'setbeta-bladenr-%s-flapnr-%s' % (blade_nr, flap_nr) # save all info in the dict channelinfo = {} channelinfo['flap_nr'] = int(flap_nr) - channelinfo['blade_nr'] = int(blade_nr) + channelinfo['blade_nr'] = blade_nr channelinfo['units'] = units channelinfo['chi'] = ch -- GitLab From ca5532b1cf3fab24ad0a27b03614cd49390ac6f9 Mon Sep 17 00:00:00 2001 From: sgho <sgho@dtu.dk> Date: Mon, 8 Oct 2018 10:21:00 +0200 Subject: [PATCH 2/5] Avoid tracking *.c files in wetb --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1e37b338..d3f41332 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ wetb/hawc2/tests/test_files/htcfiles/tmp.htc wetb/hawc2/ascii2bin/tests/test_files/Hawc2ascii_bin.sel wetb/hawc2/ascii2bin/tests/test_files/Hawc2ascii_bin.dat wetb/prepost/tests/data/demo_dlc/remote* +wetb/*/*/*.c /wetb/fatigue_tools/rainflowcounting/compile.py /docs/api -- GitLab From 0c6afe5bb9e4eb62bef98f63c9a987456836e314 Mon Sep 17 00:00:00 2001 From: sgho <sgho@dtu.dk> Date: Mon, 8 Oct 2018 11:05:35 +0200 Subject: [PATCH 3/5] fixed some small issues, added one more aero sensor --- wetb/prepost/windIO.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/wetb/prepost/windIO.py b/wetb/prepost/windIO.py index c596e679..01b569e5 100755 --- a/wetb/prepost/windIO.py +++ b/wetb/prepost/windIO.py @@ -1037,8 +1037,8 @@ class LoadResults(ReadHawc2): # radius what you get # radius = dscr_list[-1] # radius what you asked for, identified as the last float in the string - s=self.ch_details[ch, 0] - radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1]) + s = self.ch_details[ch, 0] + radius = float(re.findall(r"[-+]?\d*\.\d+|\d+", s)[-1]) # and tag it tag = '%s-%s-%s' % (sensortype, blade_nr, radius) @@ -1094,8 +1094,8 @@ class LoadResults(ReadHawc2): # radius what you get # radius = float(items[8].replace(',', '')) # radius what you asked for, identified as the last float in the string - s=self.ch_details[ch, 0] - radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1]) + s = self.ch_details[ch, 0] + radius = float(re.findall(r"[-+]?\d*\.\d+|\d+", s)[-1]) items = self.ch_details[ch, 0].split(',') component = items[0][-2:] @@ -1131,12 +1131,12 @@ class LoadResults(ReadHawc2): blade_nr = re.search(r'\d+', self.ch_details[ch, 2]).group() blade_nr = int(blade_nr) # radius what you get - # tmp = self.ch_details[ch, 2].split('radius ')[1].strip() - # tmp = tmp.split(',') + tmp = self.ch_details[ch, 2].split('radius ')[1].strip() + tmp = tmp.split(',') # radius = float(tmp[0]) # radius what you asked for, identified as the last float in the string - s=self.ch_details[ch, 0] - radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1]) + s = self.ch_details[ch, 0] + radius = float(re.findall(r"[-+]?\d*\.\d+|\d+", s)[-1]) if len(tmp) > 1: coord = tmp[1].strip() @@ -1232,7 +1232,7 @@ class LoadResults(ReadHawc2): # radius = radius.strip() # radius what you asked for, identified as the last float in the string s=self.ch_details[ch, 0] - radius=float(re.findall(r"[-+]?\d*\.\d+|\d+",s)[-1]) + radius=float(re.findall(r"[-+]?\d*\.\d+|\d+", s)[-1]) # and tag it rpl = (direction, blade_nr, radius, coord) @@ -1254,7 +1254,7 @@ class LoadResults(ReadHawc2): units = self.ch_details[ch, 1].strip() # Blade number is identified as the first integer in the string blade_nr = re.search(r'\d+', self.ch_details[ch, 2]).group() - blade_nr = blade_nr + blade_nr = int(blade_nr) flap_nr = self.ch_details[ch, 2].split(' ')[-1].strip() # and tag it @@ -1284,6 +1284,13 @@ class LoadResults(ReadHawc2): tag_nr = int(tag.split('_')[-1]) + 1 tag = base + '_%i' % tag_nr + elif self.ch_details[ch, 0][:6] == 'a_norm': + channelinfo = {} + channelinfo['chi'] = ch + channelinfo['units'] = self.ch_details[ch, 1].strip() + channelinfo['sensortype'] = 'aero' + tag = 'aero-induc_a_norm' + # ----------------------------------------------------------------- # If all this fails, just combine channel name and description else: -- GitLab From 3705db61cbf2636689686e536df137e979762c3e Mon Sep 17 00:00:00 2001 From: sgho <sgho@dtu.dk> Date: Mon, 8 Oct 2018 11:19:41 +0200 Subject: [PATCH 4/5] Update gitignore to avoid some test files geting in --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index d3f41332..33697726 100644 --- a/.gitignore +++ b/.gitignore @@ -19,6 +19,8 @@ wetb/hawc2/ascii2bin/tests/test_files/Hawc2ascii_bin.sel wetb/hawc2/ascii2bin/tests/test_files/Hawc2ascii_bin.dat wetb/prepost/tests/data/demo_dlc/remote* wetb/*/*/*.c +.cache/ +tests/temp.htc /wetb/fatigue_tools/rainflowcounting/compile.py /docs/api -- GitLab From 202d8867612c73f02008064a1690813f2aa112f2 Mon Sep 17 00:00:00 2001 From: David Robert Verelst <dave@dtu.dk> Date: Mon, 8 Oct 2018 19:57:11 +0200 Subject: [PATCH 5/5] fixes, more tests, use actual loc of aero calc point --- .../hawc2io/hawc2bin_chantest_3.ch_df.csv | 295 ++++++++++++++++++ wetb/prepost/tests/test_windIO.py | 51 ++- wetb/prepost/windIO.py | 8 +- 3 files changed, 344 insertions(+), 10 deletions(-) create mode 100644 wetb/hawc2/tests/test_files/hawc2io/hawc2bin_chantest_3.ch_df.csv diff --git a/wetb/hawc2/tests/test_files/hawc2io/hawc2bin_chantest_3.ch_df.csv b/wetb/hawc2/tests/test_files/hawc2io/hawc2bin_chantest_3.ch_df.csv new file mode 100644 index 00000000..a2dd882d --- /dev/null +++ b/wetb/hawc2/tests/test_files/hawc2io/hawc2bin_chantest_3.ch_df.csv @@ -0,0 +1,295 @@ +chi,azimuth,bearing_name,blade_nr,bodyname,component,coord,direction,dll,flap_nr,io,io_nr,output_type,pos,radius,sensortag,sensortype,unique_ch_name,units +0,,,,,,,,,,,,,,,Time,,Time,s +1,,shaft_rot,,,,,,,,,,angle,,,,,bearing-shaft_rot-angle-deg,deg +2,,shaft_rot,,,,,,,,,,angle_speed,,,,,bearing-shaft_rot-angle_speed-rpm,rpm +3,,pitch1,,,,,,,,,,angle,,,,,bearing-pitch1-angle-deg,deg +4,,pitch1,,,,,,,,,,angle_speed,,,,,bearing-pitch1-angle_speed-deg/s,deg/s +5,,pitch2,,,,,,,,,,angle,,,,,bearing-pitch2-angle-deg,deg +6,,pitch2,,,,,,,,,,angle_speed,,,,,bearing-pitch2-angle_speed-deg/s,deg/s +7,,pitch3,,,,,,,,,,angle,,,,,bearing-pitch3-angle-deg,deg +8,,pitch3,,,,,,,,,,angle_speed,,,,,bearing-pitch3-angle_speed-deg/s,deg/s +9,,,,,,,,,,,,,,,Rotor speed,,Omega,rad/s +10,,,,,,,,,,,,,,,Aero rotor torque,,Ae rot. torque,kNm +11,,,,,,,,,,,,,,,Aero rotor power,,Ae rot. power,kW +12,,,,,,,,,,,,,,,Aero rotor thrust,,Ae rot. thrust,kN +13,,,,,,global,Vx,,,,,,"('0.00', '0.00', '-119.00')",,,wsp-global,windspeed-global-Vx-0.00-0.00--119.00,m/s +14,,,,,,global,Vy,,,,,,"('0.00', '0.00', '-119.00')",,,wsp-global,windspeed-global-Vy-0.00-0.00--119.00,m/s +15,,,,,,global,Vz,,,,,,"('0.00', '0.00', '-119.00')",,,wsp-global,windspeed-global-Vz-0.00-0.00--119.00,m/s +16,,,,shaft,x,shaft_nonrotate,,,,,,,node-004,,non rotating shaft tip,momentvec,shaft_nonrotate-shaft-node-004-momentvec-x,kNm +17,,,,shaft,y,shaft_nonrotate,,,,,,,node-004,,non rotating shaft tip,momentvec,shaft_nonrotate-shaft-node-004-momentvec-y,kNm +18,,,,shaft,z,shaft_nonrotate,,,,,,,node-004,,non rotating shaft tip,momentvec,shaft_nonrotate-shaft-node-004-momentvec-z,kNm +19,,,,shaft,x,shaft_nonrotate,,,,,,,node-004,,non rotating shaft tip,forcevec,shaft_nonrotate-shaft-node-004-forcevec-x,kN +20,,,,shaft,y,shaft_nonrotate,,,,,,,node-004,,non rotating shaft tip,forcevec,shaft_nonrotate-shaft-node-004-forcevec-y,kN +21,,,,shaft,z,shaft_nonrotate,,,,,,,node-004,,non rotating shaft tip,forcevec,shaft_nonrotate-shaft-node-004-forcevec-z,kN +22,,,,tower,x,tower,,,,,,,node-001,,tower base,momentvec,tower-tower-node-001-momentvec-x,kNm +23,,,,tower,y,tower,,,,,,,node-001,,tower base,momentvec,tower-tower-node-001-momentvec-y,kNm +24,,,,tower,z,tower,,,,,,,node-001,,tower base,momentvec,tower-tower-node-001-momentvec-z,kNm +25,,,,tower,x,tower,,,,,,,node-020,,tower yaw bearing,momentvec,tower-tower-node-020-momentvec-x,kNm +26,,,,tower,y,tower,,,,,,,node-020,,tower yaw bearing,momentvec,tower-tower-node-020-momentvec-y,kNm +27,,,,tower,z,tower,,,,,,,node-020,,tower yaw bearing,momentvec,tower-tower-node-020-momentvec-z,kNm +28,,,,shaft,x,shaft,,,,,,,node-004,,main bearing,momentvec,shaft-shaft-node-004-momentvec-x,kNm +29,,,,shaft,y,shaft,,,,,,,node-004,,main bearing,momentvec,shaft-shaft-node-004-momentvec-y,kNm +30,,,,shaft,z,shaft,,,,,,,node-004,,main bearing,momentvec,shaft-shaft-node-004-momentvec-z,kNm +31,,,,blade1,x,blade1,,,,,,,node-001,,blade 1 root,momentvec,blade1-blade1-node-001-momentvec-x,kNm +32,,,,blade1,y,blade1,,,,,,,node-001,,blade 1 root,momentvec,blade1-blade1-node-001-momentvec-y,kNm +33,,,,blade1,z,blade1,,,,,,,node-001,,blade 1 root,momentvec,blade1-blade1-node-001-momentvec-z,kNm +34,,,,blade2,x,blade2,,,,,,,node-001,,blade 2 root,momentvec,blade2-blade2-node-001-momentvec-x,kNm +35,,,,blade2,y,blade2,,,,,,,node-001,,blade 2 root,momentvec,blade2-blade2-node-001-momentvec-y,kNm +36,,,,blade2,z,blade2,,,,,,,node-001,,blade 2 root,momentvec,blade2-blade2-node-001-momentvec-z,kNm +37,,,,blade3,x,blade3,,,,,,,node-001,,blade 3 root,momentvec,blade3-blade3-node-001-momentvec-x,kNm +38,,,,blade3,y,blade3,,,,,,,node-001,,blade 3 root,momentvec,blade3-blade3-node-001-momentvec-y,kNm +39,,,,blade3,z,blade3,,,,,,,node-001,,blade 3 root,momentvec,blade3-blade3-node-001-momentvec-z,kNm +40,,,,blade1,x,local,,,,,,,node-003,,,momentvec,local-blade1-node-003-momentvec-x,kNm +41,,,,blade1,y,local,,,,,,,node-003,,,momentvec,local-blade1-node-003-momentvec-y,kNm +42,,,,blade1,z,local,,,,,,,node-003,,,momentvec,local-blade1-node-003-momentvec-z,kNm +43,,,,blade1,x,local,,,,,,,node-004,,,momentvec,local-blade1-node-004-momentvec-x,kNm +44,,,,blade1,y,local,,,,,,,node-004,,,momentvec,local-blade1-node-004-momentvec-y,kNm +45,,,,blade1,z,local,,,,,,,node-004,,,momentvec,local-blade1-node-004-momentvec-z,kNm +46,,,,blade1,x,local,,,,,,,node-005,,,momentvec,local-blade1-node-005-momentvec-x,kNm +47,,,,blade1,y,local,,,,,,,node-005,,,momentvec,local-blade1-node-005-momentvec-y,kNm +48,,,,blade1,z,local,,,,,,,node-005,,,momentvec,local-blade1-node-005-momentvec-z,kNm +49,,,,blade1,x,local,,,,,,,node-006,,,momentvec,local-blade1-node-006-momentvec-x,kNm +50,,,,blade1,y,local,,,,,,,node-006,,,momentvec,local-blade1-node-006-momentvec-y,kNm +51,,,,blade1,z,local,,,,,,,node-006,,,momentvec,local-blade1-node-006-momentvec-z,kNm +52,,,,blade1,x,local,,,,,,,node-007,,,momentvec,local-blade1-node-007-momentvec-x,kNm +53,,,,blade1,y,local,,,,,,,node-007,,,momentvec,local-blade1-node-007-momentvec-y,kNm +54,,,,blade1,z,local,,,,,,,node-007,,,momentvec,local-blade1-node-007-momentvec-z,kNm +55,,,,blade1,x,local,,,,,,,node-008,,,momentvec,local-blade1-node-008-momentvec-x,kNm +56,,,,blade1,y,local,,,,,,,node-008,,,momentvec,local-blade1-node-008-momentvec-y,kNm +57,,,,blade1,z,local,,,,,,,node-008,,,momentvec,local-blade1-node-008-momentvec-z,kNm +58,,,,blade1,x,local,,,,,,,node-009,,,momentvec,local-blade1-node-009-momentvec-x,kNm +59,,,,blade1,y,local,,,,,,,node-009,,,momentvec,local-blade1-node-009-momentvec-y,kNm +60,,,,blade1,z,local,,,,,,,node-009,,,momentvec,local-blade1-node-009-momentvec-z,kNm +61,,,,blade1,x,local,,,,,,,node-010,,,momentvec,local-blade1-node-010-momentvec-x,kNm +62,,,,blade1,y,local,,,,,,,node-010,,,momentvec,local-blade1-node-010-momentvec-y,kNm +63,,,,blade1,z,local,,,,,,,node-010,,,momentvec,local-blade1-node-010-momentvec-z,kNm +64,,,,blade1,x,local,,,,,,,node-011,,,momentvec,local-blade1-node-011-momentvec-x,kNm +65,,,,blade1,y,local,,,,,,,node-011,,,momentvec,local-blade1-node-011-momentvec-y,kNm +66,,,,blade1,z,local,,,,,,,node-011,,,momentvec,local-blade1-node-011-momentvec-z,kNm +67,,,,blade1,x,local,,,,,,,node-012,,,momentvec,local-blade1-node-012-momentvec-x,kNm +68,,,,blade1,y,local,,,,,,,node-012,,,momentvec,local-blade1-node-012-momentvec-y,kNm +69,,,,blade1,z,local,,,,,,,node-012,,,momentvec,local-blade1-node-012-momentvec-z,kNm +70,,,,blade1,x,local,,,,,,,node-013,,,momentvec,local-blade1-node-013-momentvec-x,kNm +71,,,,blade1,y,local,,,,,,,node-013,,,momentvec,local-blade1-node-013-momentvec-y,kNm +72,,,,blade1,z,local,,,,,,,node-013,,,momentvec,local-blade1-node-013-momentvec-z,kNm +73,,,,blade1,x,local,,,,,,,node-014,,,momentvec,local-blade1-node-014-momentvec-x,kNm +74,,,,blade1,y,local,,,,,,,node-014,,,momentvec,local-blade1-node-014-momentvec-y,kNm +75,,,,blade1,z,local,,,,,,,node-014,,,momentvec,local-blade1-node-014-momentvec-z,kNm +76,,,,blade1,x,local,,,,,,,node-015,,,momentvec,local-blade1-node-015-momentvec-x,kNm +77,,,,blade1,y,local,,,,,,,node-015,,,momentvec,local-blade1-node-015-momentvec-y,kNm +78,,,,blade1,z,local,,,,,,,node-015,,,momentvec,local-blade1-node-015-momentvec-z,kNm +79,,,,blade1,x,local,,,,,,,node-016,,,momentvec,local-blade1-node-016-momentvec-x,kNm +80,,,,blade1,y,local,,,,,,,node-016,,,momentvec,local-blade1-node-016-momentvec-y,kNm +81,,,,blade1,z,local,,,,,,,node-016,,,momentvec,local-blade1-node-016-momentvec-z,kNm +82,,,,blade1,x,local,,,,,,,node-017,,,momentvec,local-blade1-node-017-momentvec-x,kNm +83,,,,blade1,y,local,,,,,,,node-017,,,momentvec,local-blade1-node-017-momentvec-y,kNm +84,,,,blade1,z,local,,,,,,,node-017,,,momentvec,local-blade1-node-017-momentvec-z,kNm +85,,,,blade1,x,local,,,,,,,node-018,,,momentvec,local-blade1-node-018-momentvec-x,kNm +86,,,,blade1,y,local,,,,,,,node-018,,,momentvec,local-blade1-node-018-momentvec-y,kNm +87,,,,blade1,z,local,,,,,,,node-018,,,momentvec,local-blade1-node-018-momentvec-z,kNm +88,,,,blade1,x,local,,,,,,,node-019,,,momentvec,local-blade1-node-019-momentvec-x,kNm +89,,,,blade1,y,local,,,,,,,node-019,,,momentvec,local-blade1-node-019-momentvec-y,kNm +90,,,,blade1,z,local,,,,,,,node-019,,,momentvec,local-blade1-node-019-momentvec-z,kNm +91,,,,blade1,x,local,,,,,,,node-020,,,momentvec,local-blade1-node-020-momentvec-x,kNm +92,,,,blade1,y,local,,,,,,,node-020,,,momentvec,local-blade1-node-020-momentvec-y,kNm +93,,,,blade1,z,local,,,,,,,node-020,,,momentvec,local-blade1-node-020-momentvec-z,kNm +94,,,,blade1,x,local,,,,,,,node-021,,,momentvec,local-blade1-node-021-momentvec-x,kNm +95,,,,blade1,y,local,,,,,,,node-021,,,momentvec,local-blade1-node-021-momentvec-y,kNm +96,,,,blade1,z,local,,,,,,,node-021,,,momentvec,local-blade1-node-021-momentvec-z,kNm +97,,,,blade1,x,local,,,,,,,node-022,,,momentvec,local-blade1-node-022-momentvec-x,kNm +98,,,,blade1,y,local,,,,,,,node-022,,,momentvec,local-blade1-node-022-momentvec-y,kNm +99,,,,blade1,z,local,,,,,,,node-022,,,momentvec,local-blade1-node-022-momentvec-z,kNm +100,,,,blade1,x,local,,,,,,,node-023,,,momentvec,local-blade1-node-023-momentvec-x,kNm +101,,,,blade1,y,local,,,,,,,node-023,,,momentvec,local-blade1-node-023-momentvec-y,kNm +102,,,,blade1,z,local,,,,,,,node-023,,,momentvec,local-blade1-node-023-momentvec-z,kNm +103,,,,blade1,x,local,,,,,,,node-024,,,momentvec,local-blade1-node-024-momentvec-x,kNm +104,,,,blade1,y,local,,,,,,,node-024,,,momentvec,local-blade1-node-024-momentvec-y,kNm +105,,,,blade1,z,local,,,,,,,node-024,,,momentvec,local-blade1-node-024-momentvec-z,kNm +106,,,,blade1,x,local,,,,,,,node-025,,,momentvec,local-blade1-node-025-momentvec-x,kNm +107,,,,blade1,y,local,,,,,,,node-025,,,momentvec,local-blade1-node-025-momentvec-y,kNm +108,,,,blade1,z,local,,,,,,,node-025,,,momentvec,local-blade1-node-025-momentvec-z,kNm +109,,,,blade1,x,local,,,,,,,node-026,,,momentvec,local-blade1-node-026-momentvec-x,kNm +110,,,,blade1,y,local,,,,,,,node-026,,,momentvec,local-blade1-node-026-momentvec-y,kNm +111,,,,blade1,z,local,,,,,,,node-026,,,momentvec,local-blade1-node-026-momentvec-z,kNm +112,,,,blade1,x,local,,,,,,,node-027,,,momentvec,local-blade1-node-027-momentvec-x,kNm +113,,,,blade1,y,local,,,,,,,node-027,,,momentvec,local-blade1-node-027-momentvec-y,kNm +114,,,,blade1,z,local,,,,,,,node-027,,,momentvec,local-blade1-node-027-momentvec-z,kNm +115,,,,tower,x,global,,,,,,,elem-019-zrel-1.00,,tower top fa displ,State pos,global-tower-elem-019-zrel-1.00-State pos-x,m +116,,,,tower,y,global,,,,,,,elem-019-zrel-1.00,,tower top ss displ,State pos,global-tower-elem-019-zrel-1.00-State pos-y,m +117,,,,tower,x,global,,,,,,,elem-019-zrel-1.00,,tower top fa acc,State acc,global-tower-elem-019-zrel-1.00-State acc-x,m/s^2 +118,,,,tower,y,global,,,,,,,elem-019-zrel-1.00,,tower top ss acc,State acc,global-tower-elem-019-zrel-1.00-State acc-y,m/s^2 +119,,,,blade1,x,global,,,,,,,elem-026-zrel-1.00,,gl blade 1 tip pos,State pos,global-blade1-elem-026-zrel-1.00-State pos-x,m +120,,,,blade1,y,global,,,,,,,elem-026-zrel-1.00,,gl blade 1 tip pos,State pos,global-blade1-elem-026-zrel-1.00-State pos-y,m +121,,,,blade1,z,global,,,,,,,elem-026-zrel-1.00,,gl blade 1 tip pos,State pos,global-blade1-elem-026-zrel-1.00-State pos-z,m +122,,,,blade2,x,global,,,,,,,elem-026-zrel-1.00,,gl blade 2 tip pos,State pos,global-blade2-elem-026-zrel-1.00-State pos-x,m +123,,,,blade2,y,global,,,,,,,elem-026-zrel-1.00,,gl blade 2 tip pos,State pos,global-blade2-elem-026-zrel-1.00-State pos-y,m +124,,,,blade2,z,global,,,,,,,elem-026-zrel-1.00,,gl blade 2 tip pos,State pos,global-blade2-elem-026-zrel-1.00-State pos-z,m +125,,,,blade3,x,global,,,,,,,elem-026-zrel-1.00,,gl blade 3 tip pos,State pos,global-blade3-elem-026-zrel-1.00-State pos-x,m +126,,,,blade3,y,global,,,,,,,elem-026-zrel-1.00,,gl blade 3 tip pos,State pos,global-blade3-elem-026-zrel-1.00-State pos-y,m +127,,,,blade3,z,global,,,,,,,elem-026-zrel-1.00,,gl blade 3 tip pos,State pos,global-blade3-elem-026-zrel-1.00-State pos-z,m +128,,,,blade1,x,blade1,,,,,,,elem-026-zrel-1.00,,blade 1 tip pos,State pos,blade1-blade1-elem-026-zrel-1.00-State pos-x,m +129,,,,blade1,y,blade1,,,,,,,elem-026-zrel-1.00,,blade 1 tip pos,State pos,blade1-blade1-elem-026-zrel-1.00-State pos-y,m +130,,,,blade1,z,blade1,,,,,,,elem-026-zrel-1.00,,blade 1 tip pos,State pos,blade1-blade1-elem-026-zrel-1.00-State pos-z,m +131,,,,blade2,x,blade2,,,,,,,elem-026-zrel-1.00,,blade 2 tip pos,State pos,blade2-blade2-elem-026-zrel-1.00-State pos-x,m +132,,,,blade2,y,blade2,,,,,,,elem-026-zrel-1.00,,blade 2 tip pos,State pos,blade2-blade2-elem-026-zrel-1.00-State pos-y,m +133,,,,blade2,z,blade2,,,,,,,elem-026-zrel-1.00,,blade 2 tip pos,State pos,blade2-blade2-elem-026-zrel-1.00-State pos-z,m +134,,,,blade3,x,blade3,,,,,,,elem-026-zrel-1.00,,blade 3 tip pos,State pos,blade3-blade3-elem-026-zrel-1.00-State pos-x,m +135,,,,blade3,y,blade3,,,,,,,elem-026-zrel-1.00,,blade 3 tip pos,State pos,blade3-blade3-elem-026-zrel-1.00-State pos-y,m +136,,,,blade3,z,blade3,,,,,,,elem-026-zrel-1.00,,blade 3 tip pos,State pos,blade3-blade3-elem-026-zrel-1.00-State pos-z,m +137,,,,tower,x,global,,,,,,,elem-005-zrel-0.00,,,State pos,global-tower-elem-005-zrel-0.00-State pos-x,m +138,,,,tower,y,global,,,,,,,elem-005-zrel-0.00,,,State pos,global-tower-elem-005-zrel-0.00-State pos-y,m +139,,,,tower,z,global,,,,,,,elem-005-zrel-0.00,,,State pos,global-tower-elem-005-zrel-0.00-State pos-z,m +140,,,1,,,,,,,,,,,45.25,,Tors_e,Tors_e-1-45.25,deg +141,,,1,,,,,,,,,,,58.04,,Tors_e,Tors_e-1-58.04,deg +142,,,1,,,,,,,,,,,70.32,,Tors_e,Tors_e-1-70.32,deg +143,,,1,,,,,,,,,,,81.26,,Tors_e,Tors_e-1-81.26,deg +144,,,1,,,,,,,,,,,83.71,,Tors_e,Tors_e-1-83.71,deg +145,,,1,,,,,,,,,,,88.17,,Tors_e,Tors_e-1-88.17,deg +146,,,1,,,,,,,,,,,92.01,,Tors_e,Tors_e-1-92.01,deg +147,,,1,,,,,,,,,,,96.45,,Tors_e,Tors_e-1-96.45,deg +148,,,1,,,,,,,,,,,98.47,,Tors_e,Tors_e-1-98.47,deg +149,,,1,,,,,,,,,,,100.11,,Tors_e,Tors_e-1-100.11,deg +150,,,1,,,global coo.,Vx,,,,,,,73.21,,wsp-blade,wsp-blade-Vx-1-73.21-global coo.,m/s +151,,,1,,,global coo.,Vy,,,,,,,73.21,,wsp-blade,wsp-blade-Vy-1-73.21-global coo.,m/s +152,,,1,,,global coo.,Vz,,,,,,,73.21,,wsp-blade,wsp-blade-Vz-1-73.21-global coo.,m/s +153,,,1,,,,,,,,,,,73.21,,Alfa,Alfa-1-73.21,deg +154,,,2,,,,,,,,,,,73.21,,Alfa,Alfa-2-73.21,deg +155,,,3,,,,,,,,,,,73.21,,Alfa,Alfa-3-73.21,deg +156,,,1,,,,,,,,,,,73.21,,Cl,Cl-1-73.21,deg +157,,,2,,,,,,,,,,,73.21,,Cl,Cl-2-73.21,deg +158,,,3,,,,,,,,,,,73.21,,Cl,Cl-3-73.21,deg +159,,,1,,,,,,,,,,,73.21,,Cd,Cd-1-73.21,deg +160,,,2,,,,,,,,,,,73.21,,Cd,Cd-2-73.21,deg +161,,,3,,,,,,,,,,,73.21,,Cd,Cd-3-73.21,deg +162,,,,,,,,1,,inpvec,1,,,,generator torque reference [nm],dll-io,DLL-1-inpvec-1,- +163,,,,,,,,1,,inpvec,2,,,,pitch angle reference of blade 1 [rad],dll-io,DLL-1-inpvec-2,- +164,,,,,,,,1,,inpvec,3,,,,pitch angle reference of blade 2 [rad],dll-io,DLL-1-inpvec-3,- +165,,,,,,,,1,,inpvec,4,,,,pitch angle reference of blade 3 [rad],dll-io,DLL-1-inpvec-4,- +166,,,,,,,,1,,inpvec,14,,,,torque limit switch based on pitch [-],dll-io,DLL-1-inpvec-14,- +167,,,,,,,,2,,inpvec,1,,,,mgen lss [nm],dll-io,DLL-2-inpvec-1,- +168,,,,,,,,2,,inpvec,2,,,,pelec w,dll-io,DLL-2-inpvec-2,- +169,,,,,,,,2,,inpvec,3,,,,mframe,dll-io,DLL-2-inpvec-3,- +170,,,,,,,,2,,inpvec,4,,,,mgen hss,dll-io,DLL-2-inpvec-4,- +171,,,,,,,,2,,inpvec,5,,,,generator pmech kw,dll-io,DLL-2-inpvec-5,- +172,,,,,,,,2,,inpvec,6,,,,filtered gen speed,dll-io,DLL-2-inpvec-6,- +173,,,,,,,,2,,inpvec,7,,,,resulting eff,dll-io,DLL-2-inpvec-7,- +174,,,,,,,,2,,inpvec,8,,,,grid flag,dll-io,DLL-2-inpvec-8,- +175,,,,,,,,5,,inpvec,1,,,,bltip tow min d [m],dll-io,DLL-5-inpvec-1,- +176,,,1,,,global coo.,Vx,,,,,,,64.3,,wsp-blade,wsp-blade-Vx-1-64.3-global coo.,m/s +177,,,1,,,global coo.,Vy,,,,,,,64.3,,wsp-blade,wsp-blade-Vy-1-64.3-global coo.,m/s +178,,,1,,,global coo.,Vz,,,,,,,64.3,,wsp-blade,wsp-blade-Vz-1-64.3-global coo.,m/s +179,,,1,,Fx,RP coo.,,,,,,,,0.0,,intfrc,aero-RP coo.-blade-1-intfrc-Fx-r-0.0,kN +180,,,1,,Fy,RP coo.,,,,,,,,0.0,,intfrc,aero-RP coo.-blade-1-intfrc-Fy-r-0.0,kN +181,,,1,,Mx,RP coo.,,,,,,,,0.0,,intmom,aero-RP coo.-blade-1-intmom-Mx-r-0.0,kNm +182,,,1,,My,RP coo.,,,,,,,,0.0,,intmom,aero-RP coo.-blade-1-intmom-My-r-0.0,kNm +183,,,1,,Fy,aero,,,,,,,,24.11,,secfrc,aero-aero-blade-1-secfrc-Fy-r-24.1,kN/m +184,,,1,,,,,,,,,,,81.26,,Alfa,Alfa-1-81.26,deg +185,,,1,,,,,,,,,,,67.34,,Alfa,Alfa-1-67.34,deg +186,,,1,,,,,,,,,,,32.77,,Alfa,Alfa-1-32.77,deg +187,,,1,,,,,,,,,,,24.11,,Alfa,Alfa-1-24.11,deg +188,,,1,,,,,,,,,,,81.26,,Cl,Cl-1-81.26,deg +189,,,1,,,,,,,,,,,81.26,,Cd,Cd-1-81.26,deg +190,,,1,,,,,,,,,,,67.34,,Cl,Cl-1-67.34,deg +191,,,1,,,,,,,,,,,67.34,,Cd,Cd-1-67.34,deg +192,,,1,,,,,,,,,,,32.77,,Cl,Cl-1-32.77,deg +193,,,1,,,,,,,,,,,32.77,,Cd,Cd-1-32.77,deg +194,,,1,,,,,,,,,,,24.11,,Cl,Cl-1-24.11,deg +195,,,1,,,,,,,,,,,24.11,,Cd,Cd-1-24.11,deg +196,,,1,,Fx,aero,,,,,,,,88.17,,secfrc,aero-aero-blade-1-secfrc-Fx-r-88.2,kN/m +197,,,1,,Fy,aero,,,,,,,,88.17,,secfrc,aero-aero-blade-1-secfrc-Fy-r-88.2,kN/m +198,,,1,,Fx,aero,,,,,,,,64.3,,secfrc,aero-aero-blade-1-secfrc-Fx-r-64.3,kN/m +199,,,1,,Fy,aero,,,,,,,,64.3,,secfrc,aero-aero-blade-1-secfrc-Fy-r-64.3,kN/m +200,,,1,,Fx,aero,,,,,,,,42.07,,secfrc,aero-aero-blade-1-secfrc-Fx-r-42.1,kN/m +201,,,1,,Fy,aero,,,,,,,,42.07,,secfrc,aero-aero-blade-1-secfrc-Fy-r-42.1,kN/m +202,,,1,,Fx,aero,,,,,,,,29.79,,secfrc,aero-aero-blade-1-secfrc-Fx-r-29.8,kN/m +203,,,1,,Fy,aero,,,,,,,,29.79,,secfrc,aero-aero-blade-1-secfrc-Fy-r-29.8,kN/m +204,,,1,,Vx,RP. coo.,,,,,,,,88.17,,induction,induc-RP. coo.-blade-1-Vx-r-88.2,m/s +205,,,1,,Vy,RP. coo.,,,,,,,,88.17,,induction,induc-RP. coo.-blade-1-Vy-r-88.2,m/s +206,,,1,,Vx,RP. coo.,,,,,,,,64.3,,induction,induc-RP. coo.-blade-1-Vx-r-64.3,m/s +207,,,1,,Vy,RP. coo.,,,,,,,,64.3,,induction,induc-RP. coo.-blade-1-Vy-r-64.3,m/s +208,,,1,,Vx,RP. coo.,,,,,,,,42.07,,induction,induc-RP. coo.-blade-1-Vx-r-42.1,m/s +209,,,1,,Vy,RP. coo.,,,,,,,,42.07,,induction,induc-RP. coo.-blade-1-Vy-r-42.1,m/s +210,,,1,,Vx,RP. coo.,,,,,,,,29.79,,induction,induc-RP. coo.-blade-1-Vx-r-29.8,m/s +211,,,1,,Vy,RP. coo.,,,,,,,,29.79,,induction,induc-RP. coo.-blade-1-Vy-r-29.8,m/s +212,,,1,,,RP coo.,Vy,,,,,,,88.17,,wsp-blade,wsp-blade-Vy-1-88.17-RP coo.,m/s +213,,,1,,,RP coo.,Vy,,,,,,,64.3,,wsp-blade,wsp-blade-Vy-1-64.3-RP coo.,m/s +214,,,1,,,RP coo.,Vy,,,,,,,42.07,,wsp-blade,wsp-blade-Vy-1-42.07-RP coo.,m/s +215,,,1,,,RP coo.,Vy,,,,,,,29.79,,wsp-blade,wsp-blade-Vy-1-29.79-RP coo.,m/s +216,,,1,,,RP coo.,Vy,,,,,,,0.92,,wsp-blade,wsp-blade-Vy-1-0.92-RP coo.,m/s +217,,,1,,,RP coo.,Vy,,,,,,,0.1,,wsp-blade,wsp-blade-Vy-1-0.1-RP coo.,m/s +218,,,1,,x,global coo.,,,,,,,,88.17,,pos,aero-global coo.-blade-1-pos-x-r-88.2,m +219,,,1,,y,global coo.,,,,,,,,88.17,,pos,aero-global coo.-blade-1-pos-y-r-88.2,m +220,,,1,,z,global coo.,,,,,,,,88.17,,pos,aero-global coo.-blade-1-pos-z-r-88.2,m +221,,,1,,x,global coo.,,,,,,,,0.1,,pos,aero-global coo.-blade-1-pos-x-r-0.1,m +222,,,1,,y,global coo.,,,,,,,,0.1,,pos,aero-global coo.-blade-1-pos-y-r-0.1,m +223,,,1,,z,global coo.,,,,,,,,0.1,,pos,aero-global coo.-blade-1-pos-z-r-0.1,m +224,,,1,,,,,,,,,,,54.86,,Lift,Lift-1-54.86,kN/m +225,,,1,,,,,,,,,,,35.81,,Lift,Lift-1-35.81,kN/m +226,,,1,,x,RP coo.,,,,,,,,64.3,,pos,aero-RP coo.-blade-1-pos-x-r-64.3,m +227,,,1,,y,RP coo.,,,,,,,,64.3,,pos,aero-RP coo.-blade-1-pos-y-r-64.3,m +228,,,1,,z,RP coo.,,,,,,,,64.3,,pos,aero-RP coo.-blade-1-pos-z-r-64.3,m +229,,,2,,x,RP coo.,,,,,,,,64.3,,pos,aero-RP coo.-blade-2-pos-x-r-64.3,m +230,,,2,,y,RP coo.,,,,,,,,64.3,,pos,aero-RP coo.-blade-2-pos-y-r-64.3,m +231,,,2,,z,RP coo.,,,,,,,,64.3,,pos,aero-RP coo.-blade-2-pos-z-r-64.3,m +232,,,3,,x,RP coo.,,,,,,,,64.3,,pos,aero-RP coo.-blade-3-pos-x-r-64.3,m +233,,,3,,y,RP coo.,,,,,,,,64.3,,pos,aero-RP coo.-blade-3-pos-y-r-64.3,m +234,,,3,,z,RP coo.,,,,,,,,64.3,,pos,aero-RP coo.-blade-3-pos-z-r-64.3,m +235,,,1,,Vx,RP coo.,,,,,,,,64.3,,vel,aero-RP coo.-blade-1-vel-Vx-r-64.3,m/s +236,,,1,,Vy,RP coo.,,,,,,,,64.3,,vel,aero-RP coo.-blade-1-vel-Vy-r-64.3,m/s +237,,,1,,Vz,RP coo.,,,,,,,,64.3,,vel,aero-RP coo.-blade-1-vel-Vz-r-64.3,m/s +238,,,1,,x,global coo.,,,,,,,,64.3,,pos,aero-global coo.-blade-1-pos-x-r-64.3,m +239,,,1,,y,global coo.,,,,,,,,64.3,,pos,aero-global coo.-blade-1-pos-y-r-64.3,m +240,,,1,,z,global coo.,,,,,,,,64.3,,pos,aero-global coo.-blade-1-pos-z-r-64.3,m +241,,,1,,Vx,global coo.,,,,,,,,64.3,,vel,aero-global coo.-blade-1-vel-Vx-r-64.3,m/s +242,,,1,,Vy,global coo.,,,,,,,,64.3,,vel,aero-global coo.-blade-1-vel-Vy-r-64.3,m/s +243,,,1,,Vz,global coo.,,,,,,,,64.3,,vel,aero-global coo.-blade-1-vel-Vz-r-64.3,m/s +244,,,1,,tx,Bl.co,,,,,,,,64.3,,rot,aero-Bl.co-blade-1-rot-tx-r-64.3,deg +245,,,1,,ty,Bl.co,,,,,,,,64.3,,rot,aero-Bl.co-blade-1-rot-ty-r-64.3,deg +246,,,1,,tz,Bl.co,,,,,,,,64.3,,rot,aero-Bl.co-blade-1-rot-tz-r-64.3,deg +247,,,,,,global,Vx,,,,,,"('0.00', '0.00', '-90.00')",,tower top,wsp-global,windspeed-global-Vx-0.00-0.00--90.00,m/s +248,,,,,,global,Vy,,,,,,"('0.00', '0.00', '-90.00')",,tower top,wsp-global,windspeed-global-Vy-0.00-0.00--90.00,m/s +249,,,,,,global,Vz,,,,,,"('0.00', '0.00', '-90.00')",,tower top,wsp-global,windspeed-global-Vz-0.00-0.00--90.00,m/s +250,,,,,,global,Vx,,,,,,"('44.54', '0.00', '-134.54')",,1 radius at 45 deg,wsp-global,windspeed-global-Vx-44.54-0.00--134.54,m/s +251,,,,,,global,Vy,,,,,,"('44.54', '0.00', '-134.54')",,1 radius at 45 deg,wsp-global,windspeed-global-Vy-44.54-0.00--134.54,m/s +252,,,,,,global,Vz,,,,,,"('44.54', '0.00', '-134.54')",,1 radius at 45 deg,wsp-global,windspeed-global-Vz-44.54-0.00--134.54,m/s +253,,,,,,global,Vx,,,,,,"('22.27', '0.00', '-112.27')",,0.5 radius at 45 deg,wsp-global,windspeed-global-Vx-22.27-0.00--112.27,m/s +254,,,,,,global,Vy,,,,,,"('22.27', '0.00', '-112.27')",,0.5 radius at 45 deg,wsp-global,windspeed-global-Vy-22.27-0.00--112.27,m/s +255,,,,,,global,Vz,,,,,,"('22.27', '0.00', '-112.27')",,0.5 radius at 45 deg,wsp-global,windspeed-global-Vz-22.27-0.00--112.27,m/s +256,0.0,,,,,,,,,,,,,44.9,,CT,CT-azi-0.00-r-44.90,- +257,22.5,,,,,,,,,,,,,44.9,,CT,CT-azi-22.50-r-44.90,- +258,45.0,,,,,,,,,,,,,44.9,,CT,CT-azi-45.00-r-44.90,- +259,90.0,,,,,,,,,,,,,44.9,,CT,CT-azi-90.00-r-44.90,- +260,0.0,,,,,,,,,,,,,44.9,,CQ,CQ-azi-0.00-r-44.90,- +261,22.5,,,,,,,,,,,,,44.9,,CQ,CQ-azi-22.50-r-44.90,- +262,45.0,,,,,,,,,,,,,44.9,,CQ,CQ-azi-45.00-r-44.90,- +263,90.0,,,,,,,,,,,,,44.9,,CQ,CQ-azi-90.00-r-44.90,- +264,0.0,,,,,,,,,,,,,44.9,,a_grid,a_grid-azi-0.00-r-44.90,- +265,22.5,,,,,,,,,,,,,44.9,,a_grid,a_grid-azi-22.50-r-44.90,- +266,45.0,,,,,,,,,,,,,44.9,,a_grid,a_grid-azi-45.00-r-44.90,- +267,90.0,,,,,,,,,,,,,44.9,,a_grid,a_grid-azi-90.00-r-44.90,- +268,0.0,,,,,,,,,,,,,44.9,,am_grid,am_grid-azi-0.00-r-44.90,- +269,22.5,,,,,,,,,,,,,44.9,,am_grid,am_grid-azi-22.50-r-44.90,- +270,45.0,,,,,,,,,,,,,44.9,,am_grid,am_grid-azi-45.00-r-44.90,- +271,90.0,,,,,,,,,,,,,44.9,,am_grid,am_grid-azi-90.00-r-44.90,- +272,0.0,,,,,,,,,,,,,24.32,,CT,CT-azi-0.00-r-24.32,- +273,22.5,,,,,,,,,,,,,24.32,,CT,CT-azi-22.50-r-24.32,- +274,45.0,,,,,,,,,,,,,24.32,,CT,CT-azi-45.00-r-24.32,- +275,90.0,,,,,,,,,,,,,24.32,,CT,CT-azi-90.00-r-24.32,- +276,0.0,,,,,,,,,,,,,24.32,,CQ,CQ-azi-0.00-r-24.32,- +277,22.5,,,,,,,,,,,,,24.32,,CQ,CQ-azi-22.50-r-24.32,- +278,45.0,,,,,,,,,,,,,24.32,,CQ,CQ-azi-45.00-r-24.32,- +279,90.0,,,,,,,,,,,,,24.32,,CQ,CQ-azi-90.00-r-24.32,- +280,0.0,,,,,,,,,,,,,24.32,,a_grid,a_grid-azi-0.00-r-24.32,- +281,22.5,,,,,,,,,,,,,24.32,,a_grid,a_grid-azi-22.50-r-24.32,- +282,45.0,,,,,,,,,,,,,24.32,,a_grid,a_grid-azi-45.00-r-24.32,- +283,90.0,,,,,,,,,,,,,24.32,,a_grid,a_grid-azi-90.00-r-24.32,- +284,0.0,,,,,,,,,,,,,24.32,,am_grid,am_grid-azi-0.00-r-24.32,- +285,22.5,,,,,,,,,,,,,24.32,,am_grid,am_grid-azi-22.50-r-24.32,- +286,45.0,,,,,,,,,,,,,24.32,,am_grid,am_grid-azi-45.00-r-24.32,- +287,90.0,,,,,,,,,,,,,24.32,,am_grid,am_grid-azi-90.00-r-24.32,- +288,,,1,,,RP coo.,Vy,,,,,,,24.11,,wsp-blade,wsp-blade-Vy-1-24.11-RP coo.,m/s +289,,,,,,,,,,,,,,,,aero,aero-induc_a_norm,m/s +290,,,1,,tz,RP.co,,,,,,,,90.17,,rot,aero-RP.co-blade-1-rot-tz-r-90.2,deg +291,,,2,,tz,RP.co,,,,,,,,90.17,,rot,aero-RP.co-blade-2-rot-tz-r-90.2,deg +292,,,1,,tz,Bl.co,,,,,,,,90.17,,rot,aero-Bl.co-blade-1-rot-tz-r-90.2,deg +293,,,2,,tz,Bl.co,,,,,,,,90.17,,rot,aero-Bl.co-blade-2-rot-tz-r-90.2,deg diff --git a/wetb/prepost/tests/test_windIO.py b/wetb/prepost/tests/test_windIO.py index afb9c738..5c2a9bec 100644 --- a/wetb/prepost/tests/test_windIO.py +++ b/wetb/prepost/tests/test_windIO.py @@ -16,6 +16,7 @@ import os import tempfile import numpy as np +import pandas as pd from wetb.prepost import windIO @@ -207,7 +208,7 @@ class TestsLoadResults(unittest.TestCase): exp = [[38, 'global-blade2-elem-019-zrel-1.00-State pos-z', 'm'], [200, 'blade2-blade2-node-017-momentvec-z', 'kNm'], [296, 'blade1-blade1-node-008-forcevec-z', 'kN'], - [415, 'Cl-1-55.7', 'deg'], + [415, 'Cl-1-54.82', 'deg'], [421, 'qwerty-is-azerty', 'is'] ] for k in exp: @@ -229,11 +230,49 @@ class TestsLoadResults(unittest.TestCase): res = windIO.LoadResults(self.respath, self.f3_chant, readdata=False) self.assertFalse(hasattr(res, 'sig')) np.testing.assert_array_equal(res.ch_df.index.values, np.arange(0,294)) - df = res.ch_df - self.assertEqual(8, len(df[df['sensortype']=='CT'])) - self.assertEqual(8, len(df[df['sensortype']=='CQ'])) - self.assertEqual(8, len(df[df['sensortype']=='a_grid'])) - self.assertEqual(84, len(df[df['blade_nr']==1])) + df1 = res.ch_df + self.assertEqual(8, len(df1[df1['sensortype']=='CT'])) + self.assertEqual(8, len(df1[df1['sensortype']=='CQ'])) + self.assertEqual(8, len(df1[df1['sensortype']=='a_grid'])) + self.assertEqual(84, len(df1[df1['blade_nr']==1])) + + fname = os.path.join(self.respath, self.f3_chant.replace('.sel', + '.ch_df.csv')) + # FIXME: read_csv for older pandas versions fails on reading the + # mixed str/tuple column. Ignore the pos column for now + colref = ['azimuth', 'bearing_name', 'blade_nr', 'bodyname', + 'component', 'coord', 'direction', 'dll', 'flap_nr', 'io', + 'io_nr', 'output_type', 'radius', 'sensortag', + 'sensortype', 'unique_ch_name', 'units'] # 'pos', + # keep_default_na: leave empyt strings as empty strings and not nan's + # you can't have nice things: usecols in combination with index_col + # doesn't work + df2 = pd.read_csv(fname, usecols=['chi']+colref, keep_default_na=False) + df2.index = df2['chi'] + df2.drop(labels='chi', inplace=True, axis=1) + + # for the comparison we need to have the columns with empty/number + # mixed data types in a consistent data type + for col in ['azimuth', 'radius', 'blade_nr', 'io_nr', 'flap_nr', 'dll']: + df1.loc[df1[col]=='', col] = np.nan + df1[col] = df1[col].astype(np.float32) + df2.loc[df2[col]=='', col] = np.nan + df2[col] = df2[col].astype(np.float32) + + # print(df1.pos[14], df2.pos[14]) + # the pos columns contains also tuples, read from csv doesn't get that + # df1['pos'] = df1['pos'].astype(np.str) + # df1['pos'] = df1['pos'].str.replace("'", "") + # print(df1.pos[14], df2.pos[14]) + + # sort columns in the same way so we can assert the df are equal + # df1 = df1[colref].copy() + # df2 = df2[colref].copy() + # FIXME: when pandas is more recent we can use assert_frame_equal + # pd.testing.assert_frame_equal(df1, df2) + # ...but there is no testing.assert_frame_equal in pandas 0.14 + for col in colref: + np.testing.assert_array_equal(df1[col].values, df2[col].values) class TestUserWind(unittest.TestCase): diff --git a/wetb/prepost/windIO.py b/wetb/prepost/windIO.py index 01b569e5..ec154351 100755 --- a/wetb/prepost/windIO.py +++ b/wetb/prepost/windIO.py @@ -1037,7 +1037,7 @@ class LoadResults(ReadHawc2): # radius what you get # radius = dscr_list[-1] # radius what you asked for, identified as the last float in the string - s = self.ch_details[ch, 0] + s = self.ch_details[ch, 2] radius = float(re.findall(r"[-+]?\d*\.\d+|\d+", s)[-1]) # and tag it @@ -1094,7 +1094,7 @@ class LoadResults(ReadHawc2): # radius what you get # radius = float(items[8].replace(',', '')) # radius what you asked for, identified as the last float in the string - s = self.ch_details[ch, 0] + s = self.ch_details[ch, 2] radius = float(re.findall(r"[-+]?\d*\.\d+|\d+", s)[-1]) items = self.ch_details[ch, 0].split(',') @@ -1135,7 +1135,7 @@ class LoadResults(ReadHawc2): tmp = tmp.split(',') # radius = float(tmp[0]) # radius what you asked for, identified as the last float in the string - s = self.ch_details[ch, 0] + s = self.ch_details[ch, 2] radius = float(re.findall(r"[-+]?\d*\.\d+|\d+", s)[-1]) if len(tmp) > 1: @@ -1231,7 +1231,7 @@ class LoadResults(ReadHawc2): # radius = self.ch_details[ch, 2].split('radius')[1].split(',')[0] # radius = radius.strip() # radius what you asked for, identified as the last float in the string - s=self.ch_details[ch, 0] + s=self.ch_details[ch, 2] radius=float(re.findall(r"[-+]?\d*\.\d+|\d+", s)[-1]) # and tag it -- GitLab