Implementation of ASTM E1049-85 rainflow cycle counting algorithm
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rainflow-3.2.0.tar.gz.
File metadata
- Download URL: rainflow-3.2.0.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a78f7cd0acab11ccb80567a5c5db9f3a619dee8ac89a5fc861685fe5ffe827fd
|
|
| MD5 |
26d69445abd140463959dba7ce7bcaad
|
|
| BLAKE2b-256 |
d45957218a5eba4772d1422fe67d37aa3840f80b7bb2b360153d25484f2d32af
|
File details
Details for the file rainflow-3.2.0-py3-none-any.whl.
File metadata
- Download URL: rainflow-3.2.0-py3-none-any.whl
- Upload date:
- Size: 4.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.9.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cb6c254aa1a16a9e658ff3f39c6e5a77650d6c4e8304146169b36516d1f01660
|
|
| MD5 |
927bb733c1f3bf732ec22cbe188c72f8
|
|
| BLAKE2b-256 |
3ec8a6d626326cec5eb7c2f8f0646607e90a24d862b64976fc8f111bdb30aa2d
|