Layered spheroid — confocal harmonic series
Before this page
Layered sphere, whose transfer-matrix recurrence and interface models are extended here to confocal spheroids, and The Eshelby inclusion problem §3 for the conduction form of the inclusion problem.
LayeredSpheroid is an
On a sphere an imperfect interface acts on each harmonic degree independently; on a spheroid it couples them. The sphere's
The elastic problem is on its own page
The axisymmetric elastic case is solved in The elastic confocal spheroid, on the same chart and reusing the same Legendre machinery. It was never barred by the method being tied to the scalar Laplace equation — Barthélémy and Bignonnet (2020) say the opposite, that they imported the transfer-matrix formalism from elasticity, following Hervé and Zaoui (1993) and Hervé-Luanco (2014).
What genuinely does not carry over is geometric, and it changes the shape of the answer. Concentric spheres are homothetic, so one harmonic degree never talks to another; confocal spheroids are not, and the metric
1. Confocal spheroidal coordinates
Prolate spheroidal coordinates
with
Confocality is a real constraint, and it has a visible consequence: since
Oblate spheroids (
LayeredSpheroid exploits this directly: the confocal parameter T for a prolate spheroid and Complex{T} for an oblate one, and every downstream routine — Legendre recurrences, coupling integrals, transfer matrices — is written generically over Q <: Number. No branch is ever taken on prolate versus oblate.
2. The chart, checked rather than quoted
Everything above is Appendix A of Barthélémy and Bignonnet (2020). Rather than transcribe it, the block below rebuilds it: TensND ships the prolate spheroidal chart as a symbolic coordinate system, so the metric, the frame and the harmonicity of the series are derived at documentation-build time from the position map alone.
using TensND, SymPyPythonCall
Spheroidal = coorsys_spheroidal()
ϕ, p, q = get_coords(Spheroidal)
c = symbols("c", positive = true)
position_vector(Spheroidal) # the position map (A.1)The Lamé coefficients (χ_ϕ, χ_p, χ_q) come out of the chart, not out of the paper:
lame_coefficients(Spheroidal)(c*sqrt(1 - p^2)*sqrt(q^2 - 1), c*sqrt(-p^2 + q^2)/sqrt(1 - p^2), c*sqrt(-p^2 + q^2)/sqrt(q^2 - 1))and they are (A.6). The check compares the squares — SymPy will not recombine
χ = lame_coefficients(Spheroidal)
χ_ref = (
c * sqrt(1 - p^2) * sqrt(q^2 - 1),
c * sqrt((q^2 - p^2) / (1 - p^2)),
c * sqrt((q^2 - p^2) / (q^2 - 1)),
)
simplify.(χ .^ 2 .- χ_ref .^ 2)(0, 0, 0)The volume element (A.7), dΩ = χ_ϕ χ_p χ_q dϕ dp dq = c³ (q² − p²) dϕ dp dq, follows immediately and does reduce:
simplify(prod(χ) - c^3 * (q^2 - p^2))and the orthonormal frame (e_ϕ, e_p, e_q) of (A.6) is the chart's own:
normalized_basis(Spheroidal)Why the series is a series of harmonics
The whole construction rests on one fact: the products
Δ = [
(n, m, simplify(laplacian(
sympy.assoc_legendre(n, m, p) * sympy.assoc_legendre(n, m, q) * cos(m * ϕ),
Spheroidal,
)))
for (n, m) in ((1, 0), (2, 0), (3, 0), (1, 1), (2, 1), (3, 1), (2, 2), (3, 2))
]8-element Vector{Tuple{Int64, Int64, SymPyCore.Sym{PythonCall.Py}}}:
(1, 0, 0)
(2, 0, 0)
(3, 0, 0)
(1, 1, 0)
(2, 1, 0)
(3, 1, 0)
(2, 2, 0)
(3, 2, 0)Orders 0 and 1 are what conduction uses — order 2 is for later
A remote gradient excites only legendre.jl implements exactly those two. legendre.jl is then three seed tables — the stability machinery below is order-generic and comes for free. See the roadmap's checklist.
3. Boundary value problem
where
| problem | remote gradient | order | degrees |
|---|---|---|---|
| axial | odd only | ||
| transverse | odd only |
An arbitrary remote gradient follows by rotation, the geometry being axisymmetric.
4. Interface conditions and the coupling matrices
Three interface types are available. Writing
| type | condition | MeanFieldHomogenization | effect on degrees |
|---|---|---|---|
| perfect | PerfectInterface | diagonal | |
| LC (low-conducting) | KapitzaInterface(ρ) | couples all degrees | |
| HC (highly-conducting) | SurfaceConductiveInterface(kₛ) | couples all degrees |
The LC model is the Kapitza thermal contact resistance (Kapitza, 1941; Benveniste and Miloh, 1986); the HC model is a highly conducting surface layer (Miloh and Benveniste, 1999). Both are the imperfect-interface models used by Kushch et al. (2015) and Barthélémy and Bignonnet (2020).
Sign convention
echoes interf_prop values for the low-conducting case.
The coupling arises because a non-spherical interface mixes harmonic degrees. Four matrices carry it, defined as integrals over the interface (Barthélémy and Bignonnet, 2020):
and similarly coupling_matrices.
5. Transfer matrices
Truncating at
where
Accumulating spheroid_state_sequence computes, and what local_temperature, local_gradient and local_flux reconstruct pointwise from.
6. Volume-averaged concentration tensors
For homogenization only two order-2 tensors are needed. They are defined by the volume averages over the whole particle
TensND.TensTI{2,3}.
Remarkably, they depend on the whole layered structure only through the single ratio
The coincidence
These are gradient_gradient_concentration and flux_gradient_concentration.
Like LayeredSphere, a layered spheroid has no Hill tensor — it is not a homogeneous ellipsoid, so
Equivalent particle
Barthélémy and Bignonnet (2020) (§4) define the equivalent particle: the homogeneous, perfectly bonded spheroid of the same shape that homogenizes identically. Its conductivity is
with scripts/34_spheroid_equivalent_conductivity.jl.
When every interface is perfect, only degree 1 survives, the coupling matrices drop out, and tens_IA and hill_tensor for a single spheroid. That closed form is used as an exact oracle in test/LayeredSpheroids/test_conductivity.jl.
7. Numerical precision: quadrature, not the monomial series
The reference implementation of Barthélémy and Bignonnet (2020) computes
(closed form via mpmath arbitrary precision once
MeanFieldHomogenization integrates the definitions above directly by Gauss quadrature (QuadGK), evaluating
coupling_matrices(q, Nseries; method = :quadrature) # default
coupling_matrices(q, Nseries; method = :series) # BigFloat validation oracleThe integrand is smooth and bounded on Float64 quadrature reaches machine precision for any BigFloat port of the monomial series is kept as an independent oracle (test/LayeredSpheroids/test_coupling.jl, scripts/33_spheroid_series_convergence.jl).
8. Integration with the schemes
LayeredSpheroid is wired into the schemes exactly like LayeredSphere (see Layered sphere and src/LayeredSpheres/scheme_integration.jl for the elastic and conduction analogues): it declares is_homogeneous_inclusion = false and overrides gradient_gradient_concentration, flux_gradient_concentration and property_contribution. Every dilute, Mori–Tanaka, self-consistent, Maxwell and differential kernel then routes through the confocal transfer-matrix solution with no change to src/Schemes/.
Where to go next
The elastic problem on the same chart is solved on the next page, The elastic confocal spheroid, where the coupling between degrees appears at every interface and the transfer matrices of §5 give way to one global system. The conduction solution of this page is put to work in three tutorials.
The n-layer confocal spheroid: geometry and effective conductivity — building a spheroid and the effective conductivity of a composite.
Imperfect interfaces: what they do to the local fields — the temperature and the flux reconstructed pointwise across a Kapitza and a highly conducting interface.
Highly conducting interfaces: equivalent conductivity vs. aspect ratio — the equivalent conductivity swept over the aspect ratio.