Skip to main content

Implementation of ASTM E1049-85 rainflow cycle counting algorithm

Project description

Rainflow

Build Status

rainflow is a Python implementation of the ASTM E1049-85 rainflow cycle counting algorythm for fatigue analysis. No dependencies beside Python's standard library. Supports both Python 2 and 3.

Installation

pip install rainflow

Usage

Let's generate a sample time series of some load. Here we create a numpy array but any iterable of numbers would work:

>>> import numpy as np
>>> x = np.linspace(0, 4, 200)
>>> y = 0.2 + 0.5 * np.sin(x) + 0.2 * np.cos(10*x) + 0.2 * np.sin(4*x)

Function count_cycles returns a sorted list of the load ranges and the corresponding number of cycles:

>>> import rainflow
>>> rainflow.count_cycles(y)
    [(0.11022406179686783, 1.0), (0.11316419853821802, 0.5), (0.20607635324664902, 1.0),
     (0.2148070281383265, 0.5), (0.36749670533564682, 0.5), (0.4389628182518176, 0.5),
     (0.48294318988133728, 0.5), (0.52799626197601901, 0.5), (0.78150280937784777, 0.5),
     (1.102640610792428, 0.5)]

Want to round the cycle magnitudes? Use ndigits, nbins or binsize:

>>> rainflow.count_cycles(y, ndigits=2)
    [(0.11, 1.5), (0.21, 1.5), (0.37, 0.5), (0.44, 0.5), (0.48, 0.5), (0.53, 0.5),
     (0.78, 0.5), (1.1, 0.5)]

If you need more detailed output, like cycle lows, highs or means, use extract_cycles:

>>> for low, high, mult in rainflow.extract_cycles(y):
...     mean = 0.5 * (high + low)
...     rng = high - low

Running tests

python -m unittest tests/*.py

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for rainflow, version 2.2.0
Filename, size File type Python version Upload date Hashes
Filename, size rainflow-2.2.0.tar.gz (6.0 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page