Skip to main content

Material-agnostic Low Cycle Fatigue (LCF) strain-life analysis: core library + MCP server.

Project description

lcf-strain-life

tests python license

Readme | Physics Review | Agent Usage | Changelog | MIT License

An AI-agent-native toolkit for fatigue analysis of materials. It is a Python library plus an MCP server, so AI agents can run the whole analysis by calling tools.

Provide your own strain-controlled fatigue test data and get the standardized reduction, fitted material constants, life predictions, and plots. Results are reproducible and are saved for recall.

Why this exists: plenty of fatigue software exists, but none is built for AI agents to drive directly. The agent-native design over MCP is the point. Every capability is reachable through tools an agent can call.

Convention: all analysis uses true stress and true strain. Engineering input is converted at ingestion. The fatigue exponents b and c are negative throughout.


What it does

Stage What happens
Ingest and normalize raw time, strain, force plus parameters become true stress-strain
Cycle reduction peak and valley per cycle, half-life cycle, cycles-to-failure N_f
Per-cycle metrics stress amplitude, plastic strain amplitude, mean stress, T/C ratio, hysteresis energy
Strain-life fits Basquin, Coffin-Manson, Ramberg-Osgood, transition life
Constant estimation five published methods estimate the constants from tensile properties or hardness when no fatigue data exists
Mean stress Morrow, modified Morrow, SWT, Walker corrections
Variable amplitude rainflow, level-crossing, and peak counting (ASTM E1049), racetrack filter, spectrum life
Damage Miner, DLDR, Corten-Dolan, Woehler knee variants including Haibach
Notch and statistics Neuber and Glinka local strain, design curves with runout handling, outlier screening
High temperature frequency-modified Coffin-Manson, time-fraction creep-fatigue
Provenance every method maps to its published source through the citations registry
Save and recall results persisted per test or material, recalled without recomputation, rendered as plots

The toolkit is general purpose and material agnostic. It focuses on strain-life and per-cycle evolution, which the established stress-based high-cycle libraries such as pyLife, py-fatigue, and fatpack do not cover. It is input compatible with their pandas data shapes.

Install

python -m venv .venv
.venv\Scripts\activate            # Windows
pip install -e ".[mcp,dev]"

Requires Python 3.11 or newer.

Quick start, library

import lcf

# fit strain-life constants from per-test reduced data, here SAE 1137
fit = lcf.fit_strain_life(
    total_strain_amp=[0.009, 0.007, 0.005, 0.003, 0.002, 0.00175],
    stress_amp=[553, 522, 464, 405, 350, 319],         # MPa, half-life
    reversals=[4234, 7398, 14768, 77104, 437498, 3327958],
    E=208000,                                           # MPa
    min_plastic_strain=5e-4,   # exclude near-runout points from the plastic branch
)
print(fit.coffin_manson.eps_f, fit.coffin_manson.c)   # about 1.11, -0.62
print(fit.basquin.sigma_f, fit.basquin.b)             # about 1073 MPa, -0.084
print(fit.transition_reversals)                        # about 22,000 reversals

Quick start, MCP server

lcf-mcp                # runs the stdio MCP server
# or
python -m lcf

Register with Claude Code or Claude Desktop over stdio:

{ "mcpServers": {
    "lcf": { "command": "lcf-mcp" } } }

Documentation

  • docs/PHYSICS_REVIEW.md is the science-only physics record: every equation defined and cited, no software detail. docs/PHYSICS_REVIEW.pdf is the same content typeset with a reviewer sign-off table, the file to share with a materials scientist for review.
  • examples/ holds runnable scripts: a strain-life fit and a machine-style CSV ingestion.
  • docs/AGENT_USAGE.md describes the MCP tools and the compute, save, recall pattern for AI agents using the toolkit.
  • CHANGELOG.md is the chronological log of changes.

Project layout

src/lcf/            core library and MCP server
tests/              unit tests including golden-value validation, SAE 1137
examples/           runnable example scripts
docs/               the physics PDF and the agent usage guide

Authors and citation

David Fieser and Hugh Shortt. Both authors contributed equally to this project. To cite the software, use the "Cite this repository" button on GitHub or CITATION.cff.

License

MIT. See LICENSE.

Project details


Download files

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

Source Distribution

lcf_strain_life-0.1.0.tar.gz (303.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lcf_strain_life-0.1.0-py3-none-any.whl (74.0 kB view details)

Uploaded Python 3

File details

Details for the file lcf_strain_life-0.1.0.tar.gz.

File metadata

  • Download URL: lcf_strain_life-0.1.0.tar.gz
  • Upload date:
  • Size: 303.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lcf_strain_life-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5125d8312dde8aef43261f2c7f3c434109aa80462e52ef13bb02510d4225d699
MD5 9578affbb7e37ac6514d54bdf4723f62
BLAKE2b-256 441f0b504779734faa077fa28c54cfaf7c23a64d78c03b7deb1f2c1c2b753727

See more details on using hashes here.

Provenance

The following attestation bundles were made for lcf_strain_life-0.1.0.tar.gz:

Publisher: publish.yml on dfieser/lcf-strain-life

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lcf_strain_life-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for lcf_strain_life-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ef82fcb7ddd5b7dee4d63d970d62d77941adf670b9c8d7619ff5e97da58a7574
MD5 a79e2f7d0efbc26897a82e3d29b1de87
BLAKE2b-256 78fccb230079f2c45cd97124d3c4270ff31d7c4b9112ec234ce047a8f913619b

See more details on using hashes here.

Provenance

The following attestation bundles were made for lcf_strain_life-0.1.0-py3-none-any.whl:

Publisher: publish.yml on dfieser/lcf-strain-life

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page