The classical building block of micromechanics: an isotropic sphere — or a stack of concentric isotropic layers — under a uniform remote strain. Because the material is isotropic, the problem splits by the symmetry of the remote loading, and each part reduces to an ordinary differential equation in the radius that SymPy solves in closed form.
Everything here is produced by the differential operators of Curvilinear differential calculus: SYMGRAD gives the strain, DIV the equilibrium equation. Nothing is transcribed from a textbook. Background: [13].
A solid sphere is regular at the origin, so the constant vanishes and the remaining term is times the uniform strain — a state of uniform hydrostatic stress, as it must be.
For the angular dependence is fixed by the loading and only the radial profiles remain unknown. The angular functions are generated from the remote strain itself:
julia
remote_angle_functions(𝐄) = let fʳ = simplify(𝐞ʳ ⋅ 𝐄 ⋅ 𝐞ʳ) (diff(fʳ, θ) / 2, diff(fʳ, ϕ) / (2sin(θ)), fʳ)enduᶿ = SymFunction("uᶿ", real = true)uᵠ = SymFunction("uᵠ", real = true)uʳ = SymFunction("uʳ", real = true)α, Λ = symbols("α Λ", real = true)fᶿ, _, fʳ = remote_angle_functions(𝟏 - 3𝐞₃ ⊗ 𝐞₃)(fᶿ, fʳ)
Four solutions — the four exponents of the deviatoric problem. Two are regular at the origin and two at infinity, which is exactly what a layered assemblage needs: two constants per layer, fixed by continuity at each interface.
A different deviatoric loading, , now with an azimuthal component. Isotropy demands that it produce the same radial exponents; only the angular functions differ.
The azimuthal equation forces : the two transverse profiles are not independent.
julia
X = symbols("X", real = true)uᵠsol = solve(tsimplify(diff(subs(eqᵠˢ, sin(θ)^2 => 1 / X), X)), uᵠ(r))[1]
ᶿ
With that identification the remaining system reproduces the same exponents as the axisymmetric case:
julia
eqs₂ = tsimplify.(subs.([eqᶿˢ, eqʳˢ], uᵠ(r) => r^α, uᶿ(r) => r^α, uʳ(r) => Λ * r^α))αΛ₂ = solve([e.doit() for e in eqs₂], [α, Λ])sort(string.(first.(αΛ))) == sort(string.(first.(αΛ₂)))
true
The deviatoric response of an isotropic sphere therefore depends on the symmetry class of the remote loading, not on its particular orientation — which is what lets an -layer assemblage be solved once and reused for any deviatoric loading.
In a stack of concentric layers, layer occupies with its own moduli and carries the constants found above. Continuity of the displacement and of the radial traction at each interface gives two scalar equations per interface in the hydrostatic problem and four in the deviatoric one; regularity at the center and the remote condition close the system.
The expressions T̂, T̂ᶿ and T̂ʳ derived above are exactly the quantities to be matched, so the assembly is ordinary linear algebra on the constants — no further tensor calculus is required.