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.LayeredSpheroids — Module
MeanFieldHom.LayeredSpheroidsIsotropic 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.LayeredSpheroid — Type
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 parameterq:Tfor prolate,Complex{T}for oblate (the complex substitutionc → -i c̄,q → i τ).Cs,Is— concrete types of themoduli/interfacestuples.
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_fractions — Function
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.layer_q — Function
layer_q(spheroid, k) -> QConfocal parameter q_k of the outer boundary of layer k.
MeanFieldHom.LayeredSpheroids.layer_semiaxes — Function
layer_semiaxes(spheroid, k) -> (axis, disk)Real (axis, disk) semi-axes of the outer boundary of layer k.
MeanFieldHom.LayeredSpheroids.outer_semiaxes — Function
outer_semiaxes(spheroid) -> (axis, disk)Real (axis, disk) semi-axes of the outermost boundary q_N.
MeanFieldHom.LayeredSpheroids.spheroid_state_sequence — Function
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_ratios — Function
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_layer — Function
get_layer(s::LayeredSpheroid, q) -> IntIndex 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_temperature — Function
local_temperature(s, k₀, q, p, φ; H_axial = 1.0, H_trans = 0.0) -> TTemperature 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_gradient — Function
local_gradient(s, k₀, q, p, φ; H_axial = 1.0, H_trans = 0.0) -> (g₁, g₂, g₃)Temperature gradient ∇T at (q, p, φ) (own frame, real Cartesian triple), under the same remote loading as local_temperature.
MeanFieldHom.LayeredSpheroids.local_flux — Function
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_matrices — Function
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_odd — Function
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):
:P0—Pₙ(x)(m=0, any branch):Q0—Qₙ(x)(m=0, q branch, |x|>1):P1—Pₙ¹(x)(m=1, q branch, |x|>1):P1p—Pₙ¹(x)(m=1, p branch, |x|≤1):Q1—Qₙ¹(x)(m=1, q branch, |x|>1)