Repository navigation
multifat criteria comparison (FIG. R02.2) and automatic refresh of code-generated figures - #57
Merged
Merged
Conversation
seancp (pinned a3ade97) computes everything: evaluate_fs_ext on a 3 degree hemisphere grid, the three seancp_fs_ext plane families with the restricted maximum, and the full_plane_scan reference, for the four largest Phase 3 underpredictions plus two controls. The sphere shows where the restricted search lies and where the true critical plane is; coinciding families are flagged by the generator. Tests reproduce the Phase 3 reference table. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KzHgFgeEYmpqcsxvvbphUy
- SeAn-CP paths (FIG. R02.1) sit in chapter 01, critical plane methods; sharCP master curves (FIG. R03.1) in chapter 02, welded structures. Bound through a 'figure' key in research_areas.json, full width after the chapter's illustration, instead of loose at the end of the page. - Repository cards for sharCP, its Zenodo dataset and SeAn-CP link their research context straight to the figure built from them. - Numbering follows the chapter illustration (R02.1, R03.1) and the Thesis sphere becomes FIG. T01, ending the clash with the R02-R05 chapter labels. - verify_research_atlas counts the chapter's own context disclosure, not the captions of embedded figures. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KzHgFgeEYmpqcsxvvbphUy
…resh FIG. R02.2 in Research chapter 01: 38 multiaxial fatigue criteria x 6 materials with life data, from multifat-pipeline --all. Colour is the share of assessment tests within +/-10 % of the load, or the mean load-equivalent error e_L = ln(1/s*); design points, run-outs and fatigue-limit-only workbooks are excluded. Source commits of every code-generated figure move to _data/figure_sources.yml. scripts/refresh_figures.py regenerates the figures whose source repository has new commits, and the weekly refresh-figures workflow opens a PR and dispatches build and preview. FIG. T01 is refreshed to multiaxial-fatigue 67f06ea (values unchanged). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KzHgFgeEYmpqcsxvvbphUy
andreachiocca
temporarily deployed
to
website-preview-AC
November 5, 2026 22:38 — with
GitHub Actions
Inactive
…FIG. R02.2 The figure caption now explains, step by step, what s* and e_L = ln(1/s*) mean, the sign convention, why the load scale is independent of the S-N slope and of the DP degree, what is counted, and the open independence caveat (multifat issue #14). Complexity facets come from the multifat registry: stress-only or strain inputs, master curve or native life law, and the declared material constants. They are shown beside the score as two dot columns and in the cell readout, not folded into a composite score. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KzHgFgeEYmpqcsxvvbphUy
andreachiocca
temporarily deployed
to
website-preview-AC
November 5, 2026 22:43 — with
GitHub Actions
Inactive
This branch was previously deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follows #56 (merged); the diff now contains only this step.
Preview (available once the preview check succeeds):
1. FIG. R02.2: criteria compared (step 5b)
A matrix of 38 multiaxial fatigue criteria × 6 materials with life data, produced by
multifat-pipeline --all(multiaxial-fatigue67f06ea). The caption presents it as the open benchmark of the multifat library, regenerated whenever the library changes.Rows are the criteria, grouped by family: critical plane, invariant, integral, energy.
Columns are the materials, ordered by number of tests:
Metric. The load-equivalent error is$e_L=\ln(1/s^\ast)$ , where $s^\ast$ scales the load history until the calibrated criterion predicts the observed life (
multifat.eval.load_error).Two views:
Interaction. Hovering a cell, or moving with the arrow keys, shows the criterion (with its DOI), its complexity facets, n, the shares within ±10/±20 % and the mean$e_L$ ± SD.
What$e_L$ measures
The caption has a disclosure, in EN and IT, that explains:
Complexity shown beside the score
Three facets are read from the multifat registry; none of them is a computed score:
*.The matrix shows the first two as dot columns ε and N; the readout lists all three. The composite ranking KPI is proposed in andreachiocca/multiaxial-fatigue#57 and belongs to multifat; the site will draw it once multifat computes it.
What is counted
Only assessment observations (Flag = 1, failures not used for calibration). Not counted:
Cells marked not applicable are combinations the pipeline does not run. RFB, for example, falls outside its validity range$0.577<t_{-1}/s_{-1}<0.866$ on GGG60 and AISI316L.
Generator and tests
scripts/generate_multifat_comparison.pyonly collects the pipeline outputs:Comparison/summary_error_stats_by_role.csv;comparison_capabilities.csv;tests/test_multifat_comparison.pychecks:Error_loadrestricted to assessment observations;2. Figures always up to date
_data/figure_sources.yml: one pinned commit per figure (T01, R02.1, R02.2, R03.1). Includes read the commit from this file, and each test checks that it matches its JSON.scripts/refresh_figures.py: compares each pin with the HEAD of the source repository. When the source has moved, it clones it, installs it, reruns that figure's generator and updates the pin..github/workflows/refresh-figures.yml:workflow_dispatch(withforce) andrepository_dispatch(research-code-updated);automation/refresh-figuresPR;build.ymlandpreview.ymlitself, because PRs opened withGITHUB_TOKENtrigger no workflows.5cd5124 → 67f06ea. Only the provenance changes; the values are identical.3. Other changes
figureslist in_data/research_areas.json, so chapter 01 holds R02.1 and R02.2.CLAUDE.mdanddocs/site-roadmap.mdare updated.Verification (local)
unittestpasses.🤖 Generated with Claude Code
https://claude.ai/code/session_01KzHgFgeEYmpqcsxvvbphUy