Unlike a single global pore-pressure number for the whole column, this 2D side view solves for excess pore pressure layer by layer down a 48-cell depth grid, each layer driven by its own local cyclic stress ratio. That local demand uses the real Seed & Idriss (1971) depth-reduction factor rd(z), which a rigid column shakes less sharply than the free surface:
CSR(z) = 0.65·(a_max/g)·(σ_v0/σ'_v0)·r_d(z), r_d(z) ≈ 1 − 0.00765·z
N_liq(z) ∝ (CRR / CSR(z))³ (deeper layers resist more cycles)
r_u,target(z,N) = (2/π)·arcsin[(N / N_liq(z))^(1/2θ)], θ ≈ 0.7
Each layer's excess pressure is integrated from that target curve's own rate, then the layers exchange pressure with their neighbours by real diffusion — the same physics behind Terzaghi consolidation — with the ground surface held at zero excess pressure (free drainage) and the column base sealed (no flow):
∂u_i/∂t = R_i(t) + c_v · (u_{i+1} − 2u_i + u_{i-1}) / Δz²
surface flux (sand boil) = c_v · u_top / (Δz/2) (Darcy seepage, u=0 boundary)
That diffusion term is the piece a single global ru cannot show: pressure built up deep in the column visibly migrates upward and vents through the free surface as a plume of upward seepage — a real sand boil — even while deeper layers are still only partially liquefied. The 3D companion sim uses one shared ru for the whole column and skips the rd(z) depth attenuation entirely; here shallow layers measurably liquefy in fewer shaking cycles than deep ones, which is the physically correct direction.
The buried object is no longer driven by a single global number either — it reads the effective stress and residual strength at its own current depth, interpolated from the layer grid, exactly like Archimedes buoyancy competing against local shear strength:
B = (ρ_soil − ρ_object)·g (buoyant drive, from the density slider)
S(z,N) = S₀·(1 − r_u(z,N)) (local residual strength)
Object accelerates only once |B| > S(z,N) at its own depth
Try shaking hard with a light object: the shallow layers liquefy first, so the object only breaks free once its own depth's local ru — not the column average — collapses far enough. Denser sand (higher Dr) resists longer everywhere; a denser-than-soil object instead sinks once its local layer liquefies.