The finite Eshelby cell with a corrected boundary condition
When a morphology has no closed-form Eshelby solution, its response can be computed on a finite cell — the inclusion inside a ball of matrix of radius
The finite-size bias
We want the response of an infinite medium, but we can only mesh a finite ball
but it clamps the perturbation radiated by the crack: the boundary is not allowed to move the way the infinite medium would let it. The apparent opening therefore carries a bias of order R/a between 10 and 40 before it can be trusted. 
Without the dipole term the boundary carries the remote field alone, and the ball has to be made large enough for the neglected term to fall below the target accuracy. With it, the boundary already knows what the infinite medium would do, and R/a = 5 suffices — the default radius_ratio of the finite-element backends (FE inclusions) — the price being that
The general fixed point
The exact infinite-medium solution is
whose far field, since
Imposing
Split by linearity into two boundary-value problems on the truncated cell:
Superposing and demanding that
which is linear in
Two declinations are implemented, and they differ only in what carries the polarization:
| solid inclusion | crack | cavity | |
|---|---|---|---|
| unknown | |||
| solves | 6 + 6, or 2 + 2 per Fourier mode | 3 + 3 | 6 + 6, or 2 + 2 and 1 + 1 per mode |
| closes on | |||
| used by | FEExcenteredSphere, FEAxiLayeredSpheroid | FEEllipticCrack | FESupershapePore, FEAxiSupershapePore |
In the axisymmetric case each fixed point lives inside one Fourier mode, since the dipole of a modal polarization radiates in the same mode — so
The dipole fields, in closed form
For an isotropic reference medium both Green functions are closed forms, so the boundary data costs nothing. With dipole_displacement_iso:
Written out for a symmetric moment, the gradient of the Kelvin solution is
and the transport one, with
These are green_gradient_iso and dipole_displacement_iso. They are also why the reference medium must be isotropic: for arbitrary anisotropy
The pore declination
A cavity is its own polarization source
The general fixed point above needs the polarization of the inclusion, and for a cavity that quantity is not something extra to compute: it is the answer. A cavity carries no stress, so
the very tensor being measured. So the two-stage construction — solve for
There is no inv(C₁) is meaningless for a cavity, and this is why FESupershapePore declares itself a heterogeneous inclusion and lets the package's exact identities collapse to
The two signs, and why they are not inconsistent
The failure mode is worth remembering, because it does not look like a sign error. A wrong sign leaves exactly twice the truncation bias instead of none — the correction is applied backwards, so it adds what it should have subtracted. The result still converges under refinement, just to the wrong place, and only a radius sweep exposes it.
What is solved, and on what volume
Zero traction on the cavity wall in elasticity, zero normal flux in transport. Nothing is meshed inside: the cell is a shell of matrix between the shape and the outer sphere. Two consequences the implementation leans on — the stress-side localization is identically zero, so gate B is served by one tensor rather than two; and the normalizing volume is the curved volume of the cavity, fe_cell_curved_volume, not the volume of the flat triangulation that bounds the mesh, which differs from it by a percent at usable refinements.
The diagnostic is
Or two dimensions, when the body is a solid of revolution
An octant divides the cost by eight. Separating the azimuth into Fourier modes divides it by orders of magnitude, and for an axisymmetric cavity that is the route FEAxiSupershapePore takes. Each mode is a problem on the meridian half-plane, and the modes do not couple, so a macroscopic loading excites exactly one of them:
| loading | mode | what it yields |
|---|---|---|
| 0 | a | |
| 1 | a scalar | |
| 2 | a scalar | |
| 0 / 1 | a scalar each |
Three from the
The fixed point lives inside one mode, since the dipole of a modal polarization radiates in the same mode, so
And the averaging changes. A cavity has no interior, so
There is a tempting way round it. The divergence identity on the matrix,
gives the cavity average from the volume average over the matrix plus an outer term that is analytic, the datum there being imposed. It reuses only machinery that already exists. It is also numerically hopeless: it obtains
One consequence of that route is worth keeping even after abandoning it: normalize by the volume the meshed wall actually encloses, not by the closed form. Integrating over one boundary and dividing by another's volume leaves a systematic error of the geometry's own size, and refining removes none of it because it shrinks both together.
The solid declination in two dimensions, and its region count
An N-layer spheroid is the solid declination of the same correction —
Nothing else changes. The same three modes, the same two families of boundary data, the same single factorization per mode — and the inclusion average runs over N regions instead of two, which is the only place the layer count appears at all. The dipole's moment is that of the outer boundary, the inclusion being seen from outside: on a multilayer, using an inner layer's volume gives an answer that is almost right.
Two exact answers, and why they are exact
Two numbers from this construction are worth reading as statements rather than as measurements.
Transverse isotropy holds to round-off. For an axisymmetric cavity,
Conduction on a sphere is exact, and does not improve with refinement. The exterior perturbation of a spherical cavity is a pure dipole, so the corrected boundary condition has no higher multipole left to truncate: the answer sits at
One eighth of the cell
Whenever the three coordinate planes are mirror planes of the shape — the condition has_coordinate_mirrors records, weaker than cubic symmetry and satisfied by both shipped families — the cell is invariant under the group
Each Kelvin load case is an eigenvector of that group: writing
| condition | pinned | |
|---|---|---|
| symmetry | the normal displacement | |
| antisymmetry | the tangential ones |
with the complementary tractions vanishing of their own accord. In transport,
The dipole correction obeys the same law, and that is what makes the whole scheme compatible with an eighth of the cell rather than only its uncorrected part. From the closed forms above,
One trap, and it is not a factor of eight. Reflecting the surface integral over the eight octants gives
so the components whose parity differs from the load case cancel between octants rather than vanishing in each. They are not small in
The crack declination (3 + 3)
The crack radiates as an elastic dipole
A displacement discontinuity
with cod_tensor uses. The field it generates is that dipole contracted with the gradient of the Green function, so the correct far field is
The idea of [68] is to put that second term into the boundary data.
Closing the loop
The dipole intensity
| Family | Boundary condition | Yields |
|---|---|---|
| traction, | columns of | |
| dipole, unit intensity | columns of |
so the infinite-medium COD tensor follows in one step — no iteration:
What is solved for a crack
Pure linear elasticity,
Per evaluation: one assembly and one Cholesky factorization of the free-free block, reused for all six right-hand sides. The mean opening is then measured as a surface integral of the jump over each lip, with no assumption on the opening profile: