diff --git a/src/poly_algs.jl b/src/poly_algs.jl index 143c7328c..0c8e3148f 100644 --- a/src/poly_algs.jl +++ b/src/poly_algs.jl @@ -34,6 +34,7 @@ function FastShortcutNonlinearPolyalg( ) where {T} start_index = 1 common_kwargs = (; concrete_jac, linsolve, autodiff, vjp_autodiff, jvp_autodiff) + common_kwargs_nocj = (; linsolve, autodiff, vjp_autodiff, jvp_autodiff) if must_use_jacobian isa Val{true} if T <: Complex algs = (NewtonRaphson(; common_kwargs...),) @@ -41,7 +42,8 @@ function FastShortcutNonlinearPolyalg( algs = ( NewtonRaphson(; common_kwargs...), TrustRegion(; common_kwargs...), - TrustRegion(; common_kwargs..., radius_update_scheme = RUS.Bastin) + TrustRegion(; common_kwargs..., radius_update_scheme = RUS.Bastin), + LevenbergMarquardt(; common_kwargs_nocj...) ) end else @@ -61,7 +63,8 @@ function FastShortcutNonlinearPolyalg( SimpleKlement(), NewtonRaphson(; common_kwargs...), TrustRegion(; common_kwargs...), - TrustRegion(; common_kwargs..., radius_update_scheme = RUS.Bastin) + TrustRegion(; common_kwargs..., radius_update_scheme = RUS.Bastin), + LevenbergMarquardt(; common_kwargs_nocj...) ) end else @@ -79,7 +82,8 @@ function FastShortcutNonlinearPolyalg( Klement(; linsolve, autodiff), NewtonRaphson(; common_kwargs...), TrustRegion(; common_kwargs...), - TrustRegion(; common_kwargs..., radius_update_scheme = RUS.Bastin) + TrustRegion(; common_kwargs..., radius_update_scheme = RUS.Bastin), + LevenbergMarquardt(; common_kwargs_nocj...) ) end end diff --git a/test/core_tests.jl b/test/core_tests.jl index 36e5dcdb5..a62fe87a6 100644 --- a/test/core_tests.jl +++ b/test/core_tests.jl @@ -435,4 +435,11 @@ end sol = solve(prob) @test SciMLBase.successful_retcode(sol) @test sol.retcode == ReturnCode.StalledSuccess +end + +@testitem "Default Algorithm Singular Handling" tags=[:core] begin + f(u, p) = [u[1]^2 - 2u[1] + 1, sum(u)] + prob = NonlinearProblem(f, [1.0, 1.0]) + sol = solve(prob) + @test SciMLBase.successful_retcode(sol) end \ No newline at end of file