Skip to main content

RustFatigue

RustFatigue is a lightweight Python package designed to calculate only one thing - the Damage Equivalent Load (DEL) from time series load data. DEL is an important metric in fatigue analysis, frequently used in the wind turbine industry and other engineering fields to estimate cumulative damage under variable loading conditions.

The core computation is implemented in Rust for high performance, wrapped with a Python interface for seamless integration into Python workflows.

Installation

pip install rust-fatigue

Usage

This package provides a two functions. The first returns the DEL of a signal:

damage_equiv_load(signal: list[float], m: float, neq: int, half: bool=True, max_closed=False) -> float
  • signal: List or NumPy array of load values.
  • m: Wöhler (fatigue) exponent.
  • neq: Number of equivalent full-cycles.
  • half: Whether to count residual cycles as half-cycles (True, default) or full cycles (False).
  • max_closed: Whether to begin the peak/trough search from the largest peak (default=False).

The second function returns the rainflow counting results of a signal in the form of a list of half cycle ranges:

rainflow_count(signal: list[float], half: bool=True) -> list[float]
  • signal: List or NumPy array of load values.
  • half: Whether to count residual cycles as half-cycles (True, default) or full cycles (False).

Example

from rustfatigue import damage_equiv_load

# Example load signal
signal = [1, 2, 3, 4, 5, 6]
wohler = 4
Ncycles = 20

# Calculate Damage Equivalent Load
DEL = damage_equiv_load(signal, wohler, Ncycles)

print(f"Damage Equivalent Load: {DEL}")
# Damage Equivalent Load: 2.224235024089319

By default, residual cycles are counted as half-cycles (which is standard practice). If you prefer a more conservative estimate by counting residuals as full cycles, set half=False:

DEL = damage_equiv_load(signal, wohler, Ncycles, half=False)

Theory

The calculation of Damage Equivalent Load (DEL) in this package involves three main steps:

1) Peak and Trough Finding

The input time series load signal is scanned to identify local maxima (peaks) and minima (troughs). This results in a compressed signal that contains only these reversal points, significantly reducing the data size while retaining the essential fatigue-driving features.

2) Rainflow Counting

The sequence of peaks and troughs is processed using a rainflow counting algorithm. This algorithm decomposes the load history into discrete load cycles by matching turning points. The result is a set of half-cycle ranges — each representing a peak-to-peak stress difference. In this package, Rainflow counting is performed in two steps.

  1. Full cycle ranges (i.e. two matching half-cycles) are identified using the four point method.
  2. Any remaining unpaired turning points are counted as half cycles - or optionally as full-cycles for a more conservative estimate.

3) Damage Equivalent Load Calculation

From the rainflow output, the DEL is computed using the Wöhler (S–N) exponent $m$ and a target number of equivalent cycles $N_{\text{eq}}$. The calculation assumes that fatigue damage follows a power law, and each cycle contributes damage proportional to its range raised to the power $m$. The DEL $L_{\text{eq}}$ is the constant-amplitude load that would cause the same cumulative damage over $N_{\text{eq}}$ cycles:

$$ L_{\text{eq}} = \left( \frac{1}{2}\frac{\sum_{i} L_i^m}{N_{\text{eq}}} \right)^{\frac{1}{m}} $$

Where

  • $L_i$ = range (peak-to-peak) of the $i$-th half-cycle
  • $N_{\text{eq}}$ = number of equivalent full cycles
  • $m$ = Wöhler (fatigue) exponent
  • The factor $1/2$ accounts for the conversion from half-cycles to full cycles

In many textbooks and industry tools, cycle ranges are binned, and there is an additional weighting on $L_i$ to distinguish between half and full cycles. By contrast, this implementation uses no binning and operates directly on half-cycles, where a full cycle is simply represented by two matching half-cycle. This is mathematically equivalent to using an infinite number of bins and avoids the loss of precision introduced by histogram-based methods.

Metadata

