〰️ Viscoelastic Wave Propagation

Waves in a Maxwell viscoelastic medium. Below the crossover frequency ωc = G/η they diffuse; above they propagate. Watch dispersion curves and attenuation change with relaxation time.

PhysicsInteractive
Upper: displacement field · Lower: dispersion diagram · P pause · R reset

How it Works

A sinusoidal displacement is driven at the left boundary. The simulation propagates a 1D shear wave through a Maxwell viscoelastic medium with a staggered velocity–stress finite-difference scheme (Virieux 1986): velocity lives on the grid nodes and stress on the half-nodes, so both spatial derivatives are centred over a single cell and the odd/even checkerboard mode of a collocated stencil cannot appear. The sub-step obeys the CFL condition c·Δt/Δx ≤ 1 with c = sqrt(G/ρ), and the relaxation term σ/τ is integrated exactly, so the scheme stays stable even when τ is much shorter than a time step. The Maxwell model gives a frequency-dependent complex shear modulus G*(ω) = G·iωτ/(1+iωτ), which determines the complex wave number k(ω) = ω·sqrt(ρ/G*(ω)).

At low frequencies (ω << ωc = 1/τ) the imaginary part of k dominates — disturbances decay within a fraction of a wavelength (diffusive regime). At high frequencies (ω >> ωc) the real part of k dominates — coherent waves travel at a phase speed ω/Re(k) that approaches c = sqrt(G/ρ) (elastic regime). The domain is 20 length units long, which at the default settings is about three wavelengths and 4.3 attenuation lengths, so the wave visibly decays as it crosses the medium instead of dying at the source. The dashed red marker on the displacement panel is 1/Im(k), where the envelope has fallen to 1/e. The lower panel shows the live dispersion curve.

τ = η / G [relaxation time]
ω_c = 1/τ = G/η [crossover frequency]
G*(ω) = G · iωτ / (1 + iωτ)
k = ω √(ρ / G*(ω))

Frequently Asked Questions

What is a viscoelastic material?

A viscoelastic material exhibits both viscous (liquid-like) and elastic (solid-like) behaviour depending on the timescale of deformation. Examples include polymer melts, biological gels, and silly putty.

What is the Maxwell viscoelastic model?

The Maxwell model represents viscoelasticity as a spring (elastic modulus G) and dashpot (viscosity η) in series. Stress relaxes exponentially with relaxation time τ = η/G.

What is relaxation time in viscoelasticity?

Relaxation time τ = η/G is the time for stress to decay to 1/e of its initial value after an imposed step strain. It separates the elastic (fast) regime from the viscous (slow) regime.

Why do waves diffuse at low frequency in a Maxwell fluid?

At frequencies below ωc = G/η = 1/τ, the material has time to relax and behaves as a viscous liquid. Disturbances decay diffusively rather than propagating as coherent waves.

Why do waves propagate at high frequency in a Maxwell fluid?

At frequencies above ωc, the material cannot relax before the wave passes and behaves elastically, supporting propagating shear waves at speed c = sqrt(G/ρ).

What is the dispersion relation for viscoelastic waves?

For a Maxwell fluid: k² = ρω²/G·(1 + i/(ωτ)). The real part gives phase speed, the imaginary part gives spatial attenuation.

What is attenuation in wave propagation?

Attenuation is the decay of wave amplitude with distance: the amplitude falls as exp(−αx) with α = Im(k). In a Maxwell fluid raising the viscosity η lengthens the relaxation time τ = η/G, which makes the medium more elastic, so α falls and the attenuation length 1/Im(k) → 2τ·sqrt(G/ρ) grows. (It is the Kelvin–Voigt model, with its dashpot in parallel, whose attenuation grows with viscosity.) The Atten. length 1/Im(k) readout shows this directly.

Why is the phase speed not simply sqrt(G/ρ)?

sqrt(G/ρ) is the unrelaxed (infinite-frequency) shear-wave speed, and the Maxwell medium only reaches it as ωτ → ∞. At finite ωτ the medium is softer than G, so the true phase speed is ω/Re(k) with k from the Maxwell dispersion relation, and it falls below sqrt(G/ρ) — approaching sqrt(2ωη/ρ) in the diffusive limit. The Phase speed readout reports ω/Re(k) itself, the same quantity plotted in the dispersion panel.

What are practical examples of viscoelastic wave effects?

