Roadmap
What is left to do, and — for the two areas where the boundary is subtle — exactly which pieces of a cited paper are and are not implemented. What the package already does is described in the manual and the theory pages.
Open
Extended-COD crack model in conduction: resistive cracks (linear-spring analog) and conductive cracks (elastic-membrane analog), via a tensorial conduction COD.
Multi-layer extensions: coated cylinders, anisotropic per-layer moduli, and an analytic excentered sphere (only the finite-element route reaches that morphology).
Laminate extensions: viscoelastic interface laws (the interface types carry
Numberfields today, so an ageing interface needs a different carrier), andHomogenizedinside an ALV chain (the inner result would have to be re-expressible as aViscoLaw).PairwiseDistribution(Willis 1982) envelope for the PCW scheme.Native Anderson acceleration with memory > 1, replacing the current
AndersonDefault(currently Picard with relaxation, memory = 1).Optional structured
TensTI{4,T,8}fast path for the ALV TI schemes.Laplace-Carson viscoelasticity (see the theory and the model manual):
anisotropic tensor pairings. Only
IsoRheologyexists; a transversely isotropic model would need six scalar channels and the correspondingTensTIassembly.ageing models in the catalog.
LogarithmicCreepis the non-ageing skeleton of a law that is normally written with age-dependentE,Candτ; expressing that family would need a second, two-argument interface.
Finite-element coupling (see Finite-element coupling):
the consolidation column of [71] § 3.1, models M1/M2/M3 — the case where a family actually closes during the loading. Nothing new is needed for it: it is a driver, not a capability.
the paper's self-consistent permeability, whose matrix concentration factor (order-2 Hill tensor of the effective medium) the simpler estimate in
fracture_permeabilityomits. It is worth ≈ 55× on the ARMA microstructure — the well test quantifies exactly what it costs.drivers for Gridap, FEniCSx and an Abaqus-shaped UMAT.
Finite-element inclusions, behind the
FEBackendcontract (see FE inclusions):an anisotropic reference medium. The corrected boundary data needs
, which green_function_anisodoes not expose — the Pan-Chou closed form in the transversely isotropic case, or a differentiated Barnett-Willis integral, would.more than one inclusion, or a non-spherical envelope, in the axisymmetric cell.
transport for the crack, the 3 + 3 declination being elastic only.
solid supershape inclusions, which would need the inclusion meshed too and would enter gate B with two measured tensors.
Neural-surrogate inclusions (see Neural-surrogate inclusions):
a
_reference_mediumforStrainLocTI/StressLocTI, deliberately absent because a heterogeneous morphology's reference has to be built from contrast features and guessing it would train on corrupted labels.an anisotropic reference medium, which needs a feature set describing it.
The elastic layered spheroid — what is left
The derivation, which is not in the literature, is on its theory page; this section is what remains of the module and the traps that apply to it.
What remains
Pointwise fields. The solver returns harmonic amplitudes, so
u,εandσat a point are a matter of summing modes — the conduction side already offers that throughlocal_temperatureand its siblings.An arbitrary axis. The elementary problems are written about
ê₃;spheroid_strain_concentrationrefuses a tilted spheroid rather than rotating the result for you.A compliance-side contribution tensor, the twin of
stiffness_contribution. The stress-side localization is what it needs:strain_strain_locreaches the schemes,stress_strain_locdoes not exist for aLayeredSpheroid, and the genericcompliance_contributionis written in terms of it.
What will not happen
Imperfect interfaces do not fit this formulation, and it is worth not attempting them: a uniform spring or membrane law puts an odd power of the metric factor
The four traps, each of which shipped once
Never run
Qₙupward.Qₙis the minimal solution of the Legendre three-term recurrence: upward, the seed's rounding error picks up the dominantPₙand is amplified byρ^{2n},ρ = |x + √(x²−1)|. Measured against the same recurrence at 600 bits, an upwardQ₁₅(5)was wrong by a relative1.3e13. Uselegendre_odd, which already chooses the direction fromρ— and note the choice runs both ways: Miller's downward recurrence is the wrong answer whenρ ≈ 1(a nearly degenerate spheroid), where it needs thousands of steps and upward loses nothing. Forcing Miller there returned aQgood to only2e-7.Impose regularity, never recover it. In the matrix every growing amplitude above the degree carried by the remote field vanishes identically. Recomputing that block through the layer transfer leaves the linear solve's
O(1e-17)residue, andP_{2r-1}(q) ~ q^{2r-1}amplifies it past1e40a few hundred radii out. Elasticity makes this worse, not better: Papkovich–Neuber carries a scalar and a vector potential, so there are several families of growing modes to zero out rather than one. The same applies at the core, where the singular amplitudes must be written down as exact zeros — see_shear_amplitude_seqinLayeredSpheres.An oblate spheroid carries a complex
q. Anything that tests, branches on, or divides by a coordinate must cope withComplex. Two live examples: a guard writtenis_hard_numeric(typeof(q))refuses every oblate particle, because it isabs(q)that is ordered; andz / (Inf + 0im)isNaN + NaN imwhere the real division would have given0, which turned every on-axis evaluation into a silentNaN.The chart is singular on the revolution axis. At
|p| = 1,h_pis infinite andh_φvanishes. Every0/0the naive expressions carry there turned out to be removable, and removable exactly — no asymptotics — once the conventionP¹ₙ = -p̄ P′ₙis used to cancel thep̄ofh_φand the Legendre equation is used to eliminateP″ₙ. Expect the same in elasticity, and expect the same trap: the naive form returns a plausible-lookingNaNor, worse, a finite number. The check that catches a wrong removal is that the field on the axis must not depend on the azimuthφ, which is undefined there — a wrong coefficient makes it depend on how the point was addressed.
How to validate it
The conduction module was validated against the C++ reference on effective properties and passed — while carrying traps 1 and 2. Integral quantities sample the field only near the particle and at low truncation; they do not certify the field that produces them. So:
check the pointwise field, not only the averages;
check it far from the particle, where the growing modes bite;
check that the answer does not depend on
Nseries— that single test would have caught both trap 1 and trap 2 at once;reduce to the closed form in every degenerate limit, including extreme aspect ratios (a 1:60 flat disc is where
ρ → 1and the recurrence choice flips);validate special functions against an outside reference. Evaluating the new algorithm in wider precision only confirms itself; the reference used in
test/LayeredSpheroids/test_legendre_stability.jlis the original upward recurrence at 600 bits, where the instability does not bite.
N-body schemes — remaining pieces
This is the detail of what the references of the equivalent inclusion method and of the cluster model contain and the implementation does not. See the theory page for the shared interaction kernel.
Plane-strain elasticity with an anisotropic reference, which needs the Stroh formalism rather than the Barnett line integral of
Core/green_aniso.jl, and is refused with a message naming the limitation.The cost of the anisotropic operator. It is a quadrature differentiated twice with forward-mode AD: ~1.5 ms per interaction tensor against ~0.6 µs for the isotropic closed form. Deriving the second gradient of the line integral analytically (the classical route) would recover most of that, and would matter for assemblies of more than a few dozen particles in an anisotropic reference.
Polarization orders
p ≥ 1([2]), which need the influence pseudotensors of their Appendix C — not tensors, with their own change-of-basis machinery, generated by the authors with a computer algebra system. Onlyorder = 0is implemented; a higher order raises an error.Their Table 2 (polydisperse spheres at
φ = 0.45in a spherical SVE) needs a polydisperse close-packing generator;random_assemblyis monodisperse.The slender-fiber specialization of Martin et al. (2023): the interaction integrals are reachable through the
:quadratureback-end, but the axial polynomial enrichment and the finite-element self-influence coefficients are not implemented, andCylinderis not accepted by the pair kernel.