NonlinearSolveAlg with Broyden never moves off u0:
using OrdinaryDiffEqSDIRK, NonlinearSolve
using OrdinaryDiffEqNonlinearSolve: NonlinearSolveAlg
prob = ODEProblem((du, u, p, t) -> (du .= -u), [1.0], (0.0, 1.0))
solve(prob, TRBDF2(nlsolve = NonlinearSolveAlg(Broyden())))
Unstable, u(1) = 1.0 after one accepted step, exact is 0.36787944. Klement() does the
same thing. NewtonRaphson() and TrustRegion() are fine on it.
Not a stiffness thing, it fails the same way on u' = diag(-L, -1) u at L = 1, 1e2, 1e4, 1e6.
It's also why FastShortcutNonlinearPolyalg dies (Unstable, relerr 1.41 on Robertson) where
RobustMultiNewton gets 5e-7. Both build the same 6 branch polyalg cache and both sit on
branch 1 the whole time, the only difference is FastShortcut's branch 1 is Broyden. Broyden
solves the stage system on its own fine, so it isn't the algorithm.
Is NonlinearSolveAlg supposed to work with Jacobian free inner solvers at all?
NonlinearSolveAlgwith Broyden never moves offu0:Unstable,u(1) = 1.0after one accepted step, exact is 0.36787944.Klement()does thesame thing.
NewtonRaphson()andTrustRegion()are fine on it.Not a stiffness thing, it fails the same way on
u' = diag(-L, -1) uat L = 1, 1e2, 1e4, 1e6.It's also why
FastShortcutNonlinearPolyalgdies (Unstable, relerr 1.41 on Robertson) whereRobustMultiNewtongets 5e-7. Both build the same 6 branch polyalg cache and both sit onbranch 1 the whole time, the only difference is FastShortcut's branch 1 is Broyden. Broyden
solves the stage system on its own fine, so it isn't the algorithm.
Is
NonlinearSolveAlgsupposed to work with Jacobian free inner solvers at all?