Localization and contribution tensors

MeanFieldHom exposes the four dilute localization tensors of the Eshelby problem, together with the size-independent stiffness and compliance contribution tensors of Kachanov–Sevostianov.

Pivot formula

For an inclusion I of stiffness $\mathbb C_1$ embedded in an infinite matrix of stiffness $\mathbb C_0$, the strain–strain localization tensor is

\[\mathbb A_{\varepsilon\varepsilon} = \bigl[\,\mathbb I + \mathbb P(\mathrm I, \mathbb C_0) : (\mathbb C_1 - \mathbb C_0)\,\bigr]^{-1},\]

where $\mathbb P$ is the Hill polarization tensor (hill_tensor) and $\mathbb I$ is the symmetric identity 4-tensor. The three other localization tensors follow algebraically:

\[\mathbb A_{\sigma\varepsilon} = \mathbb C_1 : \mathbb A_{\varepsilon\varepsilon},\qquad \mathbb A_{\varepsilon\sigma} = \mathbb A_{\varepsilon\varepsilon} : \mathbb S_0,\qquad \mathbb A_{\sigma\sigma} = \mathbb C_1 : \mathbb A_{\varepsilon\varepsilon} : \mathbb S_0,\]

with $\mathbb S_0 = \mathbb C_0^{-1}$. The four functions exposed by MeanFieldHom are:

FunctionReturn value
strain_strain_loc(incl, C₁, C₀)$\mathbb A_{\varepsilon\varepsilon}$
stress_strain_loc(incl, C₁, C₀)$\mathbb A_{\sigma\varepsilon}$
strain_stress_loc(incl, C₁, C₀)$\mathbb A_{\varepsilon\sigma}$
stress_stress_loc(incl, C₁, C₀)$\mathbb A_{\sigma\sigma}$

Contribution tensors

The stiffness contribution tensor (Kachanov–Sevostianov 2018) is

\[\mathbb N = (\mathbb C_1 - \mathbb C_0) : \mathbb A_{\varepsilon\varepsilon},\]

and its dilute-scheme volume average is

\[\Delta\mathbb C_\mathrm{eff} = f \,\mathbb N,\]

for a dilute family of volume fraction $f$. The dual compliance contribution tensor is

\[\mathbb H = (\mathbb S_1 - \mathbb S_0) : \mathbb A_{\sigma\sigma},\qquad \Delta\mathbb S_\mathrm{eff} = f\,\mathbb H.\]

Functions: stiffness_contribution, compliance_contribution, with density helpers delta_stiffness and delta_compliance.

Cracks (Kachanov convention)

For flat cracks the Budiansky density convention is used instead of a volume fraction. The same entry points apply, with the density $\varepsilon$ replacing $f$:

  • compliance_contribution(crack, C₀) returns the size-independent H = (3/4) n̂ ⊗ˢ B ⊗ˢ n̂ (elliptic) or (2/π) n̂ ⊗ˢ B ⊗ˢ n̂ (ribbon);
  • stiffness_contribution(crack, C₀) returns N = -C₀ : H : C₀ (first order, provided for API symmetry);
  • delta_compliance(crack, H, ε) and delta_stiffness(crack, N, ε) apply the appropriate (4π/3) or π geometric prefactor.

Conductivity (2nd-order transport)

Every routine above has a 2-tensor analog, triggered by dispatch on ::AbstractTens{2,3} matrices:

ElasticityConductivity
strain_strain_locgradient_gradient_loc
stress_strain_locflux_gradient_loc
strain_stress_locgradient_flux_loc
stress_stress_locflux_flux_loc
stiffness_contributionconductivity_contribution
compliance_contribution (ellipsoid)resistivity_contribution
delta_stiffnessdelta_conductivity
delta_compliance (ellipsoid)delta_resistivity

Type-genericity

All four localization and both contribution tensors are generic in the element type; the only requirement is that hill_tensor supports it.

Extending to user-defined inclusions

A concrete subtype of AbstractInclusion inherits the four localization and the contribution tensors as soon as it provides hill_tensor. When $\mathbb P$ has no convenient closed form (e.g. LayeredSphere), override strain_strain_loc instead — the rest is derived algebraically.

See the developer guide Adding a new inclusion for a step-by-step recipe.