

Space-time FEM for elastic wave propagation — no time stepping
I was experimenting with a space-time finite element formulation for a simple elastodynamics problem and thought the result might be interesting here.
The example is a 1D elastic bar immediately after impact with a rigid wall. I do not model the impact itself; the calculation starts from the post-impact initial state and follows the subsequent stress-wave propagation, reflection and release.
Instead of discretizing space first and then advancing the solution in time, I introduce
y = ct
and treat (x,y) as an ordinary 2D finite-element domain.
Using particle velocity v and normalized stress
s = σ/(ρc)
the first-order system becomes
∂v/∂y − ∂s/∂x = 0
∂s/∂y − ∂v/∂x = 0
I used a least-squares formulation, which leads to four bilinear forms:
Kvv = ∫(Grad(V) ⋅ I ⋅ Grad(V))
Kvs = ∫(Grad(V) ⋅ C ⋅ Grad(S))
Ksv = ∫(Grad(S) ⋅ C ⋅ Grad(V))
Kss = ∫(Grad(S) ⋅ I ⋅ Grad(S))
The complete coupled system is then just
K = SystemMatrix([
Kvv Kvs
Ksv Kss
])
followed by one solve.
There is no time-stepping loop. The complete evolution over the chosen time interval is solved as one space-time finite-element problem.
What I especially like about the result is that the two wave fronts appear directly as characteristic lines in the (x,ct) domain.
The solution reproduces the classical 1D result: after impact, a compressive wave travels from the constrained end toward the free end. It reflects there as a release wave and travels back toward the wall.
During the compressed phase,
σ = -ρ c v₀,
and the release wave returns to the wall at
t = 2L/c.
The implementation uses LowLevelFEM.jl, but the notebook also contains the derivation of the formulation.
I'd be interested in thoughts from people who have worked with space-time FEM or least-squares formulations for hyperbolic problems.
The notebook is available via the link in the first comment.