Viscoelastic wave phenomena are important in seismic attenuation in sedimentary rock, ultrasound in biological tissue, shock absorption in polymer foams, and vibration damping in composite structures.

What is the Deborah number?

The Deborah number De = τ/tobs compares the material relaxation time to the observation timescale. De >> 1 means elastic behaviour; De << 1 means viscous behaviour.

How does the Kelvin-Voigt model differ from the Maxwell model?

The Kelvin-Voigt model places spring and dashpot in parallel, giving a creep response but no stress relaxation. The Maxwell model places them in series, giving stress relaxation but unlimited creep.

About this simulation

Written by MySimulator Team · Reviewed by MySimulator Editorial Review

Last updated: 5 July 2026

A staggered velocity–stress finite-difference solver steps stress on the half-cells and velocity on the nodes of a 400-node 1D grid, using the Maxwell constitutive law dσ/dt = G(dv/dx) − σ/τ and driven by a sinusoidal displacement at the left edge. Because relaxation time τ = η/G sets a crossover frequency ωc = G/η, the same medium can look like a diffusing liquid or a ringing elastic solid depending purely on how fast you shake it. The domain is sized against the medium’s own attenuation length 1/Im(k), so at typical settings the wave crosses several wavelengths while it decays — you can see the attenuation happen rather than just infer it.

🔬 What it shows

A driven displacement wave in the top panel, with a dashed marker at 1/Im(k) where its envelope has fallen to 1/e, and a live Re(k)/Im(k) dispersion diagram below, with a marked crossover frequency ωc separating the diffusive regime from the propagating-wave regime.

🎮 How to use

Adjust Shear Modulus G, Viscosity η, Drive Frequency ω and Amplitude A with the sliders. The product ωτ shown on the canvas is the control parameter: push it far below 1 (low η, low ω) for the diffusive regime, where the wave dies in a fraction of the domain, and far above 1 for the elastic regime, where it rings across the whole medium. Press P/R to pause/reset.

💡 Did you know?

Silly putty is the classic party trick for this physics: pull it slowly and it flows like a liquid (below ωc), but snap it fast and it shatters like a brittle elastic solid (above ωc).

Frequently asked questions

Why does the Regime readout switch between Elastic and Viscous?

The code compares the drive frequency omega to the crossover wc = G/eta computed each frame; when omega*tau exceeds 1 it labels the medium Elastic (wave), otherwise Viscous (diffuse), matching Maxwell-model theory.

What does the orange line overlaid on the displacement plot show?

It plots the internal stress field, which the Maxwell constitutive equation evolves separately from displacement, revealing how stress and strain can be out of phase in a viscoelastic medium. It is stored on the half-cells of the staggered grid, midway between the velocity nodes.

How is the dispersion curve in the lower panel computed?

For each frequency on the x-axis the code evaluates the complex wavenumber from k^2 = rho*omega^2*(1 - i/(omega*tau))/G, plotting Re(k) in blue (propagation) and Im(k) in red (attenuation) on a shared scale.

Why does increasing viscosity change the crossover frequency?

Relaxation time tau = eta/G grows with viscosity, and since wc = 1/tau, a higher eta value pushes the crossover frequency lower, making the medium behave elastically over a wider frequency range — and, because the attenuation length 1/Im(k) tends to 2*tau*sqrt(G/rho), letting the wave travel further before it dies.

Why is the grid staggered?

Velocity sits on the nodes and stress on the half-nodes, so each spatial derivative is centred over exactly one cell. A collocated scheme, which differences over two cells, leaves the odd and even nodes uncoupled and admits a sawtooth (checkerboard) mode that grows without bound as the cell size shrinks. Staggering removes that mode, which is what allows the cells to be made small enough to resolve the wave.

How do you know the solver is stable?

The explicit leapfrog is stable while the Courant number c*dt/dx stays below 1, with c = sqrt(G/rho) the unrelaxed wave speed; the code recomputes the sub-step from the current G every frame and holds the Courant number at 0.4. The stress relaxation term is integrated exactly rather than by an explicit Euler step, so a very short relaxation time cannot destabilise it either.

What happens at the right edge of the displacement grid?

It applies a characteristic (one-way) absorbing condition: a rightward-travelling wave in this medium obeys sigma = -rho*c*v, so the last velocity node is set from the last stress value. The wave leaves the domain instead of reflecting back into it.