Interactive viscoelastic models: Maxwell, Kelvin-Voigt, and their generalizations
This post provides an interactive introduction to the classical spring-dashpot models of linear viscoelasticity. Use the sliders to explore how each model’s frequency response and creep behavior change with its parameters.
Contents:
- Introduction
- Maxwell model
- Kelvin-Voigt model
- Generalized Maxwell model
- Generalized Kelvin-Voigt model
- The viscoelastic spectrum
- Useful references
Introduction
Viscoelastic materials exhibit both elastic (solid-like) and viscous (fluid-like) behavior. Two of the simplest mechanical models that capture this dual character are the Maxwell model and the Kelvin-Voigt model. Each is built from just two elements: a spring with elastic modulus \(E\) and a dashpot with viscosity \(\eta\).
When we subject either model to a sinusoidal strain \(\gamma(t) = \gamma_0 e^{i\omega t}\), the resulting stress is also sinusoidal but generally out of phase. We can write the ratio of stress to strain as a complex modulus,
\[G^*(\omega) = G'(\omega) + i\,G''(\omega),\]where \(G'(\omega)\) is the storage modulus (elastic, in-phase response) and \(G''(\omega)\) is the loss modulus (viscous, out-of-phase response).
The creep compliance \(J(t)\) describes the time-dependent strain response to a constant applied stress \(\sigma_0\). It is defined as the ratio of strain to stress,
\[J(t) = \frac{\gamma(t)}{\sigma_0},\]so the actual deformation is \(\gamma(t) = \sigma_0\,J(t)\). Because we normalize by \(\sigma_0\), the creep compliance is a material property (with units of 1/Pa) that is independent of the applied load. It provides a complementary picture to the frequency-domain moduli: \(G'\) and \(G''\) encode how the material responds to oscillatory loading, while \(J(t)\) shows how it deforms over time under a constant load.
Maxwell model
The Maxwell model places a spring and dashpot in series.
Because the spring and dashpot are in series, they share the same stress \(\sigma\) but their strains add: \(\gamma = \gamma_\text{spring} + \gamma_\text{dashpot}\). The spring contributes \(\dot{\gamma}_\text{spring} = \dot{\sigma}/E\) and the dashpot contributes \(\dot{\gamma}_\text{dashpot} = \sigma/\eta\), giving the constitutive equation
\[\dot{\gamma} = \frac{\dot{\sigma}}{E} + \frac{\sigma}{\eta}.\]Under an applied oscillatory stress, the spring deforms instantaneously while the dashpot flows over time. This model captures stress relaxation well but predicts unbounded creep.
Defining the relaxation time \(\tau = \eta / E\), the frequency-domain moduli are:
\[G'(\omega) = E\,\frac{\tau^2\omega^2}{1 + \tau^2\omega^2}, \qquad G''(\omega) = E\,\frac{\tau\omega}{1 + \tau^2\omega^2}.\]At low frequencies (\(\omega\tau \ll 1\)), both moduli vanish – the material flows like a liquid. At high frequencies (\(\omega\tau \gg 1\)), \(G' \to E\) and \(G'' \to 0\) – the material behaves as a solid. The loss modulus peaks at \(\omega = 1/\tau\).
To probe the time-domain behavior, we apply a step stress that is held constant and then removed at time \(t_1\):
\[\sigma(t) = \begin{cases} \sigma_0, & 0 \le t \le t_1, \\ 0, & t > t_1. \end{cases}\]During loading, the spring deforms instantaneously by \(\sigma_0/E\) and the dashpot flows at a steady rate \(\sigma_0/\eta\). The creep compliance is:
\[J(t) = \frac{1}{E} + \frac{t}{\eta}.\]When the stress is removed at time \(t_1\), the spring recovers instantly but the viscous flow is permanent. The recovery compliance is:
\[J(t) = \frac{t_1}{\eta}, \qquad t > t_1.\]After unloading, only the elastic strain recovers; the viscous strain that accumulated during loading is irreversible. At long times the Maxwell model therefore behaves like a viscous liquid.
Interactive plots
Kelvin-Voigt model
The Kelvin-Voigt model places a spring and dashpot in parallel.
Because the spring and dashpot are in parallel, they share the same strain \(\gamma\) but their stresses add: \(\sigma = \sigma_\text{spring} + \sigma_\text{dashpot}\). The spring contributes \(E\gamma\) and the dashpot contributes \(\eta\dot{\gamma}\), giving the constitutive equation
\[\sigma = E\,\gamma + \eta\,\dot{\gamma}.\]The dashpot resists sudden changes in strain, so this model captures creep behavior well but cannot describe stress relaxation (under constant strain, \(\dot{\gamma}=0\) and the stress is simply \(E\gamma\), with no decay).
The frequency-domain moduli are:
\[G'(\omega) = E, \qquad G''(\omega) = \eta\,\omega.\]The storage modulus is constant (the spring always contributes \(E\)), and the loss modulus grows linearly with frequency (the dashpot dissipates more energy at faster deformation rates).
Under the same step-stress protocol, the dashpot initially prevents any deformation and the strain gradually approaches its equilibrium value. The creep compliance during loading is:
\[J(t) = \frac{1}{E}\left(1 - e^{-t/\tau}\right), \qquad \tau = \eta/E.\]When the stress is removed at time \(t_1\), the stored elastic energy drives the dashpot in reverse and the material recovers completely:
\[J(t) = J(t_1)\,e^{-(t - t_1)/\tau}, \qquad t > t_1.\]Unlike the Maxwell model, there is no permanent deformation – the Kelvin-Voigt model does not flow.
Interactive plots
Generalized Maxwell model
The generalized Maxwell model places \(n\) Maxwell elements in parallel, optionally with an equilibrium spring \(E_0\). Each element \(i\) has its own spring \(E_i\) and dashpot \(\eta_i\), giving a relaxation time \(\tau_i = \eta_i / E_i\). This construction produces a spectrum of relaxation times, allowing the model to capture the broad, gradual transitions observed in real materials.
Since the arms are in parallel, they all share the same strain \(\gamma\) and the total stress is the sum of each arm’s contribution:
\[\sigma = E_0\,\gamma + \sum_{i=1}^{n} \sigma_i, \qquad \dot{\gamma} = \frac{\dot{\sigma}_i}{E_i} + \frac{\sigma_i}{\eta_i} \quad \text{for each arm } i.\]Each arm obeys the Maxwell constitutive law individually, while the equilibrium spring \(E_0\) carries stress \(E_0\gamma\) at all times.
The frequency-domain moduli sum over all elements:
\[G'(\omega) = E_0 + \sum_{i=1}^{n} E_i \frac{\tau_i^2 \omega^2}{1 + \tau_i^2 \omega^2}, \qquad G''(\omega) = \sum_{i=1}^{n} E_i \frac{\tau_i \omega}{1 + \tau_i^2 \omega^2}.\]The creep compliance \(J(t)\) under constant stress is computed numerically by integrating the coupled ODE system for each Maxwell arm.
Use the controls below to set the number of Maxwell elements \(n\) and tune each element’s properties. You can also optionally show the contributions of each element to the storage and loss moduli.
Interactive plots
Generalized Kelvin-Voigt model
The generalized Kelvin-Voigt model places \(n\) Kelvin-Voigt elements in series, optionally with an instantaneous compliance \(J_0 = 1/E_0\). Each element \(i\) has spring \(E_i\) and dashpot \(\eta_i\), giving a retardation time \(\tau_i = \eta_i / E_i\). This produces a spectrum of retardation times.
Since the elements are in series, they all carry the same stress \(\sigma\) and the total strain is the sum of each element’s contribution:
\[\gamma = J_0\,\sigma + \sum_{i=1}^{n} \gamma_i, \qquad \sigma = E_i\,\gamma_i + \eta_i\,\dot{\gamma}_i \quad \text{for each element } i.\]Each element obeys the Kelvin-Voigt constitutive law individually, while the instantaneous compliance \(J_0 = 1/E_0\) produces an immediate elastic strain \(J_0\sigma\).
The creep compliance sums over all elements:
\[J(t) = J_0 + \sum_{i=1}^{n} \frac{1}{E_i}\left(1 - e^{-t/\tau_i}\right).\]The frequency-domain moduli are obtained by inverting the complex compliance \(J^*(\omega) = J_0 + \sum_i \frac{1}{E_i + i\omega\eta_i}\). Writing \(J^* = J' - iJ''\), the storage and loss moduli are:
\[G'(\omega) = \frac{J'}{J'^2 + J''^2}, \qquad G''(\omega) = \frac{J''}{J'^2 + J''^2},\]where
\[J' = J_0 + \sum_{i=1}^{n} \frac{E_i}{E_i^2 + \omega^2\eta_i^2}, \qquad J'' = \sum_{i=1}^{n} \frac{\omega\eta_i}{E_i^2 + \omega^2\eta_i^2}.\]Use the controls below to set the number of Kelvin-Voigt elements \(n\) and tune each element’s properties.
Interactive plots
The viscoelastic spectrum
The generalized models introduced above are built from discrete sets of elements, each with its own modulus \(E_i\) and time constant \(\tau_i\). The collection \(\{E_i, \tau_i\}\) is called the discrete relaxation spectrum (for the generalized Maxwell model) or the discrete retardation spectrum (for the generalized Kelvin-Voigt model).
From discrete to continuous
In principle, a real material has a continuous distribution of relaxation processes rather than a handful of discrete ones. The discrete spectra are approximations of underlying continuous distributions.
Generalized Maxwell (relaxation spectrum). The relaxation modulus,
\[G(t) = E_0 + \sum_{i=1}^{n} E_i\, e^{-t/\tau_i},\]is a discretization of the continuous integral
\[G(t) = G_e + \int_0^\infty H(\tau)\, e^{-t/\tau}\, d\ln\tau,\]where \(H(\tau)\) is the continuous relaxation spectrum and \(G_e\) is the equilibrium modulus. Each discrete element \((E_i, \tau_i)\) represents a “bar” in a histogram approximation of \(H(\tau)\).
Generalized Kelvin-Voigt (retardation spectrum). The creep compliance,
\[J(t) = J_0 + \sum_{i=1}^{n} \frac{1}{E_i}\left(1 - e^{-t/\tau_i}\right),\]is similarly a discretization of
\[J(t) = J_g + \int_0^\infty L(\tau)\,\left(1 - e^{-t/\tau}\right)\, d\ln\tau,\]where \(L(\tau)\) is the continuous retardation spectrum and \(J_g\) is the glassy (instantaneous) compliance. The relaxation and retardation spectra are not independent – they are related through Laplace-transform identities – but each provides a natural language for its respective model family.
Physical interpretation
The spectrum encodes which relaxation processes are active at which timescales. A narrow spectrum (elements clustered at similar \(\tau_i\)) produces a sharp transition from liquid-like to solid-like behavior, while a broad spectrum (elements spread over many decades of \(\tau\)) produces the gradual, power-law-like transitions seen in polymers and biological tissues.
You can explore this directly in the interactive plots above:
-
Narrow spectrum: Set all \(\eta_i\) values close together (similar \(\tau_i\)). The \(G'\) and \(G''\) curves will look similar to a single Maxwell element, just with a higher modulus.
-
Broad spectrum: Spread the \(\eta_i\) values across several decades. The \(G''\) peak broadens, and the transition in \(G'\) from the rubbery plateau to the flow region stretches over a wide frequency range.
Connection to experiments
In rheology, the practical workflow often runs in reverse: one measures \(G'(\omega)\) and \(G''(\omega)\) experimentally, then fits a generalized Maxwell model to extract the discrete spectrum \(\{E_i, \tau_i\}\). This inverse problem – sometimes called Prony series fitting – is fundamental to characterizing materials in polymer science, biomechanics, and food science. The number of elements \(n\) and their placement in \(\tau\)-space determine how faithfully the model reproduces the measured data.
Useful references
-
J.D. Ferry, Viscoelastic Properties of Polymers, 3rd ed. (Wiley, 1980).
-
N.W. Tschoegl, The Phenomenological Theory of Linear Viscoelastic Behavior: An Introduction (Springer, 1989).
-
C.W. Macosko, Rheology: Principles, Measurements, and Applications (Wiley-VCH, 1994).
-
R.S. Lakes, Viscoelastic Materials (Cambridge University Press, 2009).