Release files for rust-fatigue 0.1.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for rust-fatigue 0.1.9
File Size Uploaded
rust_fatigue-0.1.9.tar.gz 29.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for rust-fatigue 0.1.9
File
rust_fatigue-0.1.9-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
rust_fatigue-0.1.9-cp314-cp314-manylinux_2_28_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.28+ x86-64 Details
rust_fatigue-0.1.9-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
rust_fatigue-0.1.9-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
rust_fatigue-0.1.9-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
rust_fatigue-0.1.9-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
rust_fatigue-0.1.9-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
rust_fatigue-0.1.9-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
rust_fatigue-0.1.9-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
rust_fatigue-0.1.9-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
rust_fatigue-0.1.9-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
rust_fatigue-0.1.9-cp39-cp39-manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64 Details
rust_fatigue-0.1.9-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
rust_fatigue-0.1.9-cp38-cp38-manylinux_2_28_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.28+ x86-64 Details

Total release size: 7.0 MB

Release files / rust_fatigue-0.1.9.tar.gz

Download URL rust_fatigue-0.1.9.tar.gz
Size 29.9 kB
Tags Source
SHA-256 checksum
How to use checksums
685de7611e2a7d07df99923d875ba3cf227744f965bd06e563e5034b7b80b7bf
BLAKE2b-256 checksum
How to use checksums
98ca732fed7d404ba3cb502d388ad09e959dbe362a3a516fb73ee0c15b74d0e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp314-cp314-win_amd64.whl

Download URL rust_fatigue-0.1.9-cp314-cp314-win_amd64.whl
Size 724.0 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
3ae583ba46ab2606afcf5d90c8077396aa4801748d68c6c57dc58cb45026cde5
BLAKE2b-256 checksum
How to use checksums
833351bcc8e040a5e4c0983d3a13f10537d9b30c797c59e2ffa9fc080e27c525
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp314-cp314-manylinux_2_28_x86_64.whl

Download URL rust_fatigue-0.1.9-cp314-cp314-manylinux_2_28_x86_64.whl
Size 264.5 kB
Tags CPython 3.14 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c4bcd0d990d9f21023cc8b11103228c2169c82d96d124f8d10aca7bef7a5d666
BLAKE2b-256 checksum
How to use checksums
24f8fddf59bdfb4f223d5f7005d3147b475f56a70ad6d8f8d4e00973648f50b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp313-cp313-win_amd64.whl

Download URL rust_fatigue-0.1.9-cp313-cp313-win_amd64.whl
Size 723.6 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
fe7cd4e0a50b9af228d313b0834d4e10c8900b0bcc53f420310ae8d65c5b4942
BLAKE2b-256 checksum
How to use checksums
5a13e1a9a72ece1ed03944ec0d1ae584d1ec300187faea8dc1fad9ba251a02bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL rust_fatigue-0.1.9-cp313-cp313-manylinux_2_28_x86_64.whl
Size 264.9 kB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
7d1fee04546354f8874db323e1ec7d3e3021a3047205b558d86db2f207a37aff
BLAKE2b-256 checksum
How to use checksums
9a8f1ce44c1684a22bc233a1ca451bc4acfa2cbf67246a293c71983d6dde5dc0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp312-cp312-win_amd64.whl

Download URL rust_fatigue-0.1.9-cp312-cp312-win_amd64.whl
Size 725.0 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
69e5a35684bb04365bc0f20a63b2f88ee8e66fd04bc94ac85e257a93d8d5e247
BLAKE2b-256 checksum
How to use checksums
88cfb7890cf0a97e908af7c8c25016d45565706daaa4f58b2b09e9c672d7fc24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL rust_fatigue-0.1.9-cp312-cp312-manylinux_2_28_x86_64.whl
Size 265.5 kB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
92402e1f11c2cbaed235e0d92073f47cb069b37e0b0504fc0ae1fc4faa1ac3eb
BLAKE2b-256 checksum
How to use checksums
0d8510ae2050abcdcdc598c8efde4d0de23039109ffb760c68ed9e73b15d61e4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp311-cp311-win_amd64.whl

