At the aeroelasticity wind energy department at Risø-DTU (DK), some of
my colleagues have been using an open source rainflow counting
algorithm for Matlab (developed by Adam Nieslony):
http://www.mathworks.com/matlabcentral/fileexchange/3026-rainflow-counting-algorithm
It is based on the ASTM standard practice for cycle counting:
[1] ASTM E 1049-85 (Reapproved 1997), Standard practices for cycle
counting in fatigue analysis, in: Annual Book of ASTM Standards, Vol.
03.01, Philadelphia 1999, pp. 710-718
[2] NIESŁONY A., Determination of fragments of multiaxial service
loading strongly influencing the fatigue of machine components,
Mechanical Systems and Signal Processing, Vol. 23(8), 2009, pp.
2712-2721
Since I am working with Python instead of Matlab, I was really pleased
to find out the existence of pywafo. Further, in order to "defend" my
Python position, I want to compare the earlier mentioned Matlab
rainflow counting algorithm with results obtained by pywafo. I should
also add that it is not my intention to develop or improve a rainflow
counting algorithm. It is just one of many tools I use for my PhD
research.
I am not an export on rainflow counting so forgive me my ignorance,
but shouldn't wafo and the Nieslony algorithm's give both comparable
results? I have included a Matlab and Python script that illustrates
this difference. Maybe I am doing something wrong or is this
difference expected considering the nature of both different
algorithms?
Best regards,
David Verelst
In the event anybody is interested, some more spam on the topic.
I found the reason for the difference between the two algorithms. When
setting the a non value for the wave filtering parameter h, I was able
to get the results I was expecting. Maybe this is obvious for others,
but I realized that the very low frequency, high amplitudes are only
captured by wafo when the low amplitude, high frequency waves are
ignored. For my applications, I am mainly interested in the high
amplitude loading (regardless of frequency). Problem is that due to
the many different channels I examine, the filter wave height is not
known in advance. So capturing all the low and high frequency
amplitudes is important. Could it be that this is actually the
application of the switching Markov chains?
Further, I have ported the benchmark rainflow counting algorithm
created be Nieslony and based on the ASTM standerd
(http://www.mathworks.com/matlabcentral/fileexchange/3026-rainflow-counting-algorithm)
to Python. Since it is released with a BSD license, I could, if
someone is interested, incorporate the Nieslony rainflow counting
(writtin in C and linked to Python with f2py) in pyawfo as well.
Best regards,
David
I am pleased to hear that you found the reason for the difference
between the two algorithms.
This is excellent.
I would not mind having this benchmark rainflow counting algorithm
included in pywafo.
Please feel free to add it.
Per A. ;-)
> --
> Du mottar denne meldingen fordi du abonnerer på Google-gruppen «wafo».
> Hvis du vil legge inn en melding i denne gruppen, kan du sende e-post til wa...@googlegroups.com.
> Hvis du vil avslutte abonnementet på denne gruppen, sender du en e-post til wafo+uns...@googlegroups.com.
> Hvis du vil ha flere alternativer, kan du besøke gruppen på http://groups.google.com/group/wafo?hl=no.
>
>
I guess there are several ways of adding this algorithm to wafo. What
is your preference?
* add the c code to c_functions (findrfc_astm3 and findrfc_astm5)
* add option kind=astm for TimeSeries.turning_points() and
TurningPoints.cycle_pairs()
OR create an additional function TimeSeries/TurningPoints.rainflow_astm
Maybe other preferences?
Regards,
David
On 17 February 2011 11:06, Per Andreas Brodtkorb
Then the advanced option like selecting which kind of method to use is
somewhat hidden, but available for the advanced user.
Best regards, Per A
where sig_cp:
sig_rfc[:,0] Cycles amplitude
sig_rfc[:,1] Cycles mean value
sig_rfc[:,2] Cycle type, half (=0.5) or full (=1.0)
Note that currently it is not yet fully integrated with the wafo
objects. I blame time and my lack of in depth understanding on the
matter of wave data analysis and the wafo package for this. For the
future, I hope to be able to:
* fully integrate with the wafo objects
* include Nieslony's support for timed turning points. In that case
there is additional output:
sig_rfc[:,3] Begining time
sig_rfc[:,4] Cycle period
So sorry for the sloppy integration, but hope it can be useful for
somebody at some point.
Regards,
David
On 22 February 2011 15:50, Per Andreas Brodtkorb