Skip to content

docs(data): MIL-HDBK-5J citations for aerospace alloys (#166)#205

Merged
gerchowl merged 2 commits into
mainfrom
feature/166-mil-hdbk-5j
May 6, 2026
Merged

docs(data): MIL-HDBK-5J citations for aerospace alloys (#166)#205
gerchowl merged 2 commits into
mainfrom
feature/166-mil-hdbk-5j

Conversation

@gerchowl
Copy link
Copy Markdown
Contributor

@gerchowl gerchowl commented May 6, 2026

Summary

Cite-only attachment of MIL-HDBK-5J (2003, PD-USGov) primary tables to existing aerospace alloy entries in src/pymat/data/metals.toml, per #166. No values changed; this PR only annotates existing values that already match MIL-HDBK-5J's primary design tables. The 1733-page handbook is freely available on everyspec.com (PD-USGov); MMPDS-02+ (Battelle commercial successor) remains off-limits per docs/data-policy.md.

Single room-temperature values only — no temperature curves (those ride the *_curve schema from #148, in a follow-up).

Per-material citations attached

Material key Properties cited MIL-HDBK-5J location Values added (Y/N)
stainless.s17_4PH mechanical.density, mechanical.tensile_strength, mechanical.yield_strength Table 2.6.9.0(b), p.2-197 (H900, S-basis, LT) N (annotated existing)
titanium.grade5 mechanical.density, mechanical.tensile_strength, mechanical.yield_strength Table 5.4.1.0(c1), p.5-54 (AMS 4928 bar, annealed, S-basis, L) N (annotated existing)
aluminum.a2024 mechanical.density Table 3.2.3.0(b1), p.3-69 N (annotated existing)
aluminum.a7075 mechanical.density, mechanical.youngs_modulus Table 3.7.6.0(b1), p.3-371 (T6/T62 sheet) N (annotated existing)

All citations use kind = "handbook", license = "PD-USGov", ref = "mil-hdbk-5j:p<page>". Each note records the spec/temper/condition, the table cell value (in original ksi units), the SI conversion, the basis (A/B/S/typical), and the verification date.

Materials NOT cited (and why)

Material key Reason
aluminum.a6061 / a6061.T6 strength Existing TOML yield=276 MPa, UTS=310 MPa are typical/AMS-minimum; MIL-HDBK-5J A-basis 6061-T6 sheet (Table 3.6.2.0(b1), p.3-264) is 36/42 ksi = 248/290 MPa. Mismatch — citing would be misleading.
aluminum.a7075.T6 / T73 strength Existing TOML 503/572 MPa (T6) and 434/505 MPa (T73) are typical/datasheet; MIL-HDBK-5J A-basis 7075-T6 sheet (Table 3.7.6.0(b1)) is 70/78 ksi = 483/538 MPa. Mismatch.
aluminum.a2024 strength TOML has no UTS/yield value. Per spec rule "never invent a value", left untouched.
15-5PH stainless No TOML entry exists. Per spec, no new materials in this PR (Phase 5).
Inconel 625, Inconel 718 No nickel.inconelXXX keys exist; nickel is pure Ni. Phase 5.
Magnesium AZ91 No magnesium category in metals.toml. Phase 5.
Beryllium No beryllium category. Phase 5.

MMPDS-02+ off-limits status

Already documented in docs/data-policy.md lines 97-99 (added under #199 / PR #202). CONTRIBUTING.md references docs/data-policy.md for off-limits sources (line 244-248). No edit needed in this PR.

Page-number verification

The 1733-page MIL-HDBK-5J PDF was downloaded from everyspec.com and inspected. Notable findings:

  • The issue's chapter map ("Ch3: Steels, Ch8: Aluminum") was inverted vs. actual MIL-HDBK-5J: Ch2=Steels, Ch3=Aluminum, Ch4=Magnesium, Ch5=Titanium, Ch6=Heat-resistant alloys, Ch7=Misc (incl. Beryllium).
  • Section numbers shifted between MIL-HDBK-5H (1998) and MIL-HDBK-5J (2003). In 5J: 2.6.7=15-5PH, 2.6.9=17-4PH, 3.7.6=7075 (5H had 3.7.4=7075). All page numbers in this PR refer to MIL-HDBK-5J 2003-01-31.
  • 17-4PH H900 sheet S-basis Ftu/Fty exactly match TOML (190/170 ksi → 1310/1172 MPa, TOML 1310/1170).
  • Ti-6Al-4V bar annealed S-basis L: Ftu=135 ksi=931 MPa (TOML 950 = conventional rounded), Fty=125 ksi=862 MPa (TOML 880 = same convention). Documented in citation note.

Judgment calls

  • 17-4PH condition: TOML doesn't tag a condition; the values match H900 (highest strength). Cited as H900; if a future PR adds H1025 or H1150 child nodes, those will need their own citations.
  • Ti-6Al-4V form: TOML 950/880 matches bar S-basis (931/862 rounded), not sheet A-basis (924/869). Cited as bar AMS 4928 annealed.
  • Aluminum strength fields: deliberately not cited. The existing values descend from datasheet/Aluminum Association references, not MIL-HDBK-5J primary tables. A future PR that wants MIL-HDBK-5J A/B-basis values should either replace the values (and re-cite) or add a child node like a6061.T6.mil_a_basis carrying the design allowable.

Test plan

  • python -c "import tomllib; tomllib.loads(open('src/pymat/data/metals.toml').read())" — TOML parses
  • python scripts/check_licenses.py — license gate passes (7 TOML files scanned)
  • uv run pytest tests/test_toml_integrity.py tests/test_sources.py -v — 43 passed
  • uv run pytest — 691 passed, 18 skipped
  • uv run ruff check . && uv run ruff format --check . — clean
  • Spot-check via Python: mat.stainless.s17_4PH.source_of("mechanical.tensile_strength") returns Source(kind="handbook", ref="mil-hdbk-5j:p2-197", license="PD-USGov"); same for titanium.grade5, aluminum.a7075, aluminum.a2024.

Closes #166.

Cite-only attachment of MIL-HDBK-5J (2003, PD-USGov) primary tables to
existing aerospace alloy entries in metals.toml, per #166. No new
materials, no new property fields, no temperature curves — single
room-temperature design values only, with verified page numbers.

Per-property `_sources` entries added (license="PD-USGov"):

- stainless.s17_4PH (H900 condition, sheet/strip/plate, S-basis):
  density, tensile_strength (190 ksi=1310 MPa), yield_strength
  (170 ksi=1172 MPa). Table 2.6.9.0(b), p.2-197.
- titanium.grade5 (Ti-6Al-4V bar AMS 4928, annealed, S-basis):
  density (0.160 lb/in^3=4.428 g/cm^3), tensile_strength
  (135 ksi=931 MPa, TOML 950 = conventional rounding),
  yield_strength (125 ksi=862 MPa, TOML 880 = same). Table
  5.4.1.0(c1), p.5-54.
- aluminum.a2024 (sheet/plate AMS 4037, T3/T351): density only
  (0.100 lb/in^3=2.768 g/cm^3). Table 3.2.3.0(b1), p.3-69.
- aluminum.a7075 (sheet/plate AMS 4045, T6/T62): density
  (0.101 lb/in^3=2.796 g/cm^3) and youngs_modulus
  (10.3e3 ksi=71.0 GPa). Table 3.7.6.0(b1), p.3-371.

UTS/yield citations were NOT attached for 6061-T6, 7075-T6, 7075-T73,
or 2024 strength fields because the existing TOML values are typical
or AMS-minimum datasheet numbers, not MIL-HDBK-5J A/B-basis design
allowables (off by 5-15%). Adding a misleading citation would be a
bug; per #166's "never invent a value" rule, those properties retain
the `_default` placeholder until a future PR aligns the values to a
specific MIL-HDBK-5J table cell or cites a different primary source.

Out of scope (no existing TOML entries — Phase 5 territory per #166):
15-5PH stainless, Inconel 625/718, magnesium AZ91, beryllium.

MMPDS-02+ off-limits status confirmed in docs/data-policy.md
(lines 97-99, added in #199/PR #202); no edit needed.

Page numbers verified 2026-05-07 against the official MIL-HDBK-5J PDF
(everyspec.com, MILHBK5J.pdf, 1733 pp.) — section numbers and page
numbers cross-checked against both the ToC and the actual section
bodies, since several sections shifted between MIL-HDBK-5H (1998)
and MIL-HDBK-5J (2003). Notably 5J's section 2.6.9 is 17-4PH and
2.6.7 is 15-5PH, while 5H assigned them differently.

Validation: TOML parses, license gate passes, tests/test_sources.py
+ tests/test_toml_integrity.py pass, full suite 691 passed/18 skipped,
ruff clean.

Closes #166.
@gerchowl gerchowl enabled auto-merge (squash) May 6, 2026 22:56
@gerchowl gerchowl merged commit 58719de into main May 6, 2026
19 checks passed
@vig-os-release-app vig-os-release-app Bot mentioned this pull request May 6, 2026
6 tasks
gerchowl added a commit that referenced this pull request May 6, 2026
Add two new entries to `src/pymat/data/metals.toml` under the existing
`[nickel]` family node, following the MIL-HDBK-5J citation pattern landed
in PR #205 (#166). Both alloys are aerospace-grade Ni-base superalloys —
625 (solid-solution strengthened, AMS 5599 sheet, annealed) and 718
(precipitation-hardened, AMS 5596 sheet, solution-treated and aged).

MIL-HDBK-5J (PD-USGov, 2003-01-31, everyspec.com PDF) primary tables:
- Inconel 625: §6.3.3 Table 6.3.3.0(b) p.6-35 — A-basis Ftu/Fty (L),
  density, E, Poisson, elongation. AMS 5599 sheet/plate, annealed.
- Inconel 718: §6.3.5 Table 6.3.5.0(b) p.6-52 — A-basis Ftu/Fty (LT),
  density, E, Poisson, elongation. AMS 5596 sheet/plate, STA per spec.

Special Metals Inc. public technical bulletins (proprietary-reference-only,
single-value extraction permitted by docs/data-policy.md):
- SMC-063 (INCONEL alloy 625) — melting range, k, Cp, alpha, resistivity
- SMC-045 (INCONEL alloy 718) — melting range, k, Cp, alpha, resistivity

`_CATEGORY_BASES["metals"]` updated so `from pymat import inconel625`
and `inconel718` resolve via lazy-load.

Closes #125, #126.
@vig-os-release-app vig-os-release-app Bot mentioned this pull request May 7, 2026
7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Integrate MIL-HDBK-5J (public domain) — aerospace alloy mechanicals

1 participant