API — LayeredSpheroid

layer_count, layer_modulus, layer_interface and layer_volume_fraction are shared generics extended from LayeredSpheres — see API — LayeredSphere for their docstrings; they apply unchanged to LayeredSpheroid.

MeanFieldHom.LayeredSpheroidsModule
MeanFieldHom.LayeredSpheroids

Isotropic n-layer confocal spheroidal composite inclusion (core + concentric confocal shells), conduction only (thermal / electric / Darcy — no elastic counterpart: the harmonic solution of Barthélémy & Bignonnet, IJES 2020, is specific to the scalar Laplace equation and does not carry over to the vector elastic problem). Public entry points: LayeredSpheroid, layered_spheroid_from_fractions.

Like LayeredSphere, a composite spheroid has no Hill tensor — it plugs into the mean-field schemes through its volume-averaged concentration (gradient/flux) tensors, assembled layer by layer via a confocal spheroidal-harmonic transfer-matrix recurrence (conductivity.jl) instead of the sphere's simple 2×2 state-vector propagation. Perfect (PerfectInterface), Kapitza (KapitzaInterface, resistance) and surface-conductive (SurfaceConductiveInterface, conductance) interfaces — reused from LayeredSpheres — couple different harmonic degrees, unlike the sphere, requiring the truncated series machinery of legendre.jl / coupling.jl.

MeanFieldHom.LayeredSpheroids.LayeredSpheroidType
LayeredSpheroid{T, N, Q, Cs, Is} <: AbstractLayeredInclusion{3, T}

Isotropic N-layer confocal spheroidal composite inclusion (core + concentric confocal shells), conduction only (no elastic counterpart — see the LayeredSpheroids module docstring). Type parameters:

  • T — element type of the geometric scalars (radii, focal distance).
  • N — number of layers (≥ 1).
  • Q — element type of the confocal parameter q: T for prolate, Complex{T} for oblate (the complex substitution c → -i c̄, q → i τ).
  • Cs, Is — concrete types of the moduli / interfaces tuples.

Use the keyword constructor LayeredSpheroid(axis_radii, disk_radii, moduli; interfaces, Nseries, axis) for the common case, or layered_spheroid_from_fractions to specify layers by volume fraction.

MeanFieldHom.LayeredSpheroids.layered_spheroid_from_fractionsFunction
layered_spheroid_from_fractions(ω, outer_axis_radius, layer_fractions, moduli;
                                 interfaces, Nseries = 5, axis = (0., 0., 1.))

Convenience constructor specifying layers by volume fraction: build an N-layer confocal spheroid of given outer aspect ratio ω (> 1 prolate, < 1 oblate) and outer axis semi-axis outer_axis_radius, with each layer occupying the prescribed fraction of the total volume (layer_fractions, normalized to sum 1, core first). Inner confocal parameters are found by bisection on the volume relation V(q) ∝ |q(q²-1)| (eq:xLeg / spheroid_volume).

MeanFieldHom.LayeredSpheroids.spheroid_state_sequenceFunction
spheroid_state_sequence(s, k₀, trans) -> Vector{Vector}

Series coefficient vectors Xℓ = [Aℓ; Bℓ] (eq:AlBlXl), ℓ = 1, …, N+1 (the (N+1)-th being the matrix), for the axial (trans = false) or transverse (trans = true) problem in an isotropic matrix k₀. B₁ = 0 (core regularity, eq:axiBCbi) and A_{N+1} = (±1, 0, …, 0) (unit remote field, + axial / transverse, eq:axiBCai/eq:transBCai) are imposed exactly.

MeanFieldHom.LayeredSpheroids.spheroid_ba_ratiosFunction
spheroid_ba_ratios(s, k₀) -> (ba_axial, ba_trans)

The two ratios b^0_{N+1,1}/a^0_{N+1,1} and b^1_{N+1,1}/a^1_{N+1,1} (eq:axiasb/eq:transasb) driving the volume-averaged concentration tensors. Kept in their native (possibly complex, for the oblate substitution q = iτ) type — casting to real is only valid on the FINAL shape-function product (ba · 𝒯/𝒰(q_N), done in spheroid_gradient_gradient / spheroid_flux_gradient / _spheroid_concentration), never on ba alone.

MeanFieldHom.LayeredSpheroids.get_layerFunction
get_layer(s::LayeredSpheroid, q) -> Int

Index of the layer whose confocal range (q_{k-1}, q_k] contains q (1, …, N), or N+1 if q lies in the surrounding matrix (|q| > |q_N|).

MeanFieldHom.LayeredSpheroids.local_temperatureFunction
local_temperature(s, k₀, q, p, φ; H_axial = 1.0, H_trans = 0.0) -> T

Temperature at the spheroidal point (q, p, φ) (own frame) under a remote gradient H_axial·axis + H_trans·ê₁ (superposition of the axial and transverse canonical problems, eq:Taxi/eq:Ttrans).

MeanFieldHom.LayeredSpheroids.local_fluxFunction
local_flux(s, k₀, q, p, φ; H_axial = 1.0, H_trans = 0.0) -> (u₁, u₂, u₃)

Heat/mass flux u = -k(x)·∇T at (q, p, φ) (own frame), k(x) the conductivity of the layer containing the point (or k₀ outside the spheroid).

MeanFieldHom.LayeredSpheroids.coupling_matricesFunction
coupling_matrices(q, Nseries; method = :quadrature) -> (I, J, K, L)

The four Nseries × Nseries interface coupling matrices at confocal parameter q (real for prolate, q = iτ for oblate), restricted to the odd degrees 1, 3, …, 2·Nseries-1 (index r ↔ degree 2r-1).

method = :quadrature (default) integrates the paper's closed-form definitions directly (stable in Float64); method = :series uses the BigFloat monomial-coefficient summation of the original implementation (see the module docstring).

MeanFieldHom.LayeredSpheroids.legendre_oddFunction
legendre_odd(kind::Symbol, x, Nseries::Int) -> (vals, derivs)

Values and derivatives of the requested Legendre kind at the Nseries ODD degrees 1, 3, …, 2·Nseries − 1, as length-Nseries Vectors (index r ↔ degree 2r − 1).

kind ∈ (:P0, :Q0, :P1, :P1p, :Q1):

  • :P0Pₙ(x) (m=0, any branch)
  • :Q0Qₙ(x) (m=0, q branch, |x|>1)
  • :P1Pₙ¹(x) (m=1, q branch, |x|>1)
  • :P1pPₙ¹(x) (m=1, p branch, |x|≤1)
  • :Q1Qₙ¹(x) (m=1, q branch, |x|>1)