Skip to content

Cure-dependent inclusion fractions and chemical shrinkage as an eigenstrain - #137

Draft
petlenz wants to merge 1 commit into
feature/kamal-sourour-ratefrom
feature/curing-eigenstrain
Draft

petlenz wants to merge 1 commit into
feature/kamal-sourour-ratefrom
feature/curing-eigenstrain

Conversation

@petlenz

@petlenz petlenz commented Oct 16, 2026 •

Copy link
Copy Markdown
Member

Closes #115. Part of the uvwmaterial port (#94); stacked on #136.

uvwmaterial's eigenstrain_curing_material_base and degree_of_cure_dependent_material become two wirings rather than classes:

  • Chemical shrinkage ε_ch = β ξ I is thermal_eigenstrain with the degree of cure as its scalar source ("temperature_source": "cure", "alpha": beta, reference 0); the integrator's state is a history like a temperature source's. Nothing new to port; the test pins it.
  • Cure-dependent phase fractions: a phase reads its fraction from any producer (fraction_source / fraction_property, e.g. "cure", "state" of a scalar_stepper or a weighted_sum output); its volume_fraction output follows that property every update, scalar_complement_weight produces the matrix fraction 1 − c, and mean_field_tangent reads both. Cure-dependent moduli already go through weighted_sum.

Tests (test_curing_eigenstrain, 3): the phase fraction follows its source and the Mori–Tanaka bulk modulus follows the analytic formula at each value; constrained shrinkage gives −3Kβξ; fraction_source from JSON.

No report yet (time-driven point, #126).

924/924 tests pass (GCC 14, reports on).

@petlenz

petlenz commented Oct 17, 2026

Copy link
Copy Markdown
Member Author

Review findings (design, tmech expressions instead of component loops, modern C++, comments, tests, correctness). Severity: must = wrong result, hang, build break or unreachable feature; should = design, duplication, accuracy; nit = style.

curing fractions / chemical shrinkage — ready with one should

  • [should] volume_fraction stays required with fraction_source (dummy in JSON, can disagree until first update) → default 0 / exactly one of the two.
  • [nit] sourced fraction never range-checked; pre-existing direction loop.

@petlenz

petlenz commented Oct 17, 2026

Copy link
Copy Markdown
Member Author

Rebased on the Eshelby-node refactor (#128/#131): the curing fixture and the JSON test wire an eshelby_sphere node to the matrix and the inclusion names it; fraction_source is merged into the new inclusion. The volume_fraction-beside-fraction_source finding is still open.

@petlenz
petlenz force-pushed the feature/kamal-sourour-rate branch from 316263a to 9928a69 Compare October 17, 2026 15:57
@petlenz
petlenz force-pushed the feature/curing-eigenstrain branch from bd0004d to 6eff511 Compare October 17, 2026 16:05
@petlenz
petlenz force-pushed the feature/kamal-sourour-rate branch from 9928a69 to 971cf5a Compare October 17, 2026 17:04
@petlenz
petlenz force-pushed the feature/curing-eigenstrain branch from 6eff511 to 30fbcba Compare October 17, 2026 17:12
@petlenz

petlenz commented Oct 17, 2026

Copy link
Copy Markdown
Member Author

Producer/consumer pass: the curing inclusion gives its fraction only through fraction_source: "cure::state" (no dummy volume_fraction any more), the shrinkage coefficient comes through alpha_source.

@petlenz
petlenz force-pushed the feature/kamal-sourour-rate branch from 971cf5a to 6966212 Compare October 17, 2026 21:36
@petlenz
petlenz force-pushed the feature/curing-eigenstrain branch from 30fbcba to bc568df Compare October 17, 2026 21:36
@petlenz
petlenz force-pushed the feature/kamal-sourour-rate branch from 6966212 to 5463017 Compare October 17, 2026 22:46
@petlenz
petlenz force-pushed the feature/curing-eigenstrain branch from bc568df to f964442 Compare October 17, 2026 22:46
@petlenz
petlenz force-pushed the feature/kamal-sourour-rate branch from 5463017 to 8558f90 Compare October 18, 2026 12:32
@petlenz
petlenz force-pushed the feature/curing-eigenstrain branch from f964442 to a4bd728 Compare October 18, 2026 12:51
@petlenz
petlenz force-pushed the feature/kamal-sourour-rate branch from 8558f90 to e2a4434 Compare October 18, 2026 13:38
@petlenz
petlenz force-pushed the feature/curing-eigenstrain branch from a4bd728 to 4c1aac1 Compare October 18, 2026 13:38
@petlenz
petlenz force-pushed the feature/kamal-sourour-rate branch from e2a4434 to 39adb32 Compare October 18, 2026 18:55
@petlenz
petlenz force-pushed the feature/curing-eigenstrain branch from 4c1aac1 to 93a893f Compare October 18, 2026 18:56
@petlenz
petlenz force-pushed the feature/kamal-sourour-rate branch from 39adb32 to 2afbfb9 Compare October 18, 2026 20:03
@petlenz
petlenz force-pushed the feature/curing-eigenstrain branch from 93a893f to 8a07c8c Compare October 18, 2026 20:03
@petlenz
petlenz force-pushed the feature/kamal-sourour-rate branch from 2afbfb9 to e7d2ffe Compare October 18, 2026 20:22
@petlenz
petlenz force-pushed the feature/curing-eigenstrain branch from 8a07c8c to e1819c4 Compare October 18, 2026 20:22
inclusion takes a fraction_source ("material::property") so the volume
fraction can follow the degree of cure; the chemical shrinkage
beta xi I is thermal_eigenstrain with the cure state as its source.
@petlenz
petlenz force-pushed the feature/kamal-sourour-rate branch from e7d2ffe to 9037f62 Compare October 19, 2026 04:07
@petlenz
petlenz force-pushed the feature/curing-eigenstrain branch from e1819c4 to 9af23f2 Compare October 19, 2026 04:07
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.

1 participant