Repository navigation
Conversation
389f17f to
47f5ce0
Compare
1171b6f to
2e38cdd
Compare
|
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. short_fibre_composite — needs changes
|
47f5ce0 to
98a1951
Compare
2e38cdd to
3805b49
Compare
|
Rebased on the Eshelby-node refactor (#128): the fibre shape is an
Not added: an anisotropic-fibre test — the repo has no transversely isotropic linear material to feed it yet. |
98a1951 to
af8c49a
Compare
3805b49 to
7208e62
Compare
af8c49a to
d228631
Compare
7208e62 to
90289e1
Compare
|
Producer/consumer pass: the fibre is one |
d228631 to
1c1894f
Compare
90289e1 to
f444ebe
Compare
1c1894f to
d38f8e9
Compare
f444ebe to
ef6e567
Compare
d38f8e9 to
a894d13
Compare
5b014b8 to
7058b57
Compare
a894d13 to
03b3598
Compare
7058b57 to
557b163
Compare
03b3598 to
a22be6e
Compare
557b163 to
40204f6
Compare
a22be6e to
ed2da02
Compare
40204f6 to
d65215c
Compare
…ution Spheroidal fibres in an isotropic matrix with the second-order orientation tensor: Mori-Tanaka with the orientation-averaged dilute concentration, or the averaged unidirectional stiffness. Eshelby tensors per direction are cached for the matrix Poisson ratio. Report with aligned, injection-moulded and random states against the unidirectional composite and isotropy.
… in the fibre frame Both phases come in as produced properties (tangent, fraction, the fibre's Eshelby tensor along x1); the composite consumes them, forms the dilute concentration once in the fibre frame, rotates onto the quadrature directions with otimesu(R, R) fixed per direction, and produces the tangent and the two concentrations. The stress is a linear_stress on the tangent. No material_ref.
ed2da02 to
d855f53
Compare
d65215c to
02524f8
Compare
Closes #106. Part of the uvwmaterial port (#94); stacked on #132.
short_fibre_composite: Mori–Tanaka stiffness of fibres in an isotropic matrix averaged over the fibre orientation distribution, as a tangent producer overphasenodes (#130). The orientation enters as the second-order tensororientation[a11, a22, a33, a12, a13, a23]; the ACG distribution with that second moment (#132) gives the quadrature directions, Lebedevprecision(default 23) the weights. Two averagings as in uvwmaterial:concentration(the orientation average of the dilute concentration inside Mori–Tanaka) andstiffness(the average of the unidirectional Mori–Tanaka stiffness).Matrix and fibre are phases (
matrix,fibre: produced tangent and fraction; the fibre'seshelbyis aneshelby_spheroidoreshelby_cylinderalong x₁ consuming the matrix Poisson's ratio — #128, #130). The composite consumes their properties and nothing else. Everything is formed once in the fibre frame — the dilute concentration T₁ = (I + S₁ : Cₘ⁻¹ : (C_f − Cₘ))⁻¹, the unidirectional stiffness and (C_f − Cₘ) : T₁ — and rotated onto the directions withotimesu(R, R)fixed per direction at construction. One rank-4 inverse per update instead of one per direction, and a transversely isotropic fibre tangent given in the fibre frame is rotated with the rest. Outputstangent,concentration_matrix,concentration_fibre; the stress is alinear_stresson the tangent. The two fractions must sum to one.Tests (
test_short_fibre_composite, 6): aligned fibres equal the unidirectionalmean_field_tangentto 1e-12 for both averagings (tangent and concentrations); the isotropic orientation gives an isotropic tangent; Σ c A = I and thelinear_stressgives C : ε; stiffness ordering aligned > mostly aligned > random along x₁; a wrong orientation trace, averaging and Lebedev degree are rejected; JSON.Report
docs/materials/short_fibre_composite/report.json: aligned, injection-moulded (0.7, 0.25, 0.05) and random orientation on one point, the aligned case checked against the unidirectional composite.889/889 tests pass (GCC 14, reports on).
JSON input
New material type:
short_fibre_composite. Ajson_modeldocument that loads (theFromJsontest of the PR):{"materials": [ {"type": "external_strain_source", "name": "strain"}, {"type": "constant_scalar", "name": "Km", "value": 3.0}, {"type": "constant_scalar", "name": "Gm", "value": 1.0}, {"type": "constant_scalar", "name": "Kf", "value": 60.0}, {"type": "constant_scalar", "name": "Gf", "value": 30.0}, {"type": "isotropic_tangent", "name": "Cm", "K_source": "Km", "G_source": "Gm"}, {"type": "isotropic_tangent", "name": "Cf", "K_source": "Kf", "G_source": "Gf"}, {"type": "isotropic_moduli", "name": "moduli", "tangent_source": "Cm"}, {"type": "eshelby_spheroid", "name": "shape", "nu_source": "moduli", "nu_property": "poisson_ratio", "aspect_ratio": 10.0}, {"type": "constant_scalar", "name": "c", "value": 0.2}, {"type": "constant_scalar", "name": "cm", "value": 0.8}, {"type": "phase", "name": "fibres", "tangent_source": "Cf", "eshelby_source": "shape", "fraction_source": "c"}, {"type": "phase", "name": "matrix", "tangent_source": "Cm", "fraction_source": "cm"}, {"type": "short_fibre_composite", "name": "sf", "matrix": "matrix", "fibre": "fibres", "orientation": [0.8, 0.1, 0.1, 0, 0, 0], "averaging": "concentration", "precision": 23}, {"type": "linear_stress", "name": "composite", "tangent_source": "sf", "strain_source": "strain"} ]}The fibre's Eshelby node lies along x₁ (the fibre frame; a transversely isotropic fibre tangent is given in that frame);
orientation= [a11, a22, a33, a12, a13, a23] of the second-order orientation tensor;averagingconcentration|stiffness;precisiona Lebedev degree (3 … 23). Outputstangent,concentration_matrix,concentration_fibre.