Use stiff solver in DEIM test#164
Conversation
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
The full-order solve returned InitialFailure on the current MTK v11 /
MethodOfLines stack, so the snapshot had a single time column and
`POD(snapshot, 3)` errored with "Number of modes should be in {1,...,1}".
Root cause is initialization, not the solver. Passing
`missing_guess_value = Constant(0.0)` left every discretized state as a
missing guess, so MethodOfLines' initialization system was structurally
singular and underdetermined (1 equation for 11 unknowns). MTK fell back
to a least-squares initialization that diverged from the all-zero guess
(residual norm ~4.9e4, MaxIters), producing a garbage u0 (values ~1e19)
and an InitialFailure return code. Switching the solver to Rodas5P did
not help because the failure happens during initialization, before any
step is taken.
The boundary conditions fix every state to 0 at t=0 (v(x,0)=w(x,0)=0 and
i₀(0)=0), so the correct initial condition is simply all zeros. Providing
it explicitly makes the initialization well-posed and the solve succeeds,
yielding a 15-column snapshot that exercises POD/DEIM as intended.
Verified on the CI-failing stack (MethodOfLines 0.11.14, MTK 11.31.1,
ModelingToolkitBase 1.51.0, PDEBase 0.1.27): GROUP=Core Pkg.test() passes
(Core/deim.jl 4/4) and Runic --check is clean.
Co-Authored-By: Chris Rackauckas <accounts@chrisrackauckas.com>
Last CI failure diagnosed and fixed (commit 0e4059c)The Root cause: initialization, not the solverReproduced locally on the exact failing stack (MethodOfLines 0.11.14, ModelingToolkit 11.31.1, ModelingToolkitBase 1.51.0, PDEBase 0.1.27). The full-order solve returns
This is also why LTS passed but FixThe BCs fix every state to 0 at u0 = [u => 0.0 for u in ModelingToolkit.get_unknowns(simp_sys)]
ode_prob = ODEProblem(simp_sys, u0, tspan)The solve then succeeds with a 15-column snapshot that exercises POD/DEIM as intended. Validation (on the CI-failing stack)
Note: Should be ignored until reviewed by @ChrisRackauckas. |
This PR should be ignored until reviewed by @ChrisRackauckas.
Summary
Tsit5()toRodas5P()for both the full and reduced solves.MaxIterssolution that makes POD fail before DEIM is exercised.Root Cause
test/deim.jldiscretizes a stiff PDE-derived system but used the explicitTsit5()solver. With current compatible dependencies,Tsit5()exhaustsmaxiters, MethodOfLines returns a one-timepoint solution, andPOD(snapshot, 3)errors because the snapshot has only one time column.Dependency boundary evidence from local probes:
Validation
timeout 3600 env GROUP=Core /home/crackauc/.juliaup/bin/julia +release --project=. --startup-file=no -e 'using Pkg; Pkg.test(; coverage=false)'passes.Runic.main(["--check", "."])with Runic v1.7.0 passes.Co-Authored-By: Chris Rackauckas accounts@chrisrackauckas.com