Download URL rust_fatigue-0.1.9-cp311-cp311-win_amd64.whl
Size 724.6 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
394767e7601ff8af94037cc45ccd9c40b3ac0a51b7a1b9d32d3c0817fbae4b00
BLAKE2b-256 checksum
How to use checksums
354a3c475e370b894fe61bd7cd882c2b44d86ac6cd1a9834919d555c54f9c252
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL rust_fatigue-0.1.9-cp311-cp311-manylinux_2_28_x86_64.whl
Size 266.7 kB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
ac5ae1ef394ac2e5e78c45ff2f0dade6e32c146a4aad9d0725bcfbf0cf5e0258
BLAKE2b-256 checksum
How to use checksums
89e6cab9caeb3e17808dc692f3d9d4d8cf732f1fdff463e906e3064935194ea2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp310-cp310-win_amd64.whl

Download URL rust_fatigue-0.1.9-cp310-cp310-win_amd64.whl
Size 725.4 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
47ff2f5f1eb109314eeb0989802a33caccc0dc9c6be31066f4a32463a4df933f
BLAKE2b-256 checksum
How to use checksums
0d72c6a06e04e83f44bc3e821d0c450fe78585425719fd4b6a6ed8533b8e0f19
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL rust_fatigue-0.1.9-cp310-cp310-manylinux_2_28_x86_64.whl
Size 266.8 kB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
8731058e31c554d5d8bf55deaf91fe40865b64ce41d4e056a58397ed09b8a10c
BLAKE2b-256 checksum
How to use checksums
8e19836481d3d57d6d59e9e222aef8ad92039c206a419af4d74627d86a9c5d8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp39-cp39-win_amd64.whl

Download URL rust_fatigue-0.1.9-cp39-cp39-win_amd64.whl
Size 726.8 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
df9126e607b0fa2025953a72d81ef969d5fe49bc96137e218851008f42699d28
BLAKE2b-256 checksum
How to use checksums
19d5623b6e5a56d3bd6475d89cfc27ac3539e43fd133e745ea82d311ef676100
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp39-cp39-manylinux_2_28_x86_64.whl

Download URL rust_fatigue-0.1.9-cp39-cp39-manylinux_2_28_x86_64.whl
Size 266.9 kB
Tags CPython 3.9 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
d65c716013ef0dab7620edcc17dbe08746c50d5b35e060c87bde2a44228abf1b
BLAKE2b-256 checksum
How to use checksums
9fbef838877cbe7a75dd5d7db269ab9fa039d511c05dc3e60e1043ee5c08e627
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp38-cp38-win_amd64.whl

Download URL rust_fatigue-0.1.9-cp38-cp38-win_amd64.whl
Size 725.3 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
61234e13f87c2c9614deefbf8a46be98fee642adc7e054bb48a0af41b51287ca
BLAKE2b-256 checksum
How to use checksums
88feee5370a713622882a612c89b98a8a25458b53944234a2b9688ef5bf03348
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / rust_fatigue-0.1.9-cp38-cp38-manylinux_2_28_x86_64.whl

Download URL rust_fatigue-0.1.9-cp38-cp38-manylinux_2_28_x86_64.whl
Size 266.6 kB
Tags CPython 3.8 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
41c1481b00cb8c9b442353e9a280542e8443acd73add33bb68b8a9f544384aca
BLAKE2b-256 checksum
How to use checksums
8a67746f63de894e097a8b4a5dd62c072c397d49f83fd2786fe825c89b52f0f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release history Release notifications | RSS feed

This release

0.1.9 This release

15 release files

0.1.8

13 release files

0.1.7

7 release files

0.1.6

13 release files

0.1.5

6 release files

0.1.3

3 release files

0.1.2

2 release files

0.1.1

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page