Skip to content
Snippets Groups Projects
Commit 264c7f2d authored by mads's avatar mads
Browse files

bearing_damage.py + test

parent c6910fcd
No related branches found
No related tags found
No related merge requests found
'''
Created on 13/10/2014
@author: MMPE
'''
def bearing_damage_SWP(angle_moment_lst, m=3, thresshold=0.1):
"""Function ported from Matlab.
Matlab documentation:
"Compute bearing damage according to SWP procedure
The basic equation is a damage equivalent loading calculated as
Damage = sum(dPitch*Mr^3.0)
Where
dPitch = pitch change in a given timestep [deg]
Mr = load component in a given sector [kNm]
We evaluate Mr (blade root moment resultant) in 10deg sectors and take
the largest damage. For a delta loading as you are investigating it is
accurate enough just to take the flap loading and ignore the changes
coming from edge load variation.
The delta pitch is a bit tricky. You need to filter you signal so minor
quick variation in pitch does not give an actual delta pitch. The
variation in pitch reference is filtered. So effectively a variation
below 0.1deg is ignored and the pitch is fixed with no variation as
long as the change is below this value.
So basically for each time step calulate dPitch*Mr^3 and sum it up with
Mr=blade flap moment. I’m sure your model will not have the details for
capacity comparison, but for changes from one configuration to another
should be ok. We do not use the sum(dPitch) for design evaluation directly."
Parameters
----------
angle_moment_lst : ((angle_A_vector, moment_A_vector),(angle_B_vector, moment_B_vector),...)
Angles[deg] and momements (e.g. pitch angle and blade root moment for the blades of a wind turbine)
m : int, optional
analogue to Wöhler exponent, should be 3
threeshold : float, optional
Pitch noise. Pitch movement below this thresshold is ignored
Returns
-------
max_damage : float
A damage value of the most damaged pitch bearing. Only suitable for comparison
"""
damages = []
for angle, moment in angle_moment_lst:
angle, moment = angle.tolist(), moment.tolist()
k1 = 0
p1, mflap = angle[0], moment[0]
damage = 0
for k, (pi, mo) in enumerate(zip(angle[1:], moment[1:]), 1):
dangle = abs(pi - p1)
if dangle > thresshold:
damage += dangle * abs(mflap / (k - k1 + 1)) ** m
k1 = k
mflap = mo
p1 = pi
else:
mflap += mo
damages.append(damage)
return max(damages)
'''
Created on 16/07/2013
@author: mmpe
'''
import unittest
import numpy as np
from wetb.hawc2 import Hawc2io
from wetb.fatigue_tools.bearing_damage import bearing_damage_SWP
class TestBearingDamage(unittest.TestCase):
def test_bearing_damage_swp(self):
data = Hawc2io.ReadHawc2("test_files/test_bearing_damage").ReadBinary((np.array([4, 26, 6, 32, 8, 38]) - 1).tolist())
self.assertAlmostEqual(bearing_damage_SWP([(data[:, i], data[:, i + 1]) for i in [0, 2, 4]]), 7.755595081475002e+13)
if __name__ == "__main__":
#import sys;sys.argv = ['', 'Test.testName']
unittest.main()
File added
________________________________________________________________________________________________________________________
Version ID : HAWC2MB 11.8
Time : 00:05:42
Date : 11:10.2014
________________________________________________________________________________________________________________________
Result file : ./res/dlc12_iec61400-1ed3/dlc12_wsp12_wdir000_s1005.dat
________________________________________________________________________________________________________________________
Scans Channels Time [sec] Format
30000 157 600.000 BINARY
Channel Variable Description
1 Time s Time
2 bea1 angle deg shaft_rot angle
3 bea1 angle_speed rpm shaft_rot angle speed
4 bea1 angle deg pitch1 angle
5 bea1 angle_speed deg/s pitch1 angle speed
6 bea1 angle deg pitch2 angle
7 bea1 angle_speed deg/s pitch2 angle speed
8 bea1 angle deg pitch3 angle
9 bea1 angle_speed deg/s pitch3 angle speed
10 Omega rad/s Rotor speed
11 Ae rot. torque kNm Aero rotor torque
12 Ae rot. power kW Aero rotor power
13 Ae rot. thrust kN Aero rotor thrust
14 WSP gl. coo.,Vx m/s Free wind speed Vx, gl. coo, of gl. pos 0.00, 0.00, -90.00
15 WSP gl. coo.,Vy m/s Free wind speed Vy, gl. coo, of gl. pos 0.00, 0.00, -90.00
16 WSP gl. coo.,Vz m/s Free wind speed Vz, gl. coo, of gl. pos 0.00, 0.00, -90.00
17 Mx coo: tower kNm MomentMx Mbdy:tower nodenr: 1 coo: tower tower base
18 My coo: tower kNm MomentMy Mbdy:tower nodenr: 1 coo: tower tower base
19 Mz coo: tower kNm MomentMz Mbdy:tower nodenr: 1 coo: tower tower base
20 Mx coo: tower kNm MomentMx Mbdy:tower nodenr: 8 coo: tower yaw bearing
21 My coo: tower kNm MomentMy Mbdy:tower nodenr: 8 coo: tower yaw bearing
22 Mz coo: tower kNm MomentMz Mbdy:tower nodenr: 8 coo: tower yaw bearing
23 Mx coo: shaft kNm MomentMx Mbdy:shaft nodenr: 4 coo: shaft main bearing
24 My coo: shaft kNm MomentMy Mbdy:shaft nodenr: 4 coo: shaft main bearing
25 Mz coo: shaft kNm MomentMz Mbdy:shaft nodenr: 4 coo: shaft main bearing
26 Mx coo: blade1 kNm MomentMx Mbdy:blade1 nodenr: 3 coo: blade1 blade 1 root
27 My coo: blade1 kNm MomentMy Mbdy:blade1 nodenr: 3 coo: blade1 blade 1 root
28 Mz coo: blade1 kNm MomentMz Mbdy:blade1 nodenr: 3 coo: blade1 blade 1 root
29 Mx coo: local kNm MomentMx Mbdy:blade1 nodenr: 10 coo: local blade 1 50% local e coo
30 My coo: local kNm MomentMy Mbdy:blade1 nodenr: 10 coo: local blade 1 50% local e coo
31 Mz coo: local kNm MomentMz Mbdy:blade1 nodenr: 10 coo: local blade 1 50% local e coo
32 Mx coo: blade2 kNm MomentMx Mbdy:blade2 nodenr: 3 coo: blade2 blade 2 root
33 My coo: blade2 kNm MomentMy Mbdy:blade2 nodenr: 3 coo: blade2 blade 2 root
34 Mz coo: blade2 kNm MomentMz Mbdy:blade2 nodenr: 3 coo: blade2 blade 2 root
35 Mx coo: local kNm MomentMx Mbdy:blade2 nodenr: 10 coo: local blade 2 50% local e coo
36 My coo: local kNm MomentMy Mbdy:blade2 nodenr: 10 coo: local blade 2 50% local e coo
37 Mz coo: local kNm MomentMz Mbdy:blade2 nodenr: 10 coo: local blade 2 50% local e coo
38 Mx coo: blade3 kNm MomentMx Mbdy:blade3 nodenr: 3 coo: blade3 blade 3 root
39 My coo: blade3 kNm MomentMy Mbdy:blade3 nodenr: 3 coo: blade3 blade 3 root
40 Mz coo: blade3 kNm MomentMz Mbdy:blade3 nodenr: 3 coo: blade3 blade 3 root
41 Mx coo: local kNm MomentMx Mbdy:blade3 nodenr: 10 coo: local blade 3 50% local e coo
42 My coo: local kNm MomentMy Mbdy:blade3 nodenr: 10 coo: local blade 3 50% local e coo
43 Mz coo: local kNm MomentMz Mbdy:blade3 nodenr: 10 coo: local blade 3 50% local e coo
44 State pos x coo: global m State pos x Mbdy:tower E-nr: 7 Z-rel:1.00 coo: global tower top flange position
45 State pos y coo: global m State pos y Mbdy:tower E-nr: 7 Z-rel:1.00 coo: global tower top flange position
46 State pos z coo: global m State pos z Mbdy:tower E-nr: 7 Z-rel:1.00 coo: global tower top flange position
47 State acc x coo: global m/s^2 State acc x Mbdy:tower E-nr: 7 Z-rel:1.00 coo: global tower top flange position
48 State acc y coo: global m/s^2 State acc y Mbdy:tower E-nr: 7 Z-rel:1.00 coo: global tower top flange position
49 State acc z coo: global m/s^2 State acc z Mbdy:tower E-nr: 7 Z-rel:1.00 coo: global tower top flange position
50 State pos x coo: global m State pos x Mbdy:tower E-nr: 3 Z-rel:1.00 coo: global tower approx tip height
51 State pos y coo: global m State pos y Mbdy:tower E-nr: 3 Z-rel:1.00 coo: global tower approx tip height
52 State pos z coo: global m State pos z Mbdy:tower E-nr: 3 Z-rel:1.00 coo: global tower approx tip height
53 State pos x coo: blade1 m State pos x Mbdy:blade1 E-nr: 18 Z-rel:1.00 coo: blade1 blade 1 tip pos
54 State pos y coo: blade1 m State pos y Mbdy:blade1 E-nr: 18 Z-rel:1.00 coo: blade1 blade 1 tip pos
55 State pos z coo: blade1 m State pos z Mbdy:blade1 E-nr: 18 Z-rel:1.00 coo: blade1 blade 1 tip pos
56 State pos x coo: blade2 m State pos x Mbdy:blade2 E-nr: 18 Z-rel:1.00 coo: blade2 blade 2 tip pos
57 State pos y coo: blade2 m State pos y Mbdy:blade2 E-nr: 18 Z-rel:1.00 coo: blade2 blade 2 tip pos
58 State pos z coo: blade2 m State pos z Mbdy:blade2 E-nr: 18 Z-rel:1.00 coo: blade2 blade 2 tip pos
59 State pos x coo: blade3 m State pos x Mbdy:blade3 E-nr: 18 Z-rel:1.00 coo: blade3 blade 3 tip pos
60 State pos y coo: blade3 m State pos y Mbdy:blade3 E-nr: 18 Z-rel:1.00 coo: blade3 blade 3 tip pos
61 State pos z coo: blade3 m State pos z Mbdy:blade3 E-nr: 18 Z-rel:1.00 coo: blade3 blade 3 tip pos
62 State pos x coo: global m State pos x Mbdy:blade1 E-nr: 18 Z-rel:1.00 coo: global blade 1 tip pos
63 State pos y coo: global m State pos y Mbdy:blade1 E-nr: 18 Z-rel:1.00 coo: global blade 1 tip pos
64 State pos z coo: global m State pos z Mbdy:blade1 E-nr: 18 Z-rel:1.00 coo: global blade 1 tip pos
65 State pos x coo: global m State pos x Mbdy:blade2 E-nr: 18 Z-rel:1.00 coo: global blade 2 tip pos
66 State pos y coo: global m State pos y Mbdy:blade2 E-nr: 18 Z-rel:1.00 coo: global blade 2 tip pos
67 State pos z coo: global m State pos z Mbdy:blade2 E-nr: 18 Z-rel:1.00 coo: global blade 2 tip pos
68 State pos x coo: global m State pos x Mbdy:blade3 E-nr: 18 Z-rel:1.00 coo: global blade 3 tip pos
69 State pos y coo: global m State pos y Mbdy:blade3 E-nr: 18 Z-rel:1.00 coo: global blade 3 tip pos
70 State pos z coo: global m State pos z Mbdy:blade3 E-nr: 18 Z-rel:1.00 coo: global blade 3 tip pos
71 WSP Vx, glco, R= 61.5 m/s Wind speed Vx of blade 1 at radius 61.52, global coo.
72 WSP Vy, glco, R= 61.5 m/s Wind speed Vy of blade 1 at radius 61.52, global coo.
73 WSP Vz, glco, R= 61.5 m/s Wind speed Vz of blade 1 at radius 61.52, global coo.
74 Alfa, R= 45.0 deg Angle of attack of blade 1 at radius 45.17
75 Alfa, R= 45.0 deg Angle of attack of blade 2 at radius 45.17
76 Alfa, R= 45.0 deg Angle of attack of blade 3 at radius 45.17
77 Cl, R= 45.0 deg Cl of blade 1 at radius 45.17
78 Cl, R= 45.0 deg Cl of blade 2 at radius 45.17
79 Cl, R= 45.0 deg Cl of blade 3 at radius 45.17
80 DLL out 1: 1 - DLL : 1 outvec : 1 time
81 DLL out 1: 2 - DLL : 1 outvec : 2 slow speed shaft rad/s
82 DLL out 1: 3 - DLL : 1 outvec : 3 pitch angle 1
83 DLL out 1: 4 - DLL : 1 outvec : 4 pitch angle 2
84 DLL out 1: 5 - DLL : 1 outvec : 5 pitch angle 3
85 DLL out 1: 6 - DLL : 1 outvec : 6 wsp_x_global
86 DLL out 1: 7 - DLL : 1 outvec : 7 wsp_y_global
87 DLL out 1: 8 - DLL : 1 outvec : 8 wsp_z_global
88 DLL out 1: 9 - DLL : 1 outvec : 9 elec. pwr
89 DLL out 1: 10 - DLL : 1 outvec : 10 grid flag
90 DLL inp 1: 1 - DLL : 1 inpvec : 1 generator torque reference [nm]
91 DLL inp 1: 2 - DLL : 1 inpvec : 2 pitch angle reference of blade 1 [rad]
92 DLL inp 1: 3 - DLL : 1 inpvec : 3 pitch angle reference of blade 2 [rad]
93 DLL inp 1: 4 - DLL : 1 inpvec : 4 pitch angle reference of blade 3 [rad]
94 DLL inp 1: 5 - DLL : 1 inpvec : 5 power reference [w]
95 DLL inp 1: 6 - DLL : 1 inpvec : 6 filtered wind speed [m/s]
96 DLL inp 1: 7 - DLL : 1 inpvec : 7 filtered rotor speed [rad/s]
97 DLL inp 1: 8 - DLL : 1 inpvec : 8 filtered rotor speed error for torque [rad/s]
98 DLL inp 1: 9 - DLL : 1 inpvec : 9 bandpass filtered rotor speed [rad/s]
99 DLL inp 1: 10 - DLL : 1 inpvec : 10 proportional term of torque contr. [nm]
100 DLL inp 1: 11 - DLL : 1 inpvec : 11 integral term of torque controller [nm]
101 DLL inp 1: 12 - DLL : 1 inpvec : 12 minimum limit of torque [nm]
102 DLL inp 1: 13 - DLL : 1 inpvec : 13 maximum limit of torque [nm]
103 DLL inp 1: 14 - DLL : 1 inpvec : 14 torque limit switch based on pitch [-]
104 DLL inp 1: 15 - DLL : 1 inpvec : 15 filtered rotor speed error for pitch [rad/s]
105 DLL inp 1: 16 - DLL : 1 inpvec : 16 power error for pitch [w]
106 DLL inp 1: 17 - DLL : 1 inpvec : 17 proportional term of pitch controller [rad]
107 DLL inp 1: 18 - DLL : 1 inpvec : 18 integral term of pitch controller [rad]
108 DLL inp 1: 19 - DLL : 1 inpvec : 19 minimum limit of pitch [rad]
109 DLL inp 1: 20 - DLL : 1 inpvec : 20 maximum limit of pitch [rad]
110 DLL inp 1: 21 - DLL : 1 inpvec : 21 torque reference from dt dammper [nm]
111 DLL inp 1: 22 - DLL : 1 inpvec : 22 status signal [-]
112 DLL inp 1: 23 - DLL : 1 inpvec : 23 total added pitch rate [rad/s]
113 DLL inp 1: 25 - DLL : 1 inpvec : 25 flag for mechnical brake [0=off/1=on]
114 DLL inp 1: 26 - DLL : 1 inpvec : 26 flag for emergency pitch stop [0=off/1=on]
115 DLL out 2: 1 - DLL : 2 outvec : 1 time
116 DLL out 2: 2 - DLL : 2 outvec : 2 azimuth angle [rad]
117 DLL out 2: 3 - DLL : 2 outvec : 3 azimuth speed [rad/s]
118 DLL out 2: 4 - DLL : 2 outvec : 4 flap brm of blade 1 [knm]
119 DLL out 2: 5 - DLL : 2 outvec : 5 flap brm of blade 2 [knm]
120 DLL out 2: 6 - DLL : 2 outvec : 6 flap brm of blade 3 [knm]
121 DLL out 2: 7 - DLL : 2 outvec : 7 pitch reference of blade 1 [rad]
122 DLL out 2: 8 - DLL : 2 outvec : 8 pitch reference of blade 2 [rad]
123 DLL out 2: 9 - DLL : 2 outvec : 9 pitch reference of blade 3 [rad]
124 DLL out 2: 10 - DLL : 2 outvec : 10 status flag from basic ctrl
125 DLL inp 2: 1 - DLL : 2 inpvec : 1 pitch reference of blade 1 [rad]
126 DLL inp 2: 2 - DLL : 2 inpvec : 2 pitch reference of blade 2 [rad]
127 DLL inp 2: 3 - DLL : 2 inpvec : 3 pitch reference of blade 3 [rad]
128 DLL inp 2: 4 - DLL : 2 inpvec : 4 cosine moment [knm]
129 DLL inp 2: 5 - DLL : 2 inpvec : 5 sine moment [knm]
130 DLL inp 2: 6 - DLL : 2 inpvec : 6 low-pass filtered cosine moment [knm]
131 DLL inp 2: 7 - DLL : 2 inpvec : 7 low-pass filtered sine moment [knm]
132 DLL inp 2: 8 - DLL : 2 inpvec : 8 cosine pitch [rad]
133 DLL inp 2: 9 - DLL : 2 inpvec : 9 sine pitch [rad]
134 DLL inp 2: 10 - DLL : 2 inpvec : 10 switchfactor [-]
135 DLL out 3: 1 - DLL : 3 outvec : 1 time
136 DLL out 3: 2 - DLL : 3 outvec : 2 electrical torque reference [nm]
137 DLL out 3: 3 - DLL : 3 outvec : 3 omega lss
138 DLL inp 3: 1 - DLL : 3 inpvec : 1 mgen lss [nm]
139 DLL inp 3: 2 - DLL : 3 inpvec : 2 pelec w
140 DLL inp 3: 3 - DLL : 3 inpvec : 3 mframe
141 DLL inp 3: 4 - DLL : 3 inpvec : 4 mgen hss
142 DLL inp 3: 5 - DLL : 3 inpvec : 5 generator pmech kw
143 DLL inp 3: 6 - DLL : 3 inpvec : 6 filtered gen speed
144 DLL inp 3: 7 - DLL : 3 inpvec : 7 elec. pwr
145 DLL inp 3: 8 - DLL : 3 inpvec : 8 grid flag
146 DLL inp 4: 1 - DLL : 4 inpvec : 1 brake torque [nm]
147 DLL out 4: 1 - DLL : 4 outvec : 1 time [s]
148 DLL out 4: 2 - DLL : 4 outvec : 2 generator lss speed [rad/s]
149 DLL out 4: 3 - DLL : 4 outvec : 3 deploy brake
150 DLL out 5: 1 - DLL : 5 outvec : 1 time
151 DLL out 5: 2 - DLL : 5 outvec : 2 pitchref 1
152 DLL out 5: 3 - DLL : 5 outvec : 3 pitchref 2
153 DLL out 5: 4 - DLL : 5 outvec : 4 pitchref 3
154 DLL out 5: 5 - DLL : 5 outvec : 5 emerg. stop
155 DLL inp 5: 1 - DLL : 5 inpvec : 1 pitch 1
156 DLL inp 5: 2 - DLL : 5 inpvec : 2 pitch 2
157 DLL inp 5: 3 - DLL : 5 inpvec : 3 pitch 3
________________________________________________________________________________________________________________________
Scale factors:
2.18750E-02
1.12495E-02
4.15512E-04
4.09937E-04
1.38743E-04
4.04169E-04
1.32760E-04
4.03384E-04
1.35139E-04
4.34542E-05
2.02439E-01
2.61031E-01
2.65983E-02
1.61135E-04
6.11529E-04
1.42944E-04
2.42531E+00
3.72165E-01
2.84396E-01
2.68370E-01
1.56493E-01
2.83659E-01
2.35745E-01
2.80691E-01
1.58515E-01
3.92345E-01
1.61766E-01
4.37487E-03
1.24812E-01
2.80450E-02
2.22626E-03
3.96563E-01
1.65199E-01
3.95572E-03
1.23898E-01
2.65236E-02
2.18839E-03
3.76100E-01
1.51924E-01
4.14227E-03
1.14018E-01
2.71120E-02
2.38153E-03
2.83396E-06
1.52113E-05
2.73736E-03
1.03974E-05
2.85995E-05
1.63177E-06
2.95506E-07
1.86791E-06
9.37454E-04
4.76602E-05
2.66261E-04
1.92210E-03
4.95472E-05
2.61835E-04
1.92207E-03
4.64387E-05
2.42462E-04
1.92216E-03
1.97098E-03
3.75766E-04
4.77808E-03
1.96979E-03
3.65905E-04
4.77677E-03
1.97069E-03
4.01181E-04
4.77924E-03
2.09823E-04
7.06817E-04
1.59703E-04
3.40315E-04
3.51060E-04
2.96693E-04
4.55834E-05
4.69429E-05
4.27909E-05
2.18750E-02
4.35124E-05
7.15475E-06
7.05409E-06
7.04039E-06
1.61135E-04
6.11529E-04
1.42944E-04
1.56661E+02
1.00000E+00
1.33565E+02
6.23526E-06
6.23526E-06
6.23526E-06
1.56268E+02
4.92568E-04
4.33530E-05
5.71198E-06
1.00000E+00
1.10332E+02
1.89505E+02
1.33565E+02
1.33565E+02
3.12500E-05
5.71198E-06
6.98173E+01
4.51520E-06
5.88678E-06
1.00000E+00
4.58149E-05
1.00000E+00
1.00000E+00
1.00000E+00
1.00000E+00
1.00000E+00
2.18750E-02
9.81722E-05
4.35124E-05
3.92970E-01
3.97220E-01
3.76856E-01
6.23526E-06
6.23526E-06
6.23526E-06
1.00000E+00
7.15371E-06
7.05734E-06
7.03710E-06
1.58750E-01
1.70334E-01
9.60481E-02
9.77392E-02
2.18166E-06
2.18166E-06
3.12344E-05
2.18750E-02
1.33565E+02
4.35124E-05
1.41487E+02
1.56661E+02
1.40028E+02
1.45863E+00
1.65955E-01
1.58515E+02
2.95000E-05
1.00000E+00
1.00000E+00
2.18750E-02
4.35124E-05
1.00000E+00
2.18750E-02
7.15371E-06
7.05734E-06
7.03710E-06
1.00000E+00
7.15475E-06
7.05409E-06
7.04039E-06
......@@ -229,6 +229,6 @@ class ReadHawc2:
################################################################################
if __name__ == '__main__':
res_file = Hawc2io.ReadHawc2('structure_wind')
res_file = ReadHawc2('structure_wind')
results = res_file.ReadAscii()
channelinfo = res_file.ChInfo
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment