FlexPro Forum – Discuss Your Topic!

Rainflow count class divisions

Home > Community > General > Rainflow count class divisions

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #12693

    To test the rainflow count options within FlexPro, I compared the FlexPro calculated results with some hand calculated results using a simple signal composed of 10 different sinus waves.
    I calculated the rainflow counts using the absolute positive range pairs.

    If I use the automatic class divisions, the FlexPro results are identical to the hand calculations.
    But if I set the class division by hand using either [start/end], [start/class width] or if I use [from dataset with class limit] using the class width I got from the automatic class division calculations, the results are completely different.
    For all options I have used the same number of class divisions.
    Because I will have to combine a number of rainflow calculations, the class width will have to be equal for all results.

    Am I doing something wrong?
    If so, how should I continue?

    #9129
    Bernhard KantzBernhard Kantz
    Participant

    You can easily explore how FlexPro computes the class division if you take a look at the FPScript code which produced by the “Counting Matrix” analysis object. The class division is a data series which is specified as the second argument to the RainflowMatrix() function. You can see the code, if you select the object, right-click and then choose Open from its context menu.

    I case of automatic class division, the following code is used to produce the class division data series:

    
    (33., Min(Signal), (Max(Signal) - Min(Signal)) / 32.)
    

    I you choose [start, end] as [-1, 1] and set the class count to 32, then the following code is produced:

    
    (33., -1.00000000000000, (1.00000000000000 - -1.00000000000000) / 32.)
    

    In both cases, the FPScript data series operator (count, origin, increment) is used.

    You can copy these code fragments into a formula to see which limits are actually used. Please note that the counting uses a class division with closed bounds. The means that for 32 classes, the RainflowMatrix() function needs 33 limit values.

    support@weisang.com

    #9130

    If I calculate the rainflow counts of one dataset, the result seems to change depending on the ClassLimits. If I set the Hysteresis to be zero (everything included) and then reduce the number of class divisions while keeping the start value and end value constant, I expect the total number of cycles to be the same for every calculation. These settings should only influence the resolution of the results (position of cycle calculated in the result array) and not the calculated cycles. However, if I increase the class size over a certain amount I suddenly start ‘losing’ a lot of cycles. On the other hand, if I decrease the class size the number of cycles increases untill the class size has reached a certain size. Decreasing the class size even more does not influence the results, the total number of cycles stays constant. (Including or excluding the ‘residu’ has a neglectible influence on the outcome)
    I can’t use a very small class size because this will increase the processing time too much.
    Why are not all cycles included if I increase the class size over a cetain value ?

    #9131
    Bernhard KantzBernhard Kantz
    Participant

    Even if you set the range filter (hysteresis) to zero, there will still be a dependency between the number of class divisions and the number of counted cycles. If you have a few large classes only, then small cycles, which completely fall into one class, are not counted. They fall through the grid of class divisions. If you increase the number of classes, then the number of counted cycles goes up until it reaches its maximum. Then, the class division is so small that all cycles are counted.
    support@weisang.com

    #9132

    Thanks for the information. Now I know what causes the problem, I can work around it.
    One more thing: My programme crashes if I change the ‘start of the class’ in the ‘class division’ using the following:
    ActiveDatabase.SelectedObject.ClassDivisionParameter1 = -50
    I got this by manually recording a macro.
    Could this be wrong, and if so, what should it be?
    It also crashes if I record the macro and then execute it.
    Thank you.

    #8356

    To test the rainflow count options within FlexPro, I compared the FlexPro calculated results with some hand calculated results using a simple signal composed of 10 different sinus waves.
    I calculated the rainflow counts using the absolute positive range pairs.

    If I use the automatic class divisions, the FlexPro results are identical to the hand calculations.
    But if I set the class division by hand using either [start/end], [start/class width] or if I use [from dataset with class limit] using the class width I got from the automatic class division calculations, the results are completely different.
    For all options I have used the same number of class divisions.
    Because I will have to combine a number of rainflow calculations, the class width will have to be equal for all results.

    Am I doing something wrong?
    If so, how should I continue?

    #9133
    Bernhard KantzBernhard Kantz
    Participant

    The macro stops with an error if the value of ClassDivisionParameter1 is negative. This should be possible. So we will remove this issue.

    support@weisang.com

Viewing 7 posts - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.