Ageing linear viscoelasticity (ALV)

Everything in the elastic part of this documentation — the Eshelby problem, the Hill polarization tensor, the concentration and contribution tensors, the schemes built on them — carries over to ageing linear viscoelasticity essentially unchanged, provided two substitutions are made systematically:

ElasticAgeing viscoelastic
tensor $\mathbb{C}$two-time kernel $\mathbb{C}(t,t')$
double contraction $\mathbb{A}:\mathbb{B}$Volterra product $\mathbb{A}\circ\mathbb{B}$
tensor inverse $\mathbb{A}^{-1}$Volterra inverse $\mathbb{A}^{-\circ}$
identity $\mathbb{I}$$H\,\mathbb{I}$, $H$ the Heaviside function

This page follows that substitution from the constitutive law to the homogenization schemes. The derivations are those of [7] (the Eshelby problem and the Hill kernel) and [55] (the schemes); the time discretization is that of [56].

Notation used on this page

A kernel is a function of two times $(t, t')$ — observation time and loading time — and is written in the same typeface as its elastic counterpart. $\circ$ denotes the Volterra product defined in the next section, $\bullet^{-\circ}$ the Volterra inverse — never the ordinary tensor inverse. In MeanFieldHom these two operations are volterra_product and volterra_inverse.

The ageing linear viscoelastic behaviour

The strain and stress histories are related by a Stieltjes integral ([7]):

\[\boldsymbol{\varepsilon}(t) = \int_{t'=-\infty}^{t}\mathbb{L}(t,t'):\mathrm{d}\boldsymbol{\sigma}(t'), \qquad \boldsymbol{\sigma}(t) = \int_{t'=-\infty}^{t}\mathbb{C}(t,t'):\mathrm{d}\boldsymbol{\varepsilon}(t'),\]

with $\mathbb{L}$ the creep compliance kernel and $\mathbb{C}$ the relaxation kernel. Causality imposes $\mathbb{C}(t,t') = 0$ for $t < t'$.

The non-ageing case is the special one where the kernels depend on $t$ and $t'$ only through their difference $t-t'$. There, and only there, the Laplace–Carson correspondence principle applies and the problem reduces to an elastic one with complex moduli — the route taken in Viscoelastic composites and cross-checked against the present one in Frequency or time?. When a phase ages — its properties evolve with its own maturity, as a hydrating cement paste does — $t$ and $t'$ enter independently, there is no convolution to transform, and the time domain is the only available route.

Volterra algebra

The relation above is written compactly $\boldsymbol{\varepsilon} = \mathbb{L}\circ\boldsymbol{\sigma}$, extending to tensors the scalar Volterra operator ([7]). Between two kernels the same symbol denotes

\[(\mathbb{A}\circ\mathbb{B})(t,t') = \int_{\tau=-\infty}^{t}\mathbb{A}(t,\tau): \frac{\partial\mathbb{B}}{\partial\tau}(\tau,t')\,\mathrm{d}\tau .\]

This product is associative and distributive over addition, but not commutative: commutativity holds only for non-ageing kernels ([7], citing Maghous & Creus). Every formula below therefore keeps its factors in order, including the apparently scalar ones.

The Heaviside function acts as the identity, $H\circ X = X$, so the identity elements are $H\,\mathbb{I}$ for 4-tensor kernels and $H\,\boldsymbol{1}$ for 2-tensor kernels. The Volterra inverse $\mathbb{A}^{-\circ}$ is defined by $\mathbb{A}\circ\mathbb{A}^{-\circ} = \mathbb{A}^{-\circ}\circ\mathbb{A} = H\,\mathbb{I}$; relaxation and creep kernels are Volterra inverses of one another, $\mathbb{C} = \mathbb{L}^{-\circ}$.

Discretization: kernels become block matrices

On a time grid $t_0 < t_1 < \dots < t_n$ the Stieltjes integral is approximated by the trapezoidal rule of [56]. Strain and stress histories become block column vectors, and each kernel a lower block-triangular matrix $\widetilde{\mathbb{C}}$ of size $6(n+1)\times 6(n+1)$ whose blocks are

\[\bigl[\widetilde{\mathbb{C}}\bigr]_{ik} = \begin{cases} \mathbb{C}(t_0,t_0), & i = k = 0,\\[4pt] \tfrac{1}{2}\bigl[\mathbb{C}(t_i,t_{i-1}) + \mathbb{C}(t_i,t_i)\bigr], & i = k > 0,\\[4pt] \tfrac{1}{2}\bigl[\mathbb{C}(t_i,t_0) - \mathbb{C}(t_i,t_1)\bigr], & i > 0,\ k = 0,\\[4pt] \tfrac{1}{2}\bigl[\mathbb{C}(t_i,t_{k-1}) - \mathbb{C}(t_i,t_{k+1})\bigr], & i > k > 0. \end{cases}\]

A block is not a kernel value

$[\widetilde{\mathbb{C}}]_{ik}$ is a weighted combination of kernel values at neighbouring times, not $\mathbb{C}(t_i,t_k)$. Reading a relaxation function off a column of the matrix therefore gives the wrong answer; the physical extraction is to apply the matrix to a unit strain step, which for a step at $t_0$ amounts to summing each block row. The lower-triangular structure encodes causality.

The pay-off of this representation is that the Volterra product becomes an ordinary matrix product and the Volterra inverse an ordinary matrix inverse ([56]; [55], Appendix). In MeanFieldHom the discretization is trapezoidal_matrix and the inverse volterra_inverse.

The Eshelby problem in ALV

Consider an ellipsoid $\mathcal{E}$ of shape tensor $\boldsymbol{A}$ embedded in an infinite medium of relaxation kernel $\mathbb{C}$, carrying a uniform polarization history $\boldsymbol{p}(t)$:

\[\boldsymbol{\sigma}(\underline{x}) = \mathbb{C}\circ\boldsymbol{\varepsilon}(\underline{x}) + \boldsymbol{p}\,\chi_{\mathcal{E}}(\underline{x}),\]

with $\chi_{\mathcal{E}}$ the characteristic function of $\mathcal{E}$. Momentum balance and the decay condition at infinity give ([7])

\[\mathrm{div}\bigl(\mathbb{C}\circ\boldsymbol{\varepsilon}(\underline{u})\bigr) - \boldsymbol{p}\cdot\underline{n}\,\delta_{\partial\mathcal{E}} = \underline{0}, \qquad \lim_{\|\underline{x}\|\to\infty}\underline{u}(\underline{x}) = \underline{0},\]

where $\delta_{\partial\mathcal{E}}$ is the surface Dirac distribution on the boundary of $\mathcal{E}$ and $\underline{n}$ its outward normal. This is literally the elastic problem with $:$ replaced by $\circ$.

Solving it through the ALV Green kernel yields the central result: the strain is uniform inside the ellipsoid, exactly as in elasticity, and

\[\forall\,\underline{x}\in\mathcal{E}\quad \boldsymbol{\varepsilon}(\underline{x}) = -\,\mathbb{P}\circ\boldsymbol{p}, \qquad \boldsymbol{\sigma}(\underline{x}) = -\,\mathbb{C}\circ\mathbb{P}\circ\boldsymbol{p}.\]

The Hill polarization kernel

The kernel $\mathbb{P}$ appearing above is the ALV counterpart of the elastic Hill polarization tensor ([7]):

\[\mathbb{P} = \frac{\det\boldsymbol{A}}{4\pi} \int_{\|\underline{\xi}\|=1} \frac{\underline{\xi}\stackrel{s}{\otimes} (\underline{\xi}\cdot\mathbb{C}\cdot\underline{\xi})^{-\circ} \stackrel{s}{\otimes}\underline{\xi}} {\|\boldsymbol{A}\cdot\underline{\xi}\|^{3}}\, \mathrm{d}S_{\underline{\xi}} .\]

It differs from the elastic Hill tensor in exactly one place: the inverse of the acoustic tensor $\underline{\xi}\cdot\mathbb{C}\cdot\underline{\xi}$ is a Volterra inverse. Like its elastic counterpart it depends only on the shape and orientation of the ellipsoid and on the reference kernel.

The Eshelby kernel follows by the same definition as in elasticity, $\mathbb{S} = \mathbb{P}\circ\mathbb{C}$, and relates the uniform strain inside $\mathcal{E}$ to a uniform eigenstrain history $\boldsymbol{\varepsilon}^*$:

\[\forall\,\underline{x}\in\mathcal{E}\quad \boldsymbol{\varepsilon}(\underline{x}) = \mathbb{S}\circ\boldsymbol{\varepsilon}^* = \mathbb{P}\circ\mathbb{C}\circ\boldsymbol{\varepsilon}^* .\]

Isotropic matrix: time and space decouple

If the reference kernel is isotropic, $\mathbb{C}(t,t') = 3k(t,t')\,\mathbb{J} + 2\mu(t,t')\,\mathbb{K}$, the acoustic tensor is diagonal in the ``(\underline{\xi}\otimes\underline{\xi},
\boldsymbol{1}-\underline{\xi}\otimes\underline{\xi})`` decomposition and can be inverted in the Volterra sense analytically. The Hill kernel then factorizes ([7], [55]):

\[\mathbb{P} = \bigl(k + \tfrac{4}{3}\mu\bigr)^{-\circ}\,\mathbb{U}^{\boldsymbol{A}} + \mu^{-\circ}\, \bigl(\mathbb{V}^{\boldsymbol{A}} - \mathbb{U}^{\boldsymbol{A}}\bigr),\]

where $\mathbb{U}^{\boldsymbol{A}}$ and $\mathbb{V}^{\boldsymbol{A}}$ are the purely geometric tensors of the elastic theory (Hill polarization tensors):

\[\mathbb{U}^{\boldsymbol{A}} = \frac{\det\boldsymbol{A}}{4\pi} \int_{\|\underline{\xi}\|=1} \frac{\underline{\xi}\otimes\underline{\xi}\otimes\underline{\xi}\otimes\underline{\xi}} {\|\boldsymbol{A}\cdot\underline{\xi}\|^{3}}\,\mathrm{d}S_{\underline{\xi}}, \qquad \mathbb{V}^{\boldsymbol{A}} = \frac{\det\boldsymbol{A}}{4\pi} \int_{\|\underline{\xi}\|=1} \frac{\underline{\xi}\stackrel{s}{\otimes}\boldsymbol{1} \stackrel{s}{\otimes}\underline{\xi}} {\|\boldsymbol{A}\cdot\underline{\xi}\|^{3}}\,\mathrm{d}S_{\underline{\xi}} .\]

This is what makes ALV tractable: the geometry sits entirely in $\mathbb{U}^{\boldsymbol{A}}$ and $\mathbb{V}^{\boldsymbol{A}}$the elastic ones, computed once per shape — and the time dependence in two scalar Volterra inverses, so a $6n \times 6n$ tensor-kernel inversion becomes two $n \times n$ scalar ones. hill_kernel discretizes the matrix law, extracts $(3k, 2\mu)$, inverts $k+\tfrac{4}{3}\mu$ and $\mu$ in the Volterra sense, and assembles against tens_UA and tens_VA. An anisotropic reference kernel has no such fast path.

For a sphere the geometric tensors are $\mathbb{U}^{\boldsymbol{A}} = \tfrac{1}{3}\mathbb{J} + \tfrac{2}{15}\mathbb{K}$ and $\mathbb{V}^{\boldsymbol{A}} = \tfrac{1}{3}\mathbb{I}$, giving the closed form ([7])

\[\mathbb{P}^{\text{sphere}} = (3k+4\mu)^{-\circ}\circ \Bigl(H\,\mathbb{J} + \tfrac{3}{5}\,(k+2\mu)\circ\mu^{-\circ}\,\mathbb{K}\Bigr), \qquad \mathbb{S}^{\text{sphere}} = 3\,(3k+4\mu)^{-\circ}\circ \Bigl(k\,\mathbb{J} + \tfrac{2}{5}(k+2\mu)\,\mathbb{K}\Bigr).\]

An anisotropic reference kernel does not enjoy this decoupling; as in elasticity, that is the case where the surface integral must be evaluated numerically.

From the inclusion to the inhomogeneity

Replace the polarization by a genuine inhomogeneity: the ellipsoid now has its own relaxation kernel $\mathbb{C}^{\mathcal{E}}$, and the medium is loaded by a remote strain history $\boldsymbol{E}(t)$. Superposing the remote field and the response to the fictitious polarization $(\mathbb{C}^{\mathcal{E}}-\mathbb{C}^{0})\circ\boldsymbol{\varepsilon}$ gives ([7])

\[\boldsymbol{\varepsilon} = \boldsymbol{E} - \mathbb{P}\circ(\mathbb{C}^{\mathcal{E}}-\mathbb{C}^{0}) \circ\boldsymbol{\varepsilon} \qquad\Longrightarrow\qquad \boldsymbol{\varepsilon} = \mathbb{A}^{\text{dil}}\circ\boldsymbol{E},\]

with the dilute strain concentration kernel

\[\mathbb{A}^{\text{dil}} = \bigl(H\,\mathbb{I} + \mathbb{P}\circ(\mathbb{C}^{\mathcal{E}}-\mathbb{C}^{0})\bigr)^{-\circ} .\]

The strain remains uniform inside $\mathcal{E}$: it depends on time alone. The associated contribution kernel is

\[\mathbb{N} = (\mathbb{C}^{\mathcal{E}}-\mathbb{C}^{0})\circ\mathbb{A}^{\text{dil}} = \bigl(\mathbb{P} + (\mathbb{C}^{\mathcal{E}}-\mathbb{C}^{0})^{-\circ}\bigr)^{-\circ},\]

the second form following from the identity $\mathbb{X}\circ(H\mathbb{I}+\mathbb{Y}\circ\mathbb{X})^{-\circ} = (H\mathbb{I}+\mathbb{X}\circ\mathbb{Y})^{-\circ}\circ\mathbb{X}$, which holds in any associative algebra and so survives the loss of commutativity.

Schemes

With concentration kernels in hand, every matrix-based scheme transposes term by term ([55]). Writing $\varphi_r$ for the volume fraction of phase $r$ and $\mathbb{C}^0$ for the reference kernel, the general form is $\mathbb{C}^{\hom} = \langle\mathbb{C}\circ\mathbb{A}\rangle$, or equivalently

\[\mathbb{C}^{\hom} = \mathbb{C}^{0} + \sum_r \varphi_r\,(\mathbb{C}^{r}-\mathbb{C}^{0})\circ \langle\mathbb{A}\rangle_r ,\]

and the schemes differ only in how $\langle\mathbb{A}\rangle_r$ is estimated — which yields, after substitution:

SchemeEffective kernel
Dilute / NIA$\mathbb{C}^{\hom} = \mathbb{C}^{0} + \sum_r \varphi_r\,\mathbb{N}^{r}$
Mori-Tanaka$\mathbb{C}^{\hom} = \mathbb{C}^{0} + \bigl(\sum_r \varphi_r\,\mathbb{N}^{r}\bigr)\circ\bigl((1-\sum_s\varphi_s)H\,\mathbb{I} + \sum_s\varphi_s\,\mathbb{A}^{\text{dil},s}\bigr)^{-\circ}$
Maxwell / PCW$(\mathbb{C}^{\hom})^{-\circ} = (\mathbb{C}^{0})^{-\circ} + \bigl((\sum_r \varphi_r\,\mathbb{N}^{r})^{-\circ} - \mathbb{P}_{\Omega}\bigr)^{-\circ}$
Self-consistentthe same equations with $\mathbb{C}^{0} = \mathbb{C}^{\hom}$, solved iteratively
Differentialinclusions added in infinitesimal increments, re-homogenizing at each step

$\mathbb{P}_{\Omega}$ in the Maxwell row is the Hill kernel of the distribution shape $\Omega$, not of an inclusion.

The one new difficulty is bookkeeping: $\circ$ does not commute, so the order of the factors is prescribed — even in the isotropic case, where every factor looks scalar. All ten schemes are implemented by homogenize_alv.

The n-layer composite sphere

The Hervé–Zaoui $n$-layer sphere ([47], see Layered spheres) transposes by the same rule. Its elastic construction propagates a state vector across the shells by a product of transfer matrices — $2\times 2$ for the bulk ($Y_0$) harmonic, $4\times 4$ for the shear ($Y_2$) one — whose entries are rational expressions in the scalar moduli $(\kappa_i,\mu_i)$ of each layer and in the layer radii.

In the ALV setting every scalar modulus becomes its $n\times n$ trapezoidal Volterra matrix, every product a matrix product and every reciprocal a Volterra inverse; the transfer matrices become block matrices of size $2n\times 2n$ and $4n\times 4n$ respectively. Both harmonics carry over, together with the per-layer localization kernels and the imperfect-interface transfers. The composite sphere then enters the schemes exactly as in elasticity — through its volume-averaged concentration kernel, having no Hill tensor of its own.

Symmetry classes and structured storage

ALV operators inherit the symmetry classes of their elastic counterparts, and those classes are closed under Volterra product and inverse. That closure is what makes compact storage possible:

ClassStored componentsFull $6n\times 6n$Storage costClosure operation
ISO$(\alpha,\beta)$$36n^2$$2n^2$ (18×)scalar Volterra products / inverses
TI$(\ell_1,\dots,\ell_6)$$36n^2$$6n^2$ (6×)$(2n\times 2n)$ block-Volterra + 2 scalars
ORTHO$(o_1,\dots,o_{12})$$36n^2$$12n^2$ (3×)$(3n\times 3n)$ block-Volterra + 3 scalars
Genericfull $6n\times 6n$$36n^2$$36n^2$$(6n\times 6n)$ block-LU

with ISO ⊂ TI ⊂ ORTHO ⊂ generic. The types ALVKernelISO, ALVKernelTI and ALVKernelOrtho wrap these compact representations as AbstractMatrix, so they flow through generic Julia matrix code while preserving both the storage saving and the algebraic closure.