The cluster model
[1]. An N-body scheme: the mean strain of every inclusion is solved for, accounting for the pairwise interaction with each neighbor inside a cluster, on top of the interaction with the matrix.
Notation as on the conventions page; the interaction tensor
From the integral equation to a linear system
Take the matrix as reference,
and relating
The paper's own sign is the opposite one
[1] writes these two equations with a
Two identities connect this to the rest of the package:
the self term of the interaction family being the Hill tensor, and the far-field operator being the Hill tensor of the inclusion shape. For an isotropic matrix and spherical inclusions,
Families and the cluster
An infinite array is reduced to
The block system
Splitting
A single expression covers both the diagonal and the off-diagonal block, which is the practical dividend of the convention adopted here: in the opposite one the two cases carry opposite signs and have to be written separately.
The matrix localization follows from the strain average rule and the effective stiffness from the stress one:
The implementation flattens the system onto the Kelvin-Mandel basis — where
The Mori-Tanaka limit
Reduce the cluster to its own receiver. Every
which is the Mori-Tanaka system term by term.
An exact degeneracy, not an approximation
With cluster_radius = 0 the cluster model is MoriTanaka, as an algebraic identity — Appendix C of [1]. The test suite checks it to machine precision, for one family and for two, in elasticity and in conduction. It is the sharpest available statement that the assembly of
What the cluster buys
Since
the effective bulk modulus of a cubic array equals the Mori-Tanaka one exactly;
the effective shear moduli do not, and the array is cubic, not isotropic — the two shear constants differ;
for a statistically isotropic arrangement the orientation average of
vanishes and the model collapses back onto Mori-Tanaka. The cluster model is therefore a statement about anisotropic or specific arrangements, which is why it needs a ParticleAssemblyrather than anRVE.
Their own results, reproduced in scripts/91: the estimate is flat beyond