V-MMS-04 — Induced-motion ALE manufactured solution (reaction-driven mesh)

Tags: mms, ale, kinetics, order_verification, approx_jacobian

References:

  • docs/VerificationSuitePlan_2026-07-06.md Tier 3 + cross-cutting requirement 3

Problem statement

The Tier-3 completion case: V-MMS-02/03 verify GCL + moving-mesh transport under PRESCRIBED motion (w_override) and deliberately bypass the θ prefix-sum mesh velocity, the dilation correction −ξθ with θ ≠ 0, and the structured geometry Jacobian. Here the kinetics are manufactured so the rates are analytic on the manufactured fields and the motion is genuinely REACTION-DRIVEN — no w_override — closing the kinetics→θ→w→geometry chain and making both DirectSolve AND ApproxSolve valid backends. The fixed-resolution ApproxSolve solve whose exact-error QoI sits next to DirectSolve's is cross-cutting requirement 3 of the suite plan (quantify ApproxSolve against a known-exact answer).

Manufactured design (see exact/mms.jl, "Induced mesh motion")

Constant intrinsic densities, γsolid = 1 / γgas = 0 (canonical), single first-order reaction s → g with the depletion limiter numerically inactive over the manufactured range (tanh(ξs/1.0) ≡ 1.0 in Float64 for ξs ≳ 20 kg/m³; here ξs ≥ 500). T* is spatially UNIFORM (time-varying): V-MMS-01/03 already order-verify the spatial T operators — this case's target is the kinetics→geometry chain. The solid is z-VARYING, ξs* = a(t) + b(t)·sin(πz/L): representable here (and only here) because the mesh moves at the solid material velocity, so the material-frame source Ss = ∂tξ* + w·∂zξ − ω̇* + ξ·θ has the moving-point chain rule built in (`mmsspeciessourcematerialvia theMMSMotion` companion).

θ(z,t) = −rates = −k(T*(t))·ξs(z,t)/ρs (volumechange_rate) w(z,t) = ∫₀ᶻ θ* dζ = −(k(t)/ρ_s)·[a(t)·z + b(t)·(L/π)(1 − cos(πz/L))]

The case builds w* with mms_mesh_velocity (32-node Gauss–Legendre on the package kinetics — machine precision, requirement 4); the closed form above is the independent hand-check in exact/selftests.jl. θ* < 0 throughout ⇒ monotone ~8 % compression over 20 s, every node inside the maximal domain [0, L].

Moving-boundary BC positions

Induced motion means the exact top-face trajectory solves the 1D node ODE dz/dt = w(z, t), z(0) = L — not analytic here, so build precomputes it with Vern9 at 1e-14 tolerances (requirement-4 compliant) and the BC closures read the dense interpolant. The bottom node is pinned (w*(0,t) = 0).

Jacobian caveat (do not claim exactness)

With sources evaluated at live cell centers, du += S(z(u), t) has a real ∂S/∂z chain the analytic Structured(DirectSolve()) Jacobian does not carry (driver design decision 1's ∂S/∂u ≡ 0 holds only on a fixed mesh). Harmless for solution correctness and observed order (inexact Newton matrix), and the DirectSolve-vs-ApproxSolve comparison stays clean because both share the omission.

Quantities of interest (n = 128)

QoIvalueexacterrortolerancewithin tolprovenance
L∞ T error (DirectSolve), t=20.0 s1.079e-081.079e-081e-06yesz-uniform T* — kinetics/source channel, not spatial T operators
relative L∞ ξ_solid (z-varying, material frame) error, t=20.0 s4.088e-084.088e-082e-06yessolid rides the reaction-driven mesh: prefix-sum w + dilation −ξθ + material-frame source
relative L∞ ξ_gas error, t=20.0 s0.00015050.00015050.0065yesgas advected relative to the reacting, compressing mesh
relative surface-position error, t=20.0 s1.008e-060.0089631.008e-065e-05yes|ztop − z*top| / (L − z*_top); recession ≈ 1.04 mm
L∞ T error (ApproxSolve), t=20.0 s2.351e-072.351e-071e-06yesrequirement 3: ApproxSolve vs known-exact answer
relative L∞ ξ_solid error (ApproxSolve), t=20.0 s6.647e-076.647e-072e-06yesrequirement 3: ApproxSolve vs known-exact answer

V-MMS-04 T_profiles

V-MMS-04 T_profiles_error

V-MMS-04 xi_profiles

V-MMS-04 xi_profiles_error

V-MMS-04 xi_gas_profile

V-MMS-04 xi_gas_profile_error

V-MMS-04 error_profiles

V-MMS-04 thickness_history

V-MMS-04 thickness_history_error

V-MMS-04 convergence

Convergence

n_cellshwall (s)L2xisLinfxig
160.06250.070130.00076450.01281
320.031250.14090.00019080.002076
640.015620.46784.739e-056.73e-05
1280.0078121.0391.159e-050.0003011

Observed order 2.014 (L2xis), expected 2.0.

Solver configuration

settingvalue
integratorKenCarp4 (default)
abstol1.0e-11
reltol1.0e-9