Skip to content

Commit 5b9ecd7

Browse files
Merge pull request SciML#2269 from oscardssmith/os/no-prev_theta-for-non-adaptive
Don't use prev_theta for non-adaptive solves
2 parents 6ece080 + 927685a commit 5b9ecd7

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

src/nlsolve/nlsolve.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ function nlsolve!(nlsolver::NL, integrator::DiffEqBase.DEIntegrator,
8888
break
8989
end
9090
else
91-
if has_prev_θ && !integrator.accept_step
91+
if !integrator.accept_step
9292
prev_θ = one(prev_θ)
9393
end
9494
θ = prev_θ
@@ -102,8 +102,11 @@ function nlsolve!(nlsolver::NL, integrator::DiffEqBase.DEIntegrator,
102102

103103
# check for convergence
104104
η = DiffEqBase.value/ (1 - θ))
105+
# don't trust θ for non-adaptive on first iter because the solver doesn't provide feedback
106+
# for us to know whether our previous nlsolve converged sufficiently well
107+
check_η_convergance = (iter > 1 || (isnewton(nlsolver) && isadaptive(integrator.alg)))
105108
if (iter == 1 && ndz < 1e-5) ||
106-
((iter > 1 || isnewton(nlsolver)) && η >= zero(η) && η * ndz < κ)
109+
(check_η_convergance && η >= zero(η) && η * ndz < κ)
107110
nlsolver.status = Convergence
108111
nlsolver.nfails = 0
109112
break

0 commit comments

Comments
 (0)