feat(data): add CFRP T700/epoxy and G10 composite laminates (#138, #139)#210
Merged
Conversation
Closes #138 (CFRP T700/epoxy laminate) and #139 (G10 glass-epoxy laminate). Both materials are anisotropic structural composites added to plastics.toml. The schema is scalar, so a single canonical orientation is reported per property and the orientation/V_f/temperature assumptions are documented in each per-property `_sources.note`. CFRP T700S/epoxy (`pymat.cfrp_t700`): - Toray T700S unidirectional ply at 60% fiber volume, Toray 2500 / 120 degC epoxy resin, room temperature, 0deg fiber direction. - Mechanical/thermal/electrical from the Toray T700S commercial data sheet (toraycma.com/toray-cfe.com, July 2024 release). - CTE is correctly negative (-0.38e-6 /K) along the fiber axis — typical for aligned PAN carbon fibers; transverse CTE (~+30e-6 /K) is not stored. G-10 / G-10CR (`pymat.g10`): - Mechanical (E_warp, sigma_t, sigma_c, nu, density) from Kasen et al. (1980), NBS characterization, manufacturer A production plant, 295 K, warp direction (DOI 10.1007/978-1-4613-9859-2_24, Adv. Cryogenic Eng. 26, 235). License `proprietary-reference-only`. - Thermal (k_warp, Cp, alpha_warp) computed from the NIST Cryogenic Material Properties G-10CR polynomial curve fits at T = 293 K (https://trc.nist.gov/cryogenics/materials/G-10%20CR%20Fiberglass%20Epoxy/). License `PD-USGov`. - Electrical (volume resistivity, breakdown voltage) from Kasen Table III. - G-10CR meets NEMA G-10 spec; values are canonical for both grades. Both entries are registered in `_CATEGORY_BASES["plastics"]` so `from pymat import g10, cfrp_t700` works through the lazy loader.
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.
Summary
Adds two anisotropic structural composite laminates to
src/pymat/data/plastics.toml. Both stored as scalars in the canonical orientation (warp / 0deg fiber direction) with V_f, resin, and orientation documented in each per-property_sources.note. Closes #138 and #139.pymat.cfrp_t700— Toray T700S UD ply, 60% Vf, Toray 2500 / 120 degC epoxy, RT, 0deg.pymat.g10— NEMA G-10 / G-10CR glass-cloth/epoxy, 295 K, warp direction.cfrp_t700(UD, 60% Vf, 0deg)g10(G-10CR, warp)For CFRP, transverse (90deg) modulus / strength / k / CTE are intentionally not stored: the schema is scalar and a single number cannot capture the ~3x quasi-iso vs UD-0deg gap or the +30e-6 /K transverse CTE. Notes in
_sourcesflag this for each affected property. For G-10, fill direction is ~0.65-0.80 of warp (Kasen Table I); normal-direction k and CTE differ from warp by ~0.7x and ~3.6x respectively, also documented in notes.CFRP CTE is negative (-0.38e-6 /K) along the fiber axis — this is correct, not a sign error. Aligned PAN carbon fibers contract on heating along the fiber axis; the data sheet quotes this directly.
Primary citations
proprietary-reference-only.PD-USGov.proprietary-reference-only.Assumptions / fields intentionally omitted
cfrp_t700._sources._default.note.youngs_modulus_curve/thermal_conductivity_curve(Schema: T-dependent property curves #148 T-dependent) added in this PR despite NIST polynomial availability — scope-limited to scalar entries; Schema: T-dependent property curves #148 curve adoption is a follow-up if needed.Test plan
python -c 'import tomllib; tomllib.loads(open("src/pymat/data/plastics.toml").read())'parses cleanlypython scripts/check_licenses.py— 7 TOMLs, no issuesuv run python -m pytest tests/test_toml_integrity.py tests/test_sources.py— 43 passeduv run python -m pytest(full suite) — 628 passed, 24 skippeduv run ruff check . && uv run ruff format --check .— cleanfrom pymat import g10, cfrp_t700; g10.density == 1.904; cfrp_t700.thermal_expansion == -3.8e-7; g10.source_of("thermal.thermal_conductivity")returns NIST PD-USGov source