Wave solution
The heat equation bears some resemblence to the wave equation. The heat equation is ∂u/∂t = k∇²u, while the wave equation is ∂²u/∂t² = c²∇²u, where u is the scalar function that describes either heat content or wave amplitude. Heat-wave treats both k and c as constant (except at the edges of the sheet).
The divergence of the gradient of a function (∇²u) (also called the Laplacian) is a measure of how quickly the gradient is changing, or how much the value at some point is above or below the (tilted) plane defined by the points immediately adjacent to that point. And ∂u/∂t (from the heat equation) is the speed at which the heat-content or temperature is changing. So the speed at which the temperature at any point is changing is directly proportional to the Laplacian in the heat equation. In other words, every point is smoothing itself out relative to its neighbors at a rate that's directly proportional to how far it's sticking out. And since it slows down as it moves closer to equilibrium, it never actually gets to equilibrium in finite time. It gets closer and closer, but never finishes. It's like Zeno's paradox, except the time slices are not getting smaller. It's asymptotic.
With the wave equation it's ∂²u/∂t², instead of ∂u/∂t, that's directly proportional to the Laplacian. And whereas ∂u/∂t is velocity, ∂²u/∂t² is acceleration. So the wave equation is a=c²L where a is acceleration, L is the Laplacian, and c is the speed of wave propagation (which we treat as constant).
For sound waves, the wave function describes the displacement of the material at each point, and ∂²u/∂t² is the acceleration of the material at each point. To accurately describe sound waves in a solid (which propagates both longitudinal and transverse waves), the displacement function u(x,y,z,t) should be a vector function, and the velocity and acceleration at each point are also a vectors. The wave equation is sometimes called the vector wave equation in these situations.
Heat-wave solves the scalar, not vector, heat equation. This accurately models sound waves in liquids and gases, which don't propagate transverse waves, and electromagnetic waves which don't have a longitudinal component.
If we compare a=c²L to Newton's second law, F=ma restated as a=F/m, it implies that c²L is analogous to F, the force resisting deformation. This makes sense because is proportional to the stiffness of the material, and L is a measure of how far the material is (locally) bent out of shape.
Let's look at the heat equation, ∂u/∂t = k∇²u, again. We can approximate ∂u/∂t as (u(t+dt)-u(t))/dt and get
  • u(t+dt)/dt - u(t)/dt = k∇²u and thus
  • u(t+dt) = u(t) + (k*dt)∇²u or
  • u(t+dt) = u(t) + (constant * Laplacian)
which we need to solve for the next generation. We can do something similar with the wave equation, ∂²u/∂t² = c²∇²u, since we can approximate ∂²u/∂t² as (u(t+dt)+u(t-dt)-2u(t))/dt and get
  • u(t+dt) = 2u(t) - u(t-dt) + c²∇²u or
  • u(t+dt) = 2u(t) - u(t-dt) + (constant * Laplacian)
This can be restated as
  • u(t+dt) = (u(t) - u(t-dt)) + (u(t) + (constant * Laplacian)) or
  • u(t+dt) = (u(t) - u(t-dt)) + (solution to the heat equation)
So the solution to the wave equation looks like the solution to the heat equation added to u(t) - u(t-dt). And u(t) - u(t-dt) is just the momentum.
This brings up damping. Since u(t) - u(t-dt) is a term carrying over speed or momentum, we can think of it as speed * dt. And one way to model friction is
  • x(t+dt) = x(t) + ((1 - friction) * (speed * dt))
So treating damping like friction, we get the following as our solution to the wave equation, where damping is a value from 0 to 1.
  • u(t+dt) = ((1 - damping) * (speed * dt)) + (solution to the heat equation)
  • u(t+dt) = ((1 - damping) * (u(t) - u(t-dt))) + (solution to the heat equation)
When damping==0, we get an undamped wave equation. When damping==1 we get a fully-damped wave equation, which is equivalent to the heat equation. When damping>1 (Heat-wave allows this so you can experiment) we get oscillations and exploding values. And when damping<1 (Heat-wave also allows this) we get accelerating and quickly growing values. Which brings up the next topic: instabilities and exploding values.