Rainflow
rainflow is a Python implementation of the ASTM E1049-85 rainflow cycle counting
algorythm for fatigue analysis.
Installation
rainflow is available on PyPI:
pip install rainflow
and on conda-forge:
conda install rainflow --channel conda-forge
Usage
See release notes in CHANGELOG.md.
Let's generate a sample time series.
Here we simply generate a list of floats but rainflow works
with any sequence of numbers, including numpy arrays and pandas Series.
from math import sin, cos
time = [4.0 * i / 200 for i in range(200 + 1)]
signal = [0.2 + 0.5 * sin(t) + 0.2 * cos(10*t) + 0.2 * sin(4*t) for t in time]
Function count_cycles returns a sorted list of ranges and the corresponding
number of cycles:
import rainflow
rainflow.count_cycles(signal)
# Output
[(0.04258965150708488, 0.5),
(0.10973439445727551, 1.0),
(0.11294628078612906, 0.5),
(0.2057106991158965, 1.0),
(0.21467990941625242, 1.0),
(0.4388985979776988, 1.0),
(0.48305748051348263, 0.5),
(0.5286423866535466, 0.5),
(0.7809330293159786, 0.5),
(1.4343610172143002, 0.5)]
Cycle ranges can be binned or rounded to a specified number of digits using optional arguments binsize, nbins or ndigits:
rainflow.count_cycles(signal, binsize=0.5)
# Output
[(0.5, 5.5), (1.0, 1.0), (1.5, 0.5)]
rainflow.count_cycles(signal, ndigits=1)
# Output
[(0.0, 0.5),
(0.1, 1.5),
(0.2, 2.0),
(0.4, 1.0),
(0.5, 1.0),
(0.8, 0.5),
(1.4, 0.5)]
Full information about each cycle, including mean value, can be obtained
using the extract_cycles function:
for rng, mean, count, i_start, i_end in rainflow.extract_cycles(signal):
print(rng, mean, count, i_start, i_end)
# Output
0.04258965150708488 0.4212948257535425 0.5 0 3
0.11294628078612906 0.38611651111402034 0.5 3 13
...
0.4388985979776988 0.18268137509849586 1.0 142 158
1.4343610172143002 0.3478109852897205 0.5 94 200
Running tests
pip install .[dev]
pytest
Metadata
Release files for rainflow 3.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| rainflow-3.2.0.tar.gz | 4.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| rainflow-3.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 9.5 kB
Release files / rainflow-3.2.0.tar.gz
| Download URL | rainflow-3.2.0.tar.gz |
|---|---|
| Size | 4.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a78f7cd0acab11ccb80567a5c5db9f3a619dee8ac89a5fc861685fe5ffe827fd
|
|
BLAKE2b-256 checksum How to use checksums |
d45957218a5eba4772d1422fe67d37aa3840f80b7bb2b360153d25484f2d32af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.16
|
Release files / rainflow-3.2.0-py3-none-any.whl
| Download URL | rainflow-3.2.0-py3-none-any.whl |
|---|---|
| Size | 4.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cb6c254aa1a16a9e658ff3f39c6e5a77650d6c4e8304146169b36516d1f01660
|
|
BLAKE2b-256 checksum How to use checksums |
3ec8a6d626326cec5eb7c2f8f0646607e90a24d862b64976fc8f111bdb30aa2d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.9.